Инструменты пользователя

Инструменты сайта


setup_proxy

Настройка proxy сервера

Настройка proxy сервера необходима только если используется вариант «proxy у оператора».

Начальную настройку и тестирование работы proxy сервера, как правило, осуществляют наши специалисты.

Примеры конфигурации, приведенные ниже, являются лишь примерами. Конфигурация proxy сервера может отличаться в ту или иную сторону в зависимости от специфики клиента.

Обновления и рекомендации для конфигурации proxy сервера публикуются в нашей рассылке, которую получают технические специалисты (контакты) указанные в Личном Кабинете.

Подготовка

Необходим сервер с установленной OS Linux. На него нужно дополнительно установить iptables, nginx (необходимы модули: rewrite, proxy) и sniproxy (необходим патч от зацикливания).

На сервере необходимо включить маршрутизацию (в файле /etc/sysctl.conf установить net.ipv4.ip_forward = 1)

Внимание: серверу proxy необходимо обеспечить свободный доступ в интернет по протоколам HTTP/HTTPS. Т.е. HTTP/HTTPS трафик от proxy сервера НЕ должен попадать в перенаправление через маршрутизацию. Сделать это можно через Policy Routing

Настройка ipset

Добавить создание необходимых ipset при загрузке системы

ipset create BLOCK-IP hash:net family inet
ipset create BLOCK-IP-LOADING hash:net family inet
ipset create CUSTOM-IP-PORT hash:ip,port family inet
ipset create CUSTOM-IP-PORT-LOADING hash:ip,port family inet

Скачать скрипты для обновления cf_ipset_update.tgz, вписать в них Api Key (можно посмотреть в ЛК→Администрирование→Настройки). Добавить вызов скриптов по cron (например, раз в час).

Настройка iptables

# Перенаправлять HTTP трафик для сетей из списка полной блокировки на отдельный виртуальный сервер
iptables -t nat -A PREROUTING -i eth0 -m set --match-set BLOCK-IP dst -p tcp --dport 80 -j REDIRECT --to-port 9000

# Перенаправлять HTTP трафик для пар IP:PORT подлежащих блокировке на отдельный виртуальный сервер 
iptables -t nat -A PREROUTING -i eth0 -p tcp -m set --match-set CUSTOM-IP-PORT dst,dst -j REDIRECT --to-port 9000

# Перенаправлять весь HTTP/HTTPS трафик на локальный порт
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 443


# Все остальное пропускать...
iptables -t nat -A POSTROUTING -o eth0 -p all -j SNAT --to-source <<ip адрес proxy сервера>>

# Блокировать весь трафик, на сети из списка полной блокировки
iptables -t filter -A FORWARD -m set --match-set BLOCK-IP dst -j REJECT

# Пропускать весь транзитный трафик
iptables -P FORWARD ACCEPT

Настройка nginx

Мы рекомендуем использовать nginx с поддержкой lua и headers_more. Ссылки на готовые пакеты находятся в конце текущего раздела.

DNS резолвер должен использовать DNS сервера без RPZ.

В каталоге /var/www/cyberfilter/pages/ необходимо разместить страницы с сообщениями для пользователей:

  • block.html - водится при попытке доступа на запрещенный ресурс
  • config.html - выводится если обнаружены ошибки конфигурации
  • denied.html - выводится если доступ запрещен
  • error.html - выводится при возникновении ошибок
  • notfound.html - выводится, если запрашиваемый ресурс не найден в DNS

Архив с настройками и со страницами сообщений: proxy_config.tgz
Готовый RPM nginx 1.10.3 для CentOS7 с поддержкой lua и headers_more: nginx-1.10.3-1.el7.centos.ngx.x86_64.rpm

Настройка sniproxy

Внимание: для корректной работы sniproxy (фильтрация HTTPS) необходимо, чтобы использовался механизм DNS RPZ. Системный DNS резолвер ДОЛЖЕН использовать DNS сервер с включенным механизмом DNS RPZ. Так же необходимо, чтобы на sniproxy был наложен патч. Рекомендуемая версия sniproxy - 0.3.6

user nobody

pidfile /run/sniproxy.pid

error_log {
    filename /var/log/sniproxy/error.log
    priority debug
}

listen SERVER_IP:443 {
    proto tls

    access_log {
        filename /var/log/sniproxy/access.log
        priority debug
    }
}

table {
    .*  *:443
}

SERVER_IP - IP адрес proxy сервера, на который производится перенаправление через DNS RPZ.

Если нужно полностью пропускать youtube.com и youtu.be, то секция table должна быть следующей:

table {
    # Исключение для youtube.com и youtu.be
    ^youtube\.com$        youtube.com.proxy.cyberfilter.ru:443
    ^www\.youtube\.com$   www.youtube.com.proxy.cyberfilter.ru:443
    ^youtu\.be$           youtu.be.proxy.cyberfilter.ru:443

    .*  *:443
}

Репозитарий (GIT) sniproxy: https://github.com/dlundquist/sniproxy
Патч: sniproxy-0.3.6-cyberfilter.patch.gz
Конфиг: sniproxy.conf.gz

Готовый ebuild для Gentoo Linux: sniproxy-0.3.6-r1.ebuild.tgz (USE=«cyberfilter»)
Готовый RPM для CentOS7: sniproxy-0.3.6-1.el7.centos.x86_64.rpm и необходимый для него udns: udns-0.4-3.el7.x86_64.rpm

setup_proxy.txt · Последние изменения: 13.07.2017 17:26 — phantom