Модуль интеграции с DNS-серверами

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

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

просмотр истории страницы
Сама по себе опция отвечает только за то, что модуль будет включен. Нужно обязательно выбрать одну или несколько задач для него.

{info}
Внимание\! В случае если используется 2 сервера с Carbon Reductor интеграция с DNS-сервером должна быть настроена только на 1 из них.
{info}

h2. Что нужно сделать на DNS-сервере

h3. Установить rsync

h4. Установка и запуск

По умолчанию, утилита может быть не установлена в системе. Установка и последующий запуск выполняются следующими командами.

h3. CentOS 8

|yum install rsync rsync-daemon|
|systemctl enable rsyncd --now|

h3. CentOS 7

|yum install rsync|
|systemctl enable rsyncd --now|

h3. Ubuntu/Debian

|apt-get install rsync|

h5. Модуль только добавляет подключаемые файлы в нужные места. В некоторых дистрибутивах в основном конфигурационном файле не настроено их подключение. Мы не хотим повредить возможные ручные настройки, поэтому это нужно сделать вручную.

*Unbound 1.4.20 (CentOS 6)*

Всё обычно работает "из коробки". Более подробно можно прочитать в нашей статье - [http://docs.carbonsoft.ru/113999917].

h3. Требования к оперативной памяти.

Для работы может потребоваться двойной запас памяти, потребляемой при обычной работе, так как проверка корректности конфигурации потребляет столько же памяти, сколько и сам DNS-сервер. Проверка запускается сравнительно редко, не используется постоянно, поэтому для подстраховки от нехватки памяти лучше использовать swap.
|| Режим работы || Оперативной памяти || Размер swap ||
| Минимальное тестирование, без реальных абонентов | 2 Гб | 2 Гб |
| Оптимальный объём на август 2020 года | 4 Гб | 2 Гб |
| Запас на случай роста объёмов реестра до середины 2021 года | 6 Гб | 2 Гб |

*Unbound 1.6.0 (Debian 9)*
* Создать директорию /etc/unbound/local.d/
* В файле /etc/unbound/unbound.conf.d/unbound.conf в конце секции "server:" указать include: /etc/unbound/local.d/*.conf



Важно: проверьте уровень логирования. Из-за частых автоматических изменений конфигурации файл /var/named/data/named.run может быстро разрастаться и привести к нехватке места на диске.

h2. Что нужно сделать на Carbon Reductor

h3. Авторизация по SSH-ключам

С каждым DNS-сервером с которым настраивается интеграция должна быть настроена авторизация по SSH ключам.

Для начала нужно подключиться по SSH к серверу с Carbon Reductor DPI X.

Все дальнейшие команды нужно выполнять внутри контейнера Carbon Reductor DPI X, перейти в него можно командой.

{code}
chroot /app/reductor/
{code}
Создаётся пара SSH-ключей:

{code}
ssh-keygen
{code}
Команда будет задавать вопросы, нам подходят значения по умолчанию, просто нажимаем Enter несколько раз.

Ключи отправляются на DNS-сервера. К примеру IP адрес DNS-сервера - 10.15.0.24, тогда команда для отправки выглядит так:

{code}
ssh-copy-id root@10.15.0.24
{code}

Обязательно проверьте, что после этого подключение по SSH успешно проходит и не запрашивает ввод пароля или yes/no.

h4. Ограничения

* После переустановки DNS-сервера потребуется повторный обмен ключами. Возможно потребуется удалить строчку с публичным ключом DNS-сервера из файла /app/reductor/root/.ssh/known_hosts.
* Поддерживается только авторизация по SSH на стандартном порту 22 от имени пользователя root по публичным ключам.

h2. Обязательные опции

h3. Тип DNS-сервера

Выберите тип DNS-сервера, который вы используете. На текущий момент варианта два: вариант только один:

* Unbound
* Bind / Named

Bind / Named хуже чем Unbound справляется с большим набором зон: потребляет больше оперативной памяти, перечитывание конфигурации занимает больше времени. Если вы планируете использовать Bind / Named для блокировки ресурсов, мы рекомендуем перейти на Unbound. Если использовать его только для разблокировки частично заблокированных ресурсов - проблем быть не должно.

*Важно:* один сервер Carbon Reductor DPI X может работать только с одним типом DNS-серверов, т.е. тип DNS-сервера - глобальная опция. Если в вашей сети используются и Bind / Named и Unbound одновременно, рекомендуемое решение - использовать два сервера с Carbon Reductor DPI X. Лицензию на второй сервер Carbon Reductor DPI X можно получить бесплатно в качестве резервного сервера и установить его в виртуальную машину.


Возможно вы уже пользовались прототипом модуля, который устанавливался непосредственно на DNS-сервер и обращался к Carbon Reductor за списками.

Сейчас схема изменилась - Carbon Reductor DPI X локально генерирует конфигурационные файлы с DNS-зонами для заблокированных сайтов и отправляет их на DNS-сервер.

Если ранее использовался прототип - его необходимо отключить, удалив файл с параметрами запуска из директории /etc/cron.d/ на DNS-сервере.

h3. Избегать частичных блокировок популярных ресурсов
*Зачем это нужно, если есть модуль DNS-спуфинга?*

Это новая возможность в Carbon Reductor DPI X. Схема работы следующая:
# *Иногда трафик не анализируется.* Если пользователь обращается к DNS-серверу в локальной сети, его запросы могут не попадать в зеркало трафика, которое настроено для отправки трафика, уходящего за её пределы. Тем не менее трафик с последующим запросом будет заблокирован либо HTTP, либо SNI модулями, либо по IP.
# Использование только *SNI*\-фильтрации *не перенаправляет на страницу-блокировки*. Анализировать HTTPS-трафик с точностью до домена можно и без DNS, но перенаправление на страницу блокировки - это понятнее для пользователя чем просто разрыв сессии. У него не возникнет лишних вопросов к службе технической поддержки провайдера.
# *Снижение нагрузки* с сервера фильтрации. В случае успешной фильтрации с помощью DNS-сервера запрос пользователя будет направлен к серверу страницы блокировки. Этот трафик не анализируется модулями фильтрации. Особенно актуально это для крупных провайдеров с субпровайдерами - один сервер анализирует трафик от нескольких АС Ревизор, у которых частота запросов к запрещённым сайтам значительно выше, чем у обычных абонентов.

h3. Избежание частичных блокировок популярных ресурсов

Это новая, экспериментальная возможность в Carbon Reductor DPI X и сейчас она активно дорабатывается.

*Схема работы:*

# Модуль читает список частично заблокированных ресурсов. Его формируют администратор сервера и Carbon Soft, при использовании опции "Разблокировать популярные сайты в обход требований Роскомнадзора".
# Домены резолвятся, получаем набор связок "домен" - "список IP"
# В итоге они не замечают частичных блокировок.
# Снижается нагрузка на техническую поддержку провайдера

*Пример*

Ресурс example.com имеет 4 IP адреса: 1.2.3.1, 1.2.3.2, 1.2.3.3, 1.2.3.4.

1.2.3.1 - заблокировали, т.к. этот адрес используется также ресурсом block-me.com, попавшим в реестр РКН.

Пользователь Петя обращается к этому ресурсу. Его DNS-сервер присылает ответ:

{code}
;; ANSWER SECTION:
example.com. 299 IN A 1.2.3.1
example.com. 299 IN A 1.2.3.3
example.com. 299 IN A 1.2.3.4
{code}

ОС используемая Петей выбирает 1.2.3.1, запоминает этот адрес, чтобы не обращаться лишний раз к DNS-серверу.

В результате дальнейшие обращения к этому сервису до тех пор, пока адрес не устареет в DNS-кэше ОС Пети будут блокироваться.

В случае если используется модуль интеграции с DNS-сервером для разблокировки частично заблокированных популярных ресурсов, а Петя использует DNS-сервер провайдера произойдёт следующее.

Carbon Reductor отрезолвит example.com, получит тот же ответ что и Петя:

{code}
;; ANSWER SECTION:
example.com. 299 IN A 1.2.3.1
example.com. 299 IN A 1.2.3.3
example.com. 299 IN A 1.2.3.4
{code}

Т.к. 1.2.3.1 заблокирован, модуль создаст для example.com зону, например:

{code}
local-zone: "example.com" redirect
local-data: "example.com A 1.2.3.3"
local-data: "example.com A 1.2.3.4"
{code}

и применит её на DNS-сервере.

Далее, когда Петя обратиться к DNS-серверу чтобы узнать IP адрес example.com он получит ответ:

{code}
;; ANSWER SECTION:
example.com. 299 IN A 1.2.3.3
example.com. 299 IN A 1.2.3.4
{code}

и не заметит проблем с доступом к этому ресурсу.

*Когда этот модуль не поможет*

В случае если ресурс заблокирован полностью - модуль не сможет подобрать для него незаблокированные адреса по причине того, что их просто нет.

h2. Как тестировать

Включаем опцию menu->Reductor DPI X->Опции Carbon Reductor DPI X->"Разблокировать популярные сайты в обход требований Роскомнадзора".

Для разблокировки ресурса нужно добавить домены в файл:

{code}
/var/lib/reductor/lists/provider/domain_fakezone_safe.load
{code}

В обоих случаях запустите

{code}
/opt/fakezone/bin/main.sh
{code}

При возникновении ошибок - создайте заявку в хелпдеске и приложите полный вывод команды main.sh.

h2. Защита от ошибок

В работе с unbound мы постарались минимизировать полное перепрочтение конфигурации DNS-сервера (reload). Сейчас оно будет вызываться только в следующих случаях:

* Первый запуск с новым DNS-сервером (или если пропадут файлы используемые для синхронизации - /var/lib/fakezone/block.cache и файлы зон, созданные Carbon Reductor DPI X)
* Необходима синхронизация (добавление и удаление) более 3000 доменов за раз.
* Произошла ошибка при выполнении команды синхронизации.
* Используются _и_ изменились списки для частичной разблокировки популярных сервисов.

При сетевых сбоях во время синхронизации - она продолжит выполнение на DNS-сервере. Если выполнение будет прервано по какой-либо причине, ничего страшного - спустя 5 минут выполнение продолжится с того места, на котором закончилось.

h3. Дублирующиеся зоны в Unbound

Если для одного домена создано несколько зон - это приведёт к ошибкам. На текущий момент защиты от этого в модуле нет. Это происходит когда для него создаётся зона двумя из трёх возможных способов:

* Для блокировки по домену
* Для избежания частичной блокировки
* Вручную администратором