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

Для блокировки https ресурсов, имеющих малый TTL для DNS A записей, нужно обязательно настроить DNS-spoofing.

{toc}



h1. 1. Страница-заглушка

Для настройки DNS-spoofing сначала необходимо установить и настроить страницу-заглушку для перенаправления абонентских запросов.

Можно сделать на [отдельном сервере|https://github.com/carbonsoft/reductor_blockpages] (мы рекомендуем), либо [прямо на редукторе|CarbonReductor:Страница-заглушка на сервере Carbon Reductor] (не очень рекомендуем).

h1. 2. Настройка DNS-spoofing

Нужно включить опцию:
{panel}
menu \-> Reductor \-> Настройка алгоритма фильтрации \-> Использовать фильтрацию DNS
{panel}

IP адрес, на котором заглушка доступна для всех абонентов, укажите в опции:

{panel}
menu \-> Reductor \-> Настройка алгоритма фильтрации \-> IP для DNS-ответов
{panel}
По умолчанию указан IP адрес 127.0.0.1, измените его на адрес сервера с заглушкой.

h1. 3. Зеркало трафика

# Необходимо, чтобы в "зеркале" трафика присутствовал исходящий от абонентов DNS трафик udp dst port 53. Трафик самого DNS-сервера в зеркале не нужен.
# В качестве альтернативы/дополнения п.1 можно использовать [набор скриптов на DNS-сервере для интеграции с Carbon Reductor|https://github.com/carbonsoft/named_fakezone_generator].

h1. Как работает  DNS-спуфинг

Схема работы (для dns) выглядит приблизительно следующим образом:

A - абонент, R - редуктор, S - блокируемый сайт, D - DNS-сервер используемый абонентом, Z - сервер страницы-заглушки

# *A \-> dns query AAAA S \-> D* \- абонент A запрашивает DNS сервер D об IPv6 адресе заблокированного ресурса S
# *R \-> dns empty query response AAAA S \-> A* \- редуктор R отправляет абоненту A пустой DNS ответ от имени DNS-сервера D
# *A \-> dns query A S \-> D* \- абонент A запрашивает DNS сервер D об IPv4 адресе заблокированного ресурса S
# *R \-> dns query response A S = Z \-> A* \- редуктор R отправляет абоненту A DNS ответ с адресом страницы-заглушки Z от имени DNS-сервера D
# *A \-> http/https Host: S, \-> Z* \- абонент обращается к серверу страницы заглушки с заголовками Host = блокируемый домен, GET - без изменений, протокол - без изменений.
## *HTTPS cert error* в случае обращения по HTTPS абоненту будет предложено принять заведомо неправильный самоподписной HTTPS-сертификат чтобы подключиться к странице-заглушке.
# *Z \-> http/200 \-> A* \- отправка содержимого страницы-заглушки.

Дополнительная/альтернативная схема с использованием [http://docs.carbonsoft.ru/pages/viewpage.action?pageId=67404296] отличается тем, что в таком случае DNS-ответ присылает не Carbon Reductor, а провайдерский DNS-сервер.