{toc}
h2. Named fakezone generator
Генератор зон для *named/bind9* для списка доменов, которые необходимо перекидывать на заглушку.
{info}
Это, возможно временный и неидеальный, но несколько более быстрый способ решения проблемы с фильтрацией HTTPS-ресурсов, меняющих IP адреса, чем реализация прокси/плагина для прокси, позволяющего фильтровать большие объёмы трафика с подменой сертификата или обхода DNSSEC в модуле xt_dnsmatch.
{info}
{info}
Вся эта схема рассчитана на использование на уже имеющемся и реально используемом абонентами/ревизором DNS-сервере провайдера. Устанавливать DNS-сервер bind/named на Carbon Reductor пока что {color:#ff0000}не рекомендуется{color} (возможно будет доступно из коробки позже).
{info}
h3. Установка
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}
h3. Настройка
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}
h3. Принцип действия
Генерирует следующие файлы:
Список блокируемых зон
{panel}
/etc/named.reductor.zones
{panel}
Файлы зон
{panel}
/etc/named/reductor_<домен который необходимо редиректить>.conf
{panel}
{info}
Больше подробностей можно узнать непосредственно посмотрев файлы generate_bind_configs.sh и reductor_named_domain.tmplt.
{info}
h2. Unbound fakezone generator
Генератор зон Unbound для списка доменов, которые необходимо переадресовывать на страницу-заглушку.
h4. Установка
{code}
yum -y install unbound
mkdir /var/run/unbound
unbound-control-setup
service unbound restart
{code}
Обратите внимание, что в конфиге в секции server: должен подключаться файл `/etc/unbound/local.d/reductor.conf`. Это может выглядеть так `include: /etc/unbound/local.d/reductor.conf` или (обычно из коробки) так `include: /etc/unbound/local.d/*.conf`.
В случае CentOS 6 установка будет выглядеть следующим образом:
{code}
yum -y install git
git clone https://github.com/carbonsoft/named_fakezone_generator.git /opt/named_fakezone_generator/
cp /opt/named_fakezone_generator/unbound/main.sh.example /opt/named_fakezone_generator/unbound/main.sh
{code}
h4. Использование
Укажите в `/opt/named_fakezone_generator/unbound/main.sh` IP адрес Carbon Reductor.
h4. Получение списка доменов
Если SSH ключи отсутствуют, генерируем их:
{code}
ssh-keygen
{code}
Затем добавляем их на Carbon Reductor:
{code}
ssh-copy-id root@<ip адрес carbon reductor>
{code}
Проверяем что scp не запрашивает пароль и выкачивает файл:
{code}
/opt/named_fakezone_generator/unbound/main.sh
{code}
Добавляем вызов в Cron.
{code}
echo '*/20 * * * * root /opt/named_fakezone_generator/unbound/main.sh' > /etc/cron.d/unbound_fakezone_generator
{code}
h3. Принцип действия
* Выкачиваем новый список доменов, которые нужно блокировать
* Пытаемся добавить разницу/удалить разблокированные домены с помощью diff_load.sh
** Разница автоматически вычисляется из скачанного файла и используемого в текущий момент /etc/unbound/local.d/reductor.conf
** Добавление и удаление производится через unbound-control local_zone/local_data/local_zone_remove
* Если не получилось (нажали ctrl+c или что-то ещё произошло) - вызывается unbound-control reload
* Если не вышло и это (например сервер был выключен) - service unbound restart
h2. Named fakezone generator
Генератор зон для *named/bind9* для списка доменов, которые необходимо перекидывать на заглушку.
{info}
Это, возможно временный и неидеальный, но несколько более быстрый способ решения проблемы с фильтрацией HTTPS-ресурсов, меняющих IP адреса, чем реализация прокси/плагина для прокси, позволяющего фильтровать большие объёмы трафика с подменой сертификата или обхода DNSSEC в модуле xt_dnsmatch.
{info}
{info}
Вся эта схема рассчитана на использование на уже имеющемся и реально используемом абонентами/ревизором DNS-сервере провайдера. Устанавливать DNS-сервер bind/named на Carbon Reductor пока что {color:#ff0000}не рекомендуется{color} (возможно будет доступно из коробки позже).
{info}
h3. Установка
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}
h3. Настройка
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}
h3. Принцип действия
Генерирует следующие файлы:
Список блокируемых зон
{panel}
/etc/named.reductor.zones
{panel}
Файлы зон
{panel}
/etc/named/reductor_<домен который необходимо редиректить>.conf
{panel}
{info}
Больше подробностей можно узнать непосредственно посмотрев файлы generate_bind_configs.sh и reductor_named_domain.tmplt.
{info}
h2. Unbound fakezone generator
Генератор зон Unbound для списка доменов, которые необходимо переадресовывать на страницу-заглушку.
h4. Установка
{code}
yum -y install unbound
mkdir /var/run/unbound
unbound-control-setup
service unbound restart
{code}
Обратите внимание, что в конфиге в секции server: должен подключаться файл `/etc/unbound/local.d/reductor.conf`. Это может выглядеть так `include: /etc/unbound/local.d/reductor.conf` или (обычно из коробки) так `include: /etc/unbound/local.d/*.conf`.
В случае CentOS 6 установка будет выглядеть следующим образом:
{code}
yum -y install git
git clone https://github.com/carbonsoft/named_fakezone_generator.git /opt/named_fakezone_generator/
cp /opt/named_fakezone_generator/unbound/main.sh.example /opt/named_fakezone_generator/unbound/main.sh
{code}
h4. Использование
Укажите в `/opt/named_fakezone_generator/unbound/main.sh` IP адрес Carbon Reductor.
h4. Получение списка доменов
Если SSH ключи отсутствуют, генерируем их:
{code}
ssh-keygen
{code}
Затем добавляем их на Carbon Reductor:
{code}
ssh-copy-id root@<ip адрес carbon reductor>
{code}
Проверяем что scp не запрашивает пароль и выкачивает файл:
{code}
/opt/named_fakezone_generator/unbound/main.sh
{code}
Добавляем вызов в Cron.
{code}
echo '*/20 * * * * root /opt/named_fakezone_generator/unbound/main.sh' > /etc/cron.d/unbound_fakezone_generator
{code}
h3. Принцип действия
* Выкачиваем новый список доменов, которые нужно блокировать
* Пытаемся добавить разницу/удалить разблокированные домены с помощью diff_load.sh
** Разница автоматически вычисляется из скачанного файла и используемого в текущий момент /etc/unbound/local.d/reductor.conf
** Добавление и удаление производится через unbound-control local_zone/local_data/local_zone_remove
* Если не получилось (нажали ctrl+c или что-то ещё произошло) - вызывается unbound-control reload
* Если не вышло и это (например сервер был выключен) - service unbound restart