本文讲清 FakeDNS 用虚拟 IP 替代真实解析的原理与配置写法,适合正在配置 TUN 透明代理、希望域名分流规则继续生效的用户;读完能判断自己的场景该不该开,并掌握开启后的验证方法。
一次请求的完整路径:FakeDNS 在哪个环节介入
不开 FakeDNS 时,应用先向系统 DNS 服务器查询域名的真实 IP,拿到结果再建立连接。TUN 模式下内核看到的是 IP 包,如果这个 IP 没有命中任何规则,域名信息就丢了,分流只能靠 IP 规则兜底。
开启 FakeDNS 后,查询被 Xray 的 DNS 模块接管。它不再向上游 DNS 服务器要真实地址,而是从 198.18.0.0/15 网段里挑一个空闲 IP 返回,并在内存映射表里登记「域名 → 虚拟 IP」。
应用随后连接的是这个虚拟 IP。流量进入 TUN 网卡后,路由引擎发现目标地址落在 FakeDNS 网段,就通过映射表反查出原始域名,geosite、domain 等规则照常命中,再交给对应的出站连接。
真正的 DNS 解析被推迟到出站阶段,由代理服务器在远端完成。对走代理的流量来说,本地少了一次 DNS 往返,连接建立也更快。
FakeDNS 的核心不是「把 DNS 查询转发给代理」,而是「本地先不解析,出站时再解析」。省下的那一次往返,来自虚拟 IP 让应用可以立即建连。
虚拟 IP 池:198.18.0.0/15 从哪来,为何不会冲突
198.18.0.0/15 覆盖 198.18.0.0 到 198.19.255.255,共 131072 个地址。这段空间在 RFC 2544 中保留给网络设备性能测试使用,公网服务不会部署在其中,因此拿来做虚拟地址不会和任何真实站点冲突。
映射表常驻内存,连接结束后条目即被回收,默认池足够日常使用。Xray 也允许通过根级 fakedns 的 pool 字段更换网段,一般保持默认即可。
配置写法:fake 服务器条目与根级 fakedns 字段
{
"dns": {
"servers": [
"https://1.1.1.1/dns-query",
{
"address": "fake",
"domains": ["geosite:geolocation-!cn"]
}
]
}
}
第一条是常规 DoH 服务器,负责真实解析;第二条 address 为 fake 的条目负责发放虚拟 IP。domains 过滤决定哪些域名走 fake——上面写法只让境外域名拿虚拟 IP,境内域名仍由 1.1.1.1 正常解析。
不想手动改 servers 数组时,Xray 1.8.0 之后可以直接写根级 fakedns 字段,等价于自动注入一条 fake 服务器条目,适合只做开关不想改配置的用户:
{
"fakedns": {
"pool": "198.18.0.0/15",
"skipFallback": false
}
}
skipFallback 控制回退行为:为 false 时,fake 条目没接管的域名会继续找列表里的其他 DNS 服务器;为 true 时直接返回失败。日常保持默认 false 即可。
- 域名解析策略保持 AsIs:FakeDNS 接管查询后,路由按域名匹配,无需本地先解析成 IP。
- 不要改为 IPOnDemand:那会让内核在匹配阶段就发起真实解析,FakeDNS 的省往返效果失效。
- 路由规则里保留 geosite:cn 直连:境内域名不进 fake 列表,直连流量不受影响。
v2rayN 与 v2rayNG 的开启路径
v2rayN 桌面端
- 菜单位置
- 设置 → 参数设置
- 分组
- 路由设置
- 开关
- 启用 FakeDNS
- 内核要求
- Xray 内核
- 生效方式
- 重启核心
域名解析策略保持 AsIs,不要改为 IPOnDemand。
v2rayNG 安卓端
- 菜单位置
- 设置 → DNS 设置
- 开关
- 启用 FakeDNS
- 内核要求
- Xray 内核
- 生效方式
- 返回后重启应用
v2fly 内核同样识别 address 为 fake 的 DNS 条目,v2flyNG 用户可在自定义配置中启用。
两个客户端的开关都只作用于内核生成的配置,改完必须重启核心或应用,否则 DNS 模块仍然使用旧状态。
开启后第一件事是访问一个境内网站,确认它走直连且没有被 fake 接管。这一步能提前暴露 domains 过滤写错的问题,比直接测境外站点更有效。
四类不建议开启 FakeDNS 的场景
- 系统代理模式:应用已把域名交给代理,路由本来就能按域名匹配,FakeDNS 只会多一次虚拟 IP 转换,没有收益。
- 内网与局域网解析:NAS、打印机、公司内网域名的解析结果被替换成不可路由的虚拟 IP,依赖回退解析才能连通,容易直接失败。
- 本地 DNS 工具:AdGuard Home、自建 DoH 等去广告与内网解析能力会被 fake 绕过,过滤规则失效。
- 以 IP 规则为主的配置:虚拟 IP 命中不了 CIDR 与 IP 规则,分流结果会和预期不符。
判断标准只有一条:流量必须经过 TUN 网卡,且分流以域名规则为主。两个条件缺一,FakeDNS 的收益都很小,副作用却可能直接导致连不上。
开启前先记下当前域名解析策略与 DNS 服务器列表。FakeDNS 的问题大多出在 DNS 配置上,保留一份对照可以快速还原。
开启后的验证方法与常见问题
验证 FakeDNS 是否生效,看核心日志最直接。开启后访问一个境外站点,日志里应出现类似下面的记录:
2026/07/24 10:32:11 [Info] [TCP] dialing to target:198.18.0.7:443 via proxy
目标地址是 198.18.x.x,说明这条连接确实用了虚拟 IP;再配合路由日志里反查出的域名,就能确认 FakeDNS 与域名规则都在正常工作。
开了 FakeDNS 后,境内直连网站反而变慢?
说明境内域名也被 fake 接管了。把 fake 条目的 domains 收窄为境外域名集合(如 geosite:geolocation-!cn),境内域名继续走普通 DNS 服务器解析,再重启核心验证。
TUN 模式下某些 App 一直连不上?
这类 App 通常校验目标 IP 或使用自定义 UDP。为它单独添加直连规则或按进程排除,让该 App 的流量不经过 TUN,不必全局关闭 FakeDNS。
关闭 FakeDNS 后一切正常,问题出在哪?
多数是 DNS 服务器顺序或 domains 过滤写错。先恢复默认 DNS 配置,再按「境外域名走 fake、境内域名走本地解析」的顺序逐条加回,每次只动一处。
系统代理模式有必要开吗?
没必要。系统代理下应用已把域名交给 v2rayN,路由直接按域名匹配;FakeDNS 的收益只在 TUN 透明代理场景成立,系统代理模式保持关闭即可。