Настройка компонентов ISP Go
Все компоненты ISP Go читают один файл настроек: /etc/isp-go/config.ini
. Он состоит из нескольких секций.
Секция [dnscache]
Секция используется isp-go-dnsproxy
и содержит единственный ключ forward. В качестве значения следует указать IP-адрес и порт кеширующего DNS-сервера, на который следует перенаправлять все незаблокированные DNS-запросы.
Пример:
[dnscache] forward = 127.0.0.1:53
Секция [proxy]
Секция используется isp-go-dnsproxy и содержит ключи listen, blockpage-ip, log и pid.
Ключ listen содержит IP-адрес и порт, на котором isp-go-dnsproxy
должен принимать запросы от клиентов. Он может быть продублирован чтобы принимать запросы сразу на нескольких адресах, например, IPv4 и IPv6 одновременно. Число ключей, равно как и прослушиваемых адресов, неограниченно.
Ключ blockpage-ip содержит IP-адрес, который следует отдавать клиентам в ответах на заблокированные запросы. Иными словами, это IP-адрес, на котором nginx принимает запросы к странице блокировки. В типичном случае, когда фильтрующий DNS-сервер и nginx запущены на одном сервере, следует и там и там прописать IP-адрес одного из сетевых интерфейсов сервера. Ключ можно продублировать, чтобы указать альтернативный адрес страниц блокировок, например, для IPv6. Допускается использование не менее одного ключа только для перенаправлений A или только AAAA пакетов, но не более двух для поддержки обеих версий IP.
Ключи log и pid содержат абсолютные пути до log-файла и pid-файла, соответственно. Чтобы не потерять совместимость с init-скриптами, входящими в состав пакета, путь до pid-файла изменять запрещено.
Пример:
[proxy] listen = 192.168.5.1:53 ; IPv4 listen = [4321:a:bcde:1::2020]:53 ; IPv6 blockpage-ip = 192.168.5.1 ; IPv4 для перенаправления A blockpage-ip = abcd:1234:zyxw::9876 ; IPv6 для перенаправления AAAA log = /var/log/isp-go/isp-go-dnsproxy.log pid = /var/log/isp-go/isp-go-dnsproxy.pid
Секция [datafiles]
Секция содержит ключи path, file и cats, при этом ключ file может встречаться несколько раз.
Ключ path содержит абсолютный путь к каталогу, в котором находится база доменов SkyDNS. Файлы, составляющие базу доменов, перечислены по одному в ключах file. Порядок ключей важен - каждый файл рассматривается как набор поправок к файлам, указанным после него. Для сохранения работоспособности базы, в ключах path и file запрещено указывать значения, отличные от таковых по умолчанию.
Ключ cats содержит абсолютный путь до директории со списками категорий. Редактирование файла catgroups.json
, входящего в состав пакета, не допускается, т.к. изменения пропадут при обновлении пакета ISP Go. В случае необходимости сокрытия части категорий или перевода названий категорий на другой язык, необходимо создать копию файла catgroups.json
и внести изменения в нее. При этом номера категорий (50: …) изменять нельзя, т.к. они должны соответствовать содержимому базы доменов SkyDNS.
Пример:
[datafiles] path = /var/lib/isp-go/filter/ file = host2cat-fast.dat file = host2cat.dat cats = /usr/share/isp-go/config/
По умолчанию категории выводятся на русском языке. Для получения категорий на английском языке необходимо указать файл catgroups_en.json
(входит в состав пакета).
Секция [blockpage]
Секция используется веб-приложением страничка блокировки и содержит ключи listen templates, log и pid.
Ключ listen содержит IP-адрес (обычно 127.0.0.1) и порт, на котором демон isp-go-blockpage
принимает HTTP-запросы, предназначенные для страницы блокировки. Важно: демон isp-go-blockpage
не принимает запросы от пользователей напрямую, этим занимается Nginx.
Ключ templates содержит абсолютный путь до каталога с шаблонами страницы блокировки. Изменять непосредственно шаблоны, поставляемые в составе пакета, нельзя (так как изменения будут потеряны при обновлении ISP Go), но можно скопировать весь каталог /usr/share/isp-go/templates
под другим именем и изменять файлы в копии.
Ключи log и pid содержат абсолютные пути до log-файла и pid-файла, соответственно. Чтобы не потерять совместимость с init-скриптами, входящими в состав пакета, путь до pid-файла изменять запрещено.
Пример:
[blockpage] listen = 127.0.0.1:8081 templates = /usr/share/isp-go/templates/ log = /var/log/isp-go/isp-go-blockpage.log pid = /var/run/isp-go/isp-go-blockpage.pid
Секция [api]
Секция используется веб-приложением ISP Go API и содержит ключи listen, log и pid.
Ключ listen содержит IP-адрес (обычно 127.0.0.1) и порт, на котором демон isp-go-api
принимает HTTP-запросы, предназначенные для страницы блокировки. Адрес или порт должен отличаться от значения, используемого в секции [blockpage]
.
Важно: прослушивание на доступном извне IP-адресе будет проблемой в безопасности. Демон isp-go-api
не содержит никаких механизмов авторизации, поэтому любой, кто может отправить запрос, может внести любые изменения в пользовательские настройки (включая чужие). Для предотвращения такой ситуации рекомендуется использовать здесь IP-адрес 127.0.0.1, а предоставление доступа извне (с авторизацией) реализовать на уровне Nginx.
Ключи log и pid содержат абсолютные пути до log-файла и pid-файла, соответственно. Чтобы не потерять совместимость с init-скриптами, входящими в состав пакета, путь до pid-файла изменять запрещено.
Пример:
[api] listen = 127.0.0.1:8080 log = /var/log/isp-go/isp-go-api.log pid = /var/run/isp-go/isp-go-api.pid
Секция [common]
Секция используется всеми тремя демонами и содержит ключи redis-ip и redis-port.
Ключи redis-ip и redis-port задают, к какому Redis-серверу должны подключаться демоны, входящие в состав ISP Go. Исходя из соображений производительности, рекомендуется запускать redis-сервер на той же машине, где установлен ISP Go.
Пример:
[common] redis-ip = 127.0.0.1 redis-port = 6379
Применение настроек
После изменения конфигурационного файла на работающем сервере необходимо перезапустить службы, входящие в состав ISP Go:
service isp-go-dnsproxy restart service isp-go-blockpage restart service isp-go-api restart