Skip to content

FakeDNS

fakeDns 块用于配置一个或多个合成 IP 池,供启用了嗅探的路由使用。 DNS 服务器为每个被查询的域名分配池中一个地址,路由引擎在看到该 连接时再把地址反向映射回原始域名。

形态

fakeDns 具有 多态 JSON 形态:要么是单个池对象,要么是池对象 数组。

json
// 单池:
{
  "fakeDns": { "ipPool": "198.18.0.0/15", "poolSize": 65535 }
}

// 多池(最常见 —— 一个 v4,一个 v6):
{
  "fakeDns": [
    { "ipPool": "198.18.0.0/15", "poolSize": 32768 },
    { "ipPool": "fc00::/18",      "poolSize": 32768 }
  ]
}

池元素字段:

字段类型默认值描述
ipPoolstring (CIDR)必填分配伪地址的 CIDR 段。
poolSizeint64必填从 CIDR 中实际使用的地址数量(LRU 大小)。

自动补齐

如果 DNS 部分引用了特殊的 fakedns 服务器,但配置里没有 fakeDns 块,Xray 会自动添加默认 FakeDNS 块 —— 见 infra/conf/fakedns.go:73FakeDNSPostProcessingStage.Process。 默认值:IPv4 用 198.18.0.0/15,IPv6 用 fc00::/18,双栈模式下池 大小各为 32768(单栈为 65535)。

说明

  • 合法 JSON 形态由 UnmarshalJSONinfra/conf/fakedns.go:36-47) 通过试探解组检测。混合输入(如带杂散列表字段的对象)会在解析阶段 报错。
  • 要让路由引擎真正把地址映射回原始域名,对应入站必须启用嗅探,且 destOverride 包含 "fakedns""fakedns+others"。Xray 启动 时如果找不到这样的入站会打印警告 (infra/conf/fakedns.go:128-139)。

源码: infra/conf/fakedns.go:13-48 · v26.6.1 (94ffd50)

由 Argsment 出品的 Core Tutorial