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 }
]
}池元素字段:
| 字段 | 类型 | 默认值 | 描述 |
|---|---|---|---|
ipPool | string (CIDR) | 必填 | 分配伪地址的 CIDR 段。 |
poolSize | int64 | 必填 | 从 CIDR 中实际使用的地址数量(LRU 大小)。 |
自动补齐
如果 DNS 部分引用了特殊的 fakedns 服务器,但配置里没有 fakeDns 块,Xray 会自动添加默认 FakeDNS 块 —— 见 infra/conf/fakedns.go:73 的 FakeDNSPostProcessingStage.Process。 默认值:IPv4 用 198.18.0.0/15,IPv6 用 fc00::/18,双栈模式下池 大小各为 32768(单栈为 65535)。
说明
- 合法 JSON 形态由
UnmarshalJSON(infra/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)
