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

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
dpi:dpi_options:dns_substitution [2025/07/24 14:36] atereschenkodpi:dpi_options:dns_substitution [2025/09/22 11:46] (текущий) atereschenko
Строка 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-адреса. Используется для балансировки трафика определенных ресурсов между разными серверами на основании IP адреса. +Эта услуга эффективна для контроля DNS-запросов клиентов и перенаправления их на альтернативные IP-адреса. Используется для балансировки трафика определенных ресурсов между разными серверами на основании IP адреса. \\ [[dpi:dpi_options:opt_li:li_ipfix#настройка_экспорта_dns-ответов_или_dns-запросов|Описание настройки экспорта DNS-запросов и DNS-ответов]]
  
 ====Схема работы услуги==== ====Схема работы услуги====
Строка 15: Строка 15:
     * ''A'' — IPv4-адрес (длина — 32 бита);     * ''A'' — IPv4-адрес (длина — 32 бита);
     * ''AAAA'' — IPv6-адрес (длина — 128 бит);     * ''AAAA'' — IPv6-адрес (длина — 128 бит);
-    * ''HTTPS'' — тип записи предназначен для предоставления информации о доступных сервисах, работающих по протоколу HTTPS. Он позволяет указывать альтернативные endpoints, поддержку HTTP/3, шифрование ClientHello и нестандартные порты TCP/UDP;+    * ''HTTPS'' — тип записи предназначен для предоставления информации о доступных сервисах, работающих по протоколу HTTPS. Он позволяет указывать альтернативные endpoints, поддержку HTTP/3, шифрование ClientHello и нестандартные порты TCP/UDP;
     * ''MX'' — txt-запись, которая содержит информацию о почтовых серверах, обрабатывающих почту.     * ''MX'' — txt-запись, которая содержит информацию о почтовых серверах, обрабатывающих почту.
  
 Возможные действия с DNS-запросами: Возможные действия с DNS-запросами:
   * ''ya.ru HTTPS #drop'' — DPI отбрасывает DNS-запрос с HTTPS типом записи   * ''ya.ru HTTPS #drop'' — DPI отбрасывает DNS-запрос с HTTPS типом записи
-  * ''ya.ru HTTPS #drop'' — DPI отвечает домен не сущетсвует на DNS-запрос с HTTPS типом записи +  * ''ya.ru HTTPS #nxdomain'' — DPI отвечает домен не сущетсвует на DNS-запрос с типом записи HTTPS 
-  * ''ya.ru A #nxdomain'' — DPI отправляет ответ об отсутствии домена +  * ''ya.ru A #nxdomain'' — DPI отправляет ответ об отсутствии домена с типом записи A 
-  * ''mail.ru MX smtp.googlemail.com'' — в данном случае на запрос mail.ru с типом ''MX'' должен быть получен ответ что домен mail.ru имеет почтовый сервер по адресу smtp.googlemail.co с ''preference'' равным 10.+  * ''mail.ru MX smtp.googlemail.com'' — в данном случае на запрос mail.ru с типом ''MX'' должен быть получен ответ что домен mail.ru имеет почтовый сервер по адресу smtp.googlemail.com с ''preference'' равным 10.
 =====Настройка===== =====Настройка=====
-  - Создать текстовый файл и добавить в него правила обработки DNS-запросов, указав доменное имя, тип DNS-записи, доменное имя, действие и IP-адрес, который будет указан в ответе для данного домена. Поддерживается указание ''*'' для доменов. <code bash>vi test.txt+  - Создать текстовый файл и добавить в него правила обработки DNS-запросов, указавдоменное имя, тип DNS-записи, или действие, или IP-адрес или домен для записи с типом MX, который будет указан в ответе для данного домена. Поддерживается указание ''*'' для доменов. <code bash>vi test.txt
 google.com A 192.0.2.1 google.com A 192.0.2.1
 test.ru A #nxdomain test.ru A #nxdomain
Строка 32: Строка 32:
 mail.ru MX smtp.googlemail.com 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> Обратная конвертация утилитой dic2dns.
   - Поместить полученный бинарный файл в директорию, откуда его будет читать DPI:<code bash>cp test.bin /var/lib/dpi/dns.bin</code>   - Поместить полученный бинарный файл в директорию, откуда его будет читать DPI:<code bash>cp test.bin /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>   - Создать профиль услуги:<code bash>fdpi_ctrl load profile --service 19 --profile.name test_193 --profile.json '{ "dns_list" : "/var/lib/dpi/dns.bin" }'</code>
Строка 54: Строка 54:
 fdpi_ctrl del --service 19 --profile.name test_193 --vchannel 1</code> fdpi_ctrl del --service 19 --profile.name test_193 --vchannel 1</code>
  
 +
 +Поиск абонентов, которым подключена услуга с заданным именем профиля:
 +
 +<code bash>fdpi_ctrl list all --service 19 --profile.name test_193</code>
 +
 +
 +Удаление именованного профиля (не должно быть абонентов, которые его используют):
 +
 +<code bash>fdpi_ctrl del profile --service 19  --profile.name test_193</code>
 +
 +Изменение настроек (профиля) услуги (новые настройки применятся ко всем абонентам с заданным профилем услуги):
 +<code bash>
 +fdpi_ctrl load profile --service 19 --profile.name test_193 --profile.json '{ "dns_list" : "/var/lib/dpi/dns.bin" }'
 +</code>