DNS
DNS — это исходящий протокол, который в основном используется для перехвата и пересылки DNS-запросов.
Этот исходящий протокол может принимать только DNS-трафик (включая запросы по протоколам UDP и TCP), другие типы трафика вызовут ошибку.
При обработке DNS-запросов этот исходящий протокол пересылает запросы IP-адресов (то есть A и AAAA) на встроенный DNS-сервер. Другие типы запросов см. в разделе nonIPQuery ниже.
OutboundConfigurationObject
{
"network": "tcp",
"address": "1.1.1.1",
"port": 53,
"nonIPQuery": "drop",
"blockTypes": []
}2
3
4
5
6
7
network: "tcp" | "udp"
Изменяет транспортный протокол DNS-трафика. Допустимые значения: "tcp" и "udp". Если не указано, используется исходный транспортный протокол.
address: address
Изменяет адрес DNS-сервера. Если не указано, используется адрес, указанный в источнике.
port: number
Изменяет порт DNS-сервера. Если не указано, используется порт, указанный в источнике.
nonIPQuery: string
Управляет запросами, не относящимися к IP-адресам (не A и AAAA). "drop" — отклонять, "skip" — не обрабатывать встроенным DNS-сервером, а пересылать на целевой сервер. В отличие от "drop", это позволяет избежать ситуации, когда приложение тратит слишком много времени в ожидании ответа DNS до тайм-аута.
Значение по умолчанию — "drop".
blockTypes: array
Массив целых чисел (int), определяющий типы DNS-запросов, которые необходимо блокировать. Например, "blockTypes": [65,28] означает блокировку типа 65 (HTTPS) и 28 (AAAA). Распространенный сценарий использования — блокировка типа 65 для предотвращения инициализации ECH браузерами.
Поскольку опция nonIPQuery по умолчанию отбрасывает (drop) все запросы, кроме A и AAAA, необходимо переключить её в режим skip, чтобы данная настройка могла вступить в силу (для типов, отличных от A/AAAA). Разумеется, можно не изменять nonIPQuery и использовать эту опцию исключительно для блокировки A или AAAA (отключение IPv4/IPv6), однако делать это крайне не рекомендуется. Для этих целей лучше использовать настройку queryStrategy во встроенном DNS.
Внимание: если вы используете blockTypes только для блокировки A или AAAA, и при этом nonIPQuery установлен в значение reject, то блокировка также будет осуществляться путем возврата ответа DNS reject, а не простым отбрасыванием пакета.