Skip to content

FakeDNS

Блок fakeDns настраивает один или несколько пулов синтетических IP-адресов, используемых маршрутизацией с учётом сниффинга. DNS-сервер выдаёт адрес из пула для каждого запрошенного домена, а движок маршрутизации, увидев соединение, отображает адрес обратно в исходный домен.

Форма записи

fakeDns имеет полиморфную JSON-форму: это либо один объект пула, либо массив объектов пулов.

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 }
  ]
}

Поля элемента пула:

ПолеТипПо умолчаниюОписание
ipPoolstring (CIDR)(обязательно)CIDR-блок, из которого выдаются поддельные адреса.
poolSizeint64(обязательно)Количество используемых адресов из 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)

Core Tutorial от Argsment