Обработка DNS-запросов и подмена DNS-ответов [Документация VAS Experts]

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
dpi:dpi_options:dns_substitution [2024/11/28 13:08] elena.krasnobryzhdpi:dpi_options:dns_substitution [2025/08/13 10:50] (текущий) – [Назначение] elena.krasnobryzh
Строка 1: Строка 1:
 {{tag>Услуги "Услуга 19" "Подмена DNS"}} {{tag>Услуги "Услуга 19" "Подмена DNS"}}
 {{indexmenu_n>16}} {{indexmenu_n>16}}
-======Подмена DNS-ответов======+======Обработка DNS-запросов и подмена DNS-ответов======
 =====Назначение===== =====Назначение=====
 Услуга подмены DNS-ответов позволяет изменять IP-адреса, возвращаемые DNS-сервером для определенных доменных имен. Это позволяет влиять на ответы DNS-серверов, переопределяя IP-адреса в ответах сервера для определённых типов DNS-запросов, указанных в настройках услуги.\\ Услуга подмены DNS-ответов позволяет изменять IP-адреса, возвращаемые DNS-сервером для определенных доменных имен. Это позволяет влиять на ответы DNS-серверов, переопределяя IP-адреса в ответах сервера для определённых типов DNS-запросов, указанных в настройках услуги.\\
-Эта услуга эффективна для контроля DNS-запросов клиентов и перенаправления их на альтернативные IP-адреса. Она особенно полезнакогда нужно направить пользователя на ресурс, отличный от запрашиваемого.+Эта услуга эффективна для контроля DNS-запросов клиентов и перенаправления их на альтернативные IP-адреса. Используется для балансировки трафика определенных ресурсов между разными серверами на основании IP адреса. \\ [[dpi:dpi_options:opt_li:li_ipfix#настройка_экспорта_dns-ответов_или_dns-запросов|Описание настройки экспорта DNS-запросов и DNS-ответов]]
  
 ====Схема работы услуги==== ====Схема работы услуги====
   - Клиент выполняет определенный тип запроса к DNS-серверу (например, тип A).   - Клиент выполняет определенный тип запроса к DNS-серверу (например, тип A).
-  - DNS сервер возвращает ответ (для записи типа А это IPv4-адрес). +  - DPI анализирует все DNS-запросы и проверяет, назначена ли услуга подмены для этого клиента (IP sourse) на конкретный ресурс. В случае если настроена блокировка данного запроса, то DPI только отбрасывает DNS-запрос с конкретным типом записи
-  DPI видит запрос и проверяет, назначена ли услуга подмены для этого клиента. +  - Если услуга назначена, DPI отбрасывает оригинальный DNS запрос клиента и формирует ответ DNS-сервера, в зависимости от указанных правил в услуге. 
-  - Если услуга назначена, DPI модифицирует оригинальный ответ DNS-сервера, в зависимости от указанных правил в услуге.+
   - DPI перенаправляет модифицированный ответ клиенту. При этом клиент не замечает модификации и считает ответ легитимным.   - DPI перенаправляет модифицированный ответ клиенту. При этом клиент не замечает модификации и считает ответ легитимным.
  
 +Поддерживаемые типы DNS-записи:
 +    * ''A'' — IPv4-адрес (длина — 32 бита);
 +    * ''AAAA'' — IPv6-адрес (длина — 128 бит);
 +    * ''HTTPS'' — тип записи предназначен для предоставления информации о доступных сервисах, работающих по протоколу HTTPS. Он позволяет указывать альтернативные endpoints, поддержку HTTP/3, шифрование ClientHello и нестандартные порты TCP/UDP;
 +    * ''MX'' — txt-запись, которая содержит информацию о почтовых серверах, обрабатывающих почту.
 +
 +Возможные действия с DNS-запросами:
 +  * ''ya.ru HTTPS #drop'' — DPI отбрасывает DNS-запрос с HTTPS типом записи
 +  * ''ya.ru HTTPS #nxdomain'' — DPI отвечает домен не сущетсвует на DNS-запрос с типом записи HTTPS
 +  * ''ya.ru A #nxdomain'' — DPI отправляет ответ об отсутствии домена с типом записи A
 +  * ''mail.ru MX smtp.googlemail.com'' — в данном случае на запрос mail.ru с типом ''MX'' должен быть получен ответ что домен mail.ru имеет почтовый сервер по адресу smtp.googlemail.com с ''preference'' равным 10.
 =====Настройка===== =====Настройка=====
-  - Создать текстовый файл и добавить в него правила подмены для DNS, указав доменное имя, тип DNS-записи и IP-адрес, который будет указан в ответе для данного домена. Поддерживается указание * для доменов.\\ Поддерживаемые типы DNS-записи: +  - Создать текстовый файл и добавить в него правила обработки DNS-запросов, указавдоменное имя, тип DNS-записи, или действие, или IP-адрес или домен для записи с типом MX, который будет указан в ответе для данного домена. Поддерживается указание ''*'' для доменов. <code bash>vi test.txt
-    * A — IPv4-адрес; +
-    * AAAA — IPv6-адрес. <code bash>vi test.txt+
 google.com A 192.0.2.1 google.com A 192.0.2.1
 +test.ru A #nxdomain
 example.com AAAA 2001:db8:85a3::8a2e:370:7334 example.com AAAA 2001:db8:85a3::8a2e:370:7334
 +ya.ru HTTPS #drop
 *.fb.com A 203.0.113.5 *.fb.com A 203.0.113.5
 +mail.ru MX smtp.googlemail.com
 </code> </code>
   - Утилитой ''dns2dic'' конвертировать текстовый файл в бинарный формат, понятный для DPI:<code bash>cat test.txt|dns2dic test.bin</code>   - Утилитой ''dns2dic'' конвертировать текстовый файл в бинарный формат, понятный для DPI:<code bash>cat test.txt|dns2dic test.bin</code>
Строка 25: Строка 36:
   - Создать профиль услуги:<code bash>fdpi_ctrl load profile --service 19 --profile.name test_193 --profile.json '{ "dns_list" : "/var/lib/dpi/dns.bin" }'</code>   - Создать профиль услуги:<code bash>fdpi_ctrl load profile --service 19 --profile.name test_193 --profile.json '{ "dns_list" : "/var/lib/dpi/dns.bin" }'</code>
  
-=====Управление===== 
 ''max_profiles_serv19'' — настройка максимального количества профилей. По умолчанию — 32. ''max_profiles_serv19'' — настройка максимального количества профилей. По умолчанию — 32.
  
 +<note tip>DNS ответ по умолчанию направляется в тот интерфейс с которого пришел запрос (IN интерфейс из которого пришел запрос от абонента). Отправка в OUT интрефейс актуальна для асимметричного режима работы DPI (только на исходящем трафике). Настраивается в ''fastdpi.conf'' параметром ''emit_direction=2''</note>
 +
 +=====Управление=====
 Формат команды: Формат команды:
 <code bash>fdpi_ctrl [команда] --service 19 [список опций] [login или vchannel]</code> <code bash>fdpi_ctrl [команда] --service 19 [список опций] [login или vchannel]</code>