... {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. fakezone generator h3. Установка В случае 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} Копируем скрипт синхронизации списков, его необходимо будет исправить позднее: {code} cp /opt/named_fakezone_generator/unbound/main.sh.example /opt/named_fakezone_generator/unbound/main.sh {code} h3. Настройка Укажите IP адрес Carbon Reductor в файле: {code} /opt/named_fakezone_generator/unbound/main.sh {code} В строчке: {code} REDUCTOR_IP=10.0.0.1 {code} Если в сети используется несколько Carbon Reductor - выберите один любой. Если вы ещё не обновились на Carbon Reductor 8 и используете Carbon Reductor 7 - замените вызов функции carbon_reductor_8 на вызов carbon_reductor_7 в main.sh. h3. Обращение к Carbon Reductor за списком доменов Если SSH ключи отсутствуют, генерируем их: {code} ssh-keygen {code} Затем добавляем их на Carbon Reductor: {code} ssh-copy-id root@<ip адрес carbon reductor>
|
{code}
|
Проверяем что scp не запрашивает пароль и выкачивает файл:
|
(!) Обязательно проверьте, что main.sh отрабатывает при ручном запуске перед автоматическим запуском.
|
|
Проверяем что: * scp не запрашивает пароль * новый файл со списком доменов скачивается * и всё это применяется за приемлемое время (менее двух минут)
|
{code}
|
/opt/named_fakezone_generator/unbound/main.sh
|
timeout -s 15 3500s /opt/named_fakezone_generator/unbound/main.sh
|
{code} h3. Настройка регулярного обновления
|
(!) Обязательно проверьте, что main.sh отрабатывает при ручном запуске перед автоматическим запуском.
|
|
|
Добавляем задачу для 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. Принцип действия * Выкачиваем новый список доменов, которые нужно блокировать * Пытаемся добавить разницу/удалить разблокированные домены с помощью 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
|