Интеграция с DNS-сервером провайдера

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (8)

просмотр истории страницы
h2. Named fakezone generator
На текущий момент поддерживаются два DNS-сервера:
* unbound
* bind (named)

Генератор зон для *named/bind9* для списка доменов, которые необходимо перекидывать на заглушку.
С учётом тенденций роста числа записей в реестре мы рекомендуем использовать для целей фильтрации DNS-запросов Unbound, так как он потребляет значительно меньше оперативной памяти.

{info}
Это, возможно временный и неидеальный, но несколько более быстрый способ решения проблемы с фильтрацией HTTPS-ресурсов, меняющих IP адреса, чем реализация прокси/плагина для прокси, позволяющего фильтровать большие объёмы трафика с подменой сертификата или обхода DNSSEC в модуле xt_dnsmatch.
{info}
В случае с bind/named были зафиксированы сбои из-за недостатка оперативной памяти, при числе доменов больше 60 000, а также значительное замедление времени перечитывания конфигурации.

{info}
Вся эта схема рассчитана на использование на уже имеющемся и реально используемом абонентами/ревизором DNS-сервере провайдера. Устанавливать DNS-сервер bind/named на Carbon Reductor пока что {color:#ff0000}не рекомендуется{color} (возможно будет доступно из коробки позже).
{info}

h4. Установка

Нам понадобятся:

* *git* чтобы склонировать этот репозиторий
* *m4* чтобы генерировать записи из шаблона
* сам *bind9/named*, предполагается, что он уже установлен

В случае CentOS 6 установка будет выглядеть следующим образом:

{code}
yum -y install git m4
git clone https://github.com/carbonsoft/named_fakezone_generator.git /opt/named_fakezone_generator/
{code}

После этого, допишите в конец файла */etc/named.conf*:

{panel}
include "/etc/named.reductor.zones";
{panel}

h2. Настройка

h4. Получение списка доменов

Если SSH ключи отсутствуют, генерируем их:

{code}
ssh-keygen
{code}

Затем добавляем их на Carbon Reductor:

{code}
ssh-copy-id root@<ip адрес carbon reductor>
{code}

{info}
Проверяем что scp не запрашивает пароль и выкачивает файл
{info}

{code}
scp root@<ip адрес carbon reductor>:/app/reductor/var/lib/reductor/lists/tmp/domains.all /tmp/reductor.https.resolv
{code}

{info}
Не забудьте добавить запись, которая периодически забирает файл https.resolv с Carbon Reductor.
{info}

h4. Использование

Запустите:

{code}
cd /opt/named_fakezone_generator/generate_bind_configs.sh /tmp/reductor.https.resolv <ip адрес заглушки>
{code}

h4. Автоматизация

Если всё устраивает - добавьте вызов в крон, например так:

{panel}
echo '*/20 * * * * root /opt/named_fakezone_generator/generate_bind_configs.sh /tmp/reductor.https.resolv <ip адрес заглушки>' > /etc/cron.d/named_fakezone_generator
{panel}

{info}
При сильном желании, если хочется держать и менять IP адрес заглушки в одном месте, можно забирать аналогично с Carbon Reductor конфигурационный файл внутри скрипта, который можно вызывать по крону:
{info}

{code}
scp root@<ip адрес carbon reductor>:/app/reductor/cfg/config /tmp/reductor.config
scp root@<ip адрес carbon reductor>:/app/reductor/var/lib/reductor/lists/tmp/domains.all /tmp/reductor.https.resolv
source /tmp/reductor.config
/opt/named_fakezone_generator/generate_bind_configs.sh /tmp/reductor.https.resolv "${filter['dns_ip']}"
{code}

h2. Принцип действия

Генерирует следующие файлы:

Список блокируемых зон

{panel}
/etc/named.reductor.zones
{panel}

Файлы зон

{panel}
/etc/named/reductor_<домен который необходимо редиректить>.conf
{panel}

{info}
Больше подробностей можно узнать непосредственно посмотрев файлы generate_bind_configs.sh и reductor_named_domain.tmplt.
{info}
Инструкции по настройке DNS-серверов доступны во вложенных в этот раздел статьях.