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:121-132)。
源码: infra/conf/fakedns.go:13-48 · v26.7.28 (5ca6f4b)
