Просмотр Исходного

{toc}

Генератор зон Unbound для списка доменов, которые необходимо переадресовывать на страницу-заглушку.

h2. Unbound

h3. Установка

{code}
yum -y install unbound
mkdir /var/run/unbound
unbound-control-setup
service unbound restart
{code}

h3. Настройка

(!) В основном конфиге unbound в секции server должен подключаться сгенерированный fakezone файл:

{code}
/etc/unbound/local.d/reductor.conf
{code}
Это может выглядеть так:

{code}
include: /etc/unbound/local.d/reductor.conf
{code}

или (обычно из коробки) так:

{code}
include: /etc/unbound/local.d/*.conf
{code}

h2. Система генерации зон для DNS-сервера

h3. 1. Установка

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

Нам потребуется git для клонирования репозитория

{code}
yum -y install git
{code}

Клонируем репозиторий на DNS-сервер в папку /opt/named_fakezone_generator/

{code}
git clone https://github.com/carbonsoft/named_fakezone_generator.git /opt/named_fakezone_generator/
{code}

h3. 2. Настройка

Откройте (если его ещё нет, создайте) конфигурационный файл:

{code}
/etc/sysconfig/named_fakezone_generator
{code}

В нём укажите следующие значения:

{code}
REDUCTOR_IP='10.0.0.1'
REDUCTOR_VERSION='7'
{code}

Если в сети используется несколько Carbon Reductor - выберите один любой.


h3. 3. Обращение к Carbon Reductor за списком доменов

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

{code}
ssh-keygen
{code}

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

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

(!) &nbsp;&nbsp;Обязательно проверьте, что main.sh отрабатывает при ручном запуске перед автоматическим запуском.


Проверяем что:

* scp не запрашивает пароль
* новый файл со списком доменов скачивается
* и всё это применяется за приемлемое время (менее двух минут)

{code}
timeout -s 15 3500s /opt/named_fakezone_generator/unbound/main.sh
{code}

h3. 4. Настройка регулярного обновления


Добавляем задачу для cron: раз в 20 минут обновлять список доменов.

Ограничение по времени выполнения (timeout) сделано с большим запасом в качестве защиты от зависания скрипта.

{code}
echo '*/20 * * * * root timeout -s 15 3500s /opt/named_fakezone_generator/unbound/main.sh' > /etc/cron.d/unbound_fakezone_generator
{code}


h3. Примечания

Часть описанных действий может выполняться не от пользователя root, в документации используется именно он для простоты примера.

Если самостоятельная настройка схемы для работы от имени непривилегированного пользователя вызывает затруднения - используйте root.

*Принцип действия*
* Выкачиваем новый список доменов, которые нужно блокировать
* Пытаемся добавить разницу/удалить разблокированные домены с помощью 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