FakeDNS
Блок fakeDns настраивает один или несколько пулов синтетических IP-адресов, используемых маршрутизацией с учётом сниффинга. DNS-сервер выдаёт адрес из пула для каждого запрошенного домена, а движок маршрутизации, увидев соединение, отображает адрес обратно в исходный домен.
Форма записи
fakeDns имеет полиморфную JSON-форму: это либо один объект пула, либо массив объектов пулов.
// Single pool:
{
"fakeDns": { "ipPool": "198.18.0.0/15", "poolSize": 65535 }
}
// Multiple pools (most common — one for v4, one for v6):
{
"fakeDns": [
{ "ipPool": "198.18.0.0/15", "poolSize": 32768 },
{ "ipPool": "fc00::/18", "poolSize": 32768 }
]
}Поля элемента пула:
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
ipPool | string (CIDR) | (обязательно) | CIDR-блок, из которого выдаются поддельные адреса. |
poolSize | int64 | (обязательно) | Количество используемых адресов из CIDR (размер LRU). |
Автозаполнение
Xray также автоматически добавляет блок FakeDNS по умолчанию, если секция DNS ссылается на специальный сервер fakedns, а блока fakeDns нет — см. FakeDNSPostProcessingStage.Process в infra/conf/fakedns.go:73. Значения по умолчанию — 198.18.0.0/15 для IPv4 и fc00::/18 для IPv6, каждый пул размером 32768 в двухстековом режиме (65535 при одном стеке).
Примечания
- Допустимые JSON-формы определяются пробным демаршалингом в
UnmarshalJSON(infra/conf/fakedns.go:36-47). Смешанный ввод (например, объект с лишним полем-списком) даёт ошибку на этапе разбора. - Чтобы движок маршрутизации действительно переписывал адрес обратно в исходный домен, соответствующий входящий должен включать сниффинг с
destOverride, содержащим"fakedns"или"fakedns+others", — при запуске Xray выводит предупреждение, если не находит такого входящего (infra/conf/fakedns.go:121-132).
Исходный код: infra/conf/fakedns.go:13-48 · v26.7.28 (5ca6f4b)
