Proxy сервер POLIPO

Если вам нужен легковесный кеширующий прокси-сервер, Tiny Core Linux умеет и это. Обычно в домашних сетях прокси-сервер излишен, если только вы не собираетесь контролировать и ограничивать раздачу интернета в своей локальной сети. К тому же настроив правила фильтрации для прокси-сервера и пустив весь траффик через него, вы можете оградить себя и пользователей сети от заведомо нежелательных и потенциально опасных сайтов, организовать "родительский контроль". Мне же прокси-сервер необходим был для использования своего домашнего IP, даже когда я не был дома, и заходил со сторонних провайдеров.

Для развертывания прокси-сервера можно использовать мод от apache "mod_proxy", если он у вас установлен. Но что, если вам не нужен вебсервер, а ресурсы машины ограничены? К тому же мне потребовалось запускать и останавливать прокси-сервер отдельным процессом, независимо от вебсервера apache. Мой выбор пал на легковесный polipo. У разработчиков этого прокси-сервера есть свой официальный сайт где опубликована подробнейшая онлайн-инструкция (и PDF-версия) по работе и настройке polipo, что немаловажно для меня. И это даже не смотря на то что сам по себе polipo оказался очень прост в настройке.

Устанавливаем:

tce-load -wi polipo.tcz

За основу конфигурационного файла возьмем usr/local/etc/polipo/polipo_rc.sample. Переименуем его в /opt/conf/polipo.conf, а наш прокси-сервер будем запускать командой:

polipo -c /opt/conf/polipo.conf

Далее, для удобства и унифицирования синтаксиса управляющих команд, я создал скрипт управления сервисом polipo. За основу был взят шелл-скрипт /usr/local/etc/init.d/samba. Который после изменений я сохранил как /usr/local/etc/init.d/polipo. Содержимое файла вышло таким:

/usr/local/etc/init.d/polipo

#!/bin/sh

start() {
  if [ ! -e /var/run/polipo.pid ]; then
   polipo -c /home/conf/polipo.conf
  fi
}

stop() {
  killall polipo 2>/dev/null
  if [ -e /var/run/polipo.pid ]; then
   rm /var/run/polipo.pid
  fi
}

restart(){
  if pidof polipo >/dev/null; then
   stop && start
  else
   start
  fi
}

status(){
  if [ -f /var/run/polipo.pid ]; then
  echo "polipo daemon is running"
   exit 0
  else
   echo "polipo daemon is not running"
   exit 1
  fi
}

case $1 in
  start) start;;
  stop) stop;;
  restart) restart;;
  status) status;;
  *) echo "Usage $0 {start|stop|restart|status}"; exit 1
esac

Теперь мы можем запускать, перезапускать и останавливать наш прокси-сервер привычными командами start, restart и stop.

Перейдем к конфигурированию polipo. Укажем явно, что прокси-сервер запускается в режиме демона, и укажем свой собственный порт подключения вместо значения по умолчанию:

/opt/conf/polipo.conf

...
daemonise = true
pidFile = /var/run/polipo.pid
proxyPort = 8080
...

Так как лично у меня прокси-сервер "смотрит в интернет" необходимо защитить паролем polipo от непрошеных гостей:

/opt/conf/polipo.conf

...
authCredentials = [логин]:[пароль]
...

Пару слов о кеше, если собираетесь использовать polipo в роли кеширующего прокси-вервера. Кеш занимает достаточно много места, и чтобы он не съел всю доступную оперативную память вашего мультисервера, необходимо кеш перенести на жесткий диск. Перед этим создайте соответствующую папку и укажите путь к ней в конфигурационном файле. Для этого раскоментируйте строку, подставив туда своё значение имени дирректории с кешем:

/opt/conf/polipo.conf

...
diskCacheRoot = "/mnt/HDD/[папка для кеш-файлов]"
...

Фильтрация адресов. По умолчанию в polipo контроль доступа к сайтам отключен. Для ведения списка запрещенных ресурсов, необходимо создать файл /opt/conf/forbidden.list, а в конфигурационный файл добавить строки:

/opt/conf/polipo.conf

...
forbiddenFile = "/opt/conf/forbidden.list"
forbiddenUrl = "http://google.com"
...

Вторая строчка будет перенаправлять пользователя на указанный сайт в случае посещения запрещенного ресурса. Она не является обязательной, и если убрать параметр "forbiddenUrl", прокси-сервер будет выдавать стандартное сообщение о запрете посещения сайта.

В /opt/conf/forbidden.list перечисляются все адреса, доступ к которым мы хотим запретить. Каждый адрес вносится с новой строки. Помимо этого polipo поддерживает распознавание запрещенных адресов записаных в виде базовых регулярных выражений (POSIX Basic Regular Expressions). Это дает неограниченые возможности для запрета целой группы адресов, попадающие под одно единственное правило.

  Я заметил ещё одну особенность (или баг) работы polipo со списком запрещенных сайтов. Если последнюю строку в forbidden.list не оставить пустой, прокси-сервер начинает игнорировать записи в этом файле и блокировка не работает.

  Блокировка также не работает при посещении защищенных сайтов. Тут дело в работе самого протокола HTTPS. Всё содержимое, включая и заголовки, передается в зашифрованном виде. Поэтому любые правила в forbidden.list записаные обычным текстовым форматом неприменимы к таким сайтам. Этот нюанс касается работы любого прокси-сервера, не только polipo. Блокировку ресурса в этом случае можно сделать только посредством фильтрации IP.

Теперь осталось внести команду запуска polipo в наш шелл-скрипт:

/opt/bootlocal.sh

...
sudo /usr/local/etc/init.d/polipo start
...

И сделать бэкап:

sudo filetool.sh -b

ранее: "База данных MariaDB"далее: "Точка доступа Wi-Fi"

Обсуждение темы ещё не открыто. Вы можете быть первым.


Оставить комментарий

Имя:

Сообщение: