Files
XTLS_Xray-docs-next/docs/ru/config/outbounds/dns.md
T

107 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DNS
DNS — это исходящий протокол, который принимает DNS-запросы, переданные routing, и пересылает или обрабатывает их по правилам.
Этот outbound поддерживает только традиционный открытый DNS, то есть запросы по UDP и TCP; нестандартные для него варианты, такие как DoH, DoT и DoQ, к этому outbound не применимы. Типичные сценарии: TUN, прозрачный прокси или `tunnel` принимают DNS-трафик, после чего routing направляет его в этот outbound.
По правилам он может пропускать запросы к целевому DNS-серверу, выполнять `hijack` во встроенный [DNS-сервер](../dns.md) для дальнейшей обработки, отбрасывать запросы или возвращать ответы с указанным RCODE. Также он может изменять целевой адрес, порт и транспортный протокол.
## OutboundConfigurationObject
`OutboundConfigurationObject` соответствует элементу `settings` в [`OutboundObject`](../outbound.md).
```json
{
"outbounds": [
{
// ...
"protocol": "dns",
// [!code focus:18]
"settings": {
"rewriteNetwork": "udp",
"rewriteAddress": "1.1.1.1",
"rewritePort": 53,
"userLevel": 0,
"rules": [
{
"action": "return",
"rCode": 5,
"domain": ["domain:example.com"]
},
{
"action": "direct",
"qType": 65,
"domain": ["geosite:geolocation-!cn"]
}
]
}
}
]
}
```
Пример выше только демонстрирует синтаксис полей. Полную конфигурацию см. в примере ниже.
> `rewriteNetwork`: [ "tcp" | "udp" ]
Изменяет транспортный протокол DNS-трафика. Допустимые значения: `"tcp"` и `"udp"`. Если не указано, исходный транспортный способ сохраняется.
> `rewriteAddress`: address
Изменяет адрес DNS-сервера. Если не указано, сохраняется адрес, указанный источником.
> `rewritePort`: number
Изменяет порт DNS-сервера. Если не указано, сохраняется порт, указанный источником.
> `userLevel`: number
Уровень пользователя. Соединения будут использовать [локальную политику](../policy.md#levelpolicyobject), соответствующую этому уровню пользователя.
Значение `userLevel` соответствует значению `level` в [policy](../policy.md#policyobject). Если не указано, по умолчанию используется `0`.
> `rules`: \[[RuleObject](#ruleobject)\]
DNS-запросы сопоставляются с правилами по порядку; поддерживается детальное управление по `qType` и `domain`.
Если ни одно правило не совпало, используется встроенное правило по умолчанию: запросы A и AAAA направляются во встроенный DNS-модуль, а запросы других типов получают пустой ответ с RCODE `0`.
### RuleObject
```json
{
"action": "return",
"qType": 65,
"rCode": 5,
"domain": ["domain:example.com"]
}
```
Все условия сопоставления внутри правила объединяются логикой AND. Если условие не указано, ограничение по этому условию не применяется.
> `action`: [ "direct" | "hijack" | "drop" | "return" ]
Определяет действие при совпадении правила.
- `direct`: напрямую пропускает запрос к целевому DNS-серверу. Если на уровне outbound также настроены `rewriteNetwork`, `rewriteAddress` или `rewritePort`, запрос пересылается к измененной цели.
- `hijack`: направляет запрос во встроенный [DNS-сервер](../dns.md) для дальнейшей обработки. Это можно использовать для дополнительного разделения трафика через конфигурацию встроенного DNS. В настоящее время поддерживаются только записи A и AAAA.
- `drop`: напрямую отбрасывает запрос и не возвращает ответ.
- `return`: возвращает DNS-ответ, код которого задается через `rCode`. По сравнению с `drop`, это может предотвратить долгое ожидание DNS timeout или повторные попытки у некоторых приложений.
> `qType`: number | string
Сопоставляет типы DNS-запросов. Формы записи:
- Целое число: конкретный тип запроса, например `"qType": 1` соответствует запросу A, `"qType": 28` — запросу AAAA.
- Строка: может быть строкой только из цифр, например `"qType": "28"`; или диапазоном значений, например `"qType": "5-10"` — это типы с 5 по 10, всего 6 типов. Можно использовать запятую для разделения, например `11,13,15-17` — это 5 типов: тип 11, тип 13 и типы с 15 по 17.
Конкретные номера типов смотрите в [документации IANA](https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml).
> `rCode`: number
DNS RCODE, используемый при возврате ответа, в диапазоне от `0` до `65535`. Действует только когда `action` имеет значение `return`; если не указан, по умолчанию используется `0`.
> `domain`: [string]
Сопоставляет список доменов. Синтаксис такой же, как у [`domain` в правилах routing](../routing.md#ruleobject).