Skip to main content

Настройка компонентов 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