本文速览

FakeDNS 把域名暂时映射到一个合成 IP,再在连接进入代理时还原域名。它适合需要保留域名信息的透明代理链路,不是单独的加速开关。本文按地址分配、DNS 接管、TUN 回流和嗅探恢复四个环节说明原理,并给出配置片段、验证步骤与关闭后的恢复方法,适合已经能正常连接、准备调整 DNS 的用户。

FakeDNS 是什么:返回映射地址,而非网站真实 IP

普通 DNS 查询通常把域名换成服务器的真实地址;FakeDNS 则先分配一个仅供当前代理链路识别的地址。例如,应用查询 example.com,FakeDNS 可以返回池中的 198.18.0.1,同时在内存中记录这两者的对应关系。这个地址不是该网站的服务器,也不应该直接交给公网路由访问。

应用查询域名 分配合成地址 连接进入代理 映射还原域名 路由选择出站

应用随后向合成地址建立连接。代理接收到连接后,从映射表找回原域名,再按域名规则决定直连还是代理。最终如何取得真实 IP,取决于出站类型与解析策略:可能由本地直连出站解析,也可能把域名交给远端代理处理。FakeDNS 本身并没有消除最终访问真实服务器的需求。

常见示例使用 198.18.0.0/15,即从 198.18.0.0 到 198.19.255.255 的特殊用途地址空间。它原本用于网络设备基准测试,不是可任意访问的公网网站地址,也不是日常局域网常用的私有地址段。把它用于合成地址池前,仍要确认企业网络或实验网络没有实际使用这一段。

131,072
/15 地址池包含的 IPv4 地址总数
53
传统 DNS 常用的 UDP / TCP 端口
443
DoH 通常使用的 HTTPS 端口

FakeDNS、嗅探与 TUN:三个环节分别做什么

三者常在同一配置界面出现,但负责的任务不同。FakeDNS 管地址和域名的对应关系;TUN 通过虚拟网络接口把匹配的 IP 流量送入客户端;嗅探或入站目标恢复逻辑把连接中的信息转成可用于路由、出站的目标。只开启其中一个选项,不能保证整条链路成立。

环节负责的工作缺失时的典型现象
FakeDNS给 DNS 查询分配合成地址,保存域名映射应用仍得到真实 IP,不能据此判断映射链路已经生效
TUN 或透明接管把发往合成地址的连接送回代理处理应用拿到合成地址后,连接没有进入对应代理入站
FakeDNS 目标恢复查询映射表,将合成地址恢复为域名日志里持续出现合成地址,出站尝试连接错误目标
真实 DNS 与出站完成需要的真实解析和服务器连接域名恢复成功,但直连解析或代理出站仍然失败

HTTP Host、TLS SNI 嗅探与 FakeDNS 映射恢复也不能完全画等号。前两者尝试从协议数据中识别域名,受协议、加密方式和应用行为影响;FakeDNS 恢复主要依赖先前保存的映射。应用直接访问一个真实 IP、绕过客户端自行解析,或仍使用上次运行留下的合成 IP 时,都可能没有可用映射。

判断方法:先确认 DNS 和连接经过同一套映射

如果解析由一处 FakeDNS 分配地址,连接却进入另一进程或另一套映射表,先修正接管路径;切换 VMess、VLESS 或更换节点无法补回缺失的域名映射。

开启时机:域名规则有需求,再检查接管条件

适合考虑 FakeDNS 的情况,是透明代理收到的主要是 IP 连接,而路由规则又需要原始域名。它可以减少“先解析出真实 IP,再猜这个 IP 属于哪个域名”的不确定性,也能让部分请求不必等待本地取得真实解析结果就进入后续处理。但它不承诺下载更快,更不会改变节点带宽或线路拥塞。

浏览器内置的安全 DNS、应用自带 DoH 等也需要纳入检查。传统 UDP 53 查询被接管,并不代表 HTTPS 内的 DNS 请求也会交给 FakeDNS。仅按端口封堵 443 会破坏普通网页访问,不能作为通用处理方法;应检查应用的 DNS 选项,明确由应用解析还是由客户端统一处理。

配置字段:地址池、DNS 与入站恢复必须配套

v2rayN 是桌面客户端;v2rayNG 是使用 Xray 内核的安卓客户端;v2flyNG 使用 v2fly 内核。界面负责生成或加载核心配置,但三款客户端的菜单、可用开关和生成结果并不相同。不要把某个客户端的界面截图当作所有版本的通用路径,应以当前实际运行内核接受的配置及日志为准。

地址分配侧

地址池字段
fakedns[].ipPool
示例网段
198.18.0.0/15
容量字段
fakedns[].poolSize
示例容量
65535 个映射容量

容量不是有效期或连接上限;映射淘汰行为需结合具体内核实现理解。

查询与恢复侧

DNS 服务项
dns.servers 中的 fakedns
入站开关
sniffing.enabled
恢复类型
destOverride 中的 fakedns
流量条件
合成地址连接进入匹配入站

有 DNS 配置不等于系统查询已被接管,仍须检查客户端的 DNS 转交和路由设置。

下面是用于理解字段关系的 JSON 片段,展示常见 V2Ray 风格的 IPv4 FakeDNS 配置。它省略了入站、出站、路由和真实 DNS,不是可以直接覆盖客户端的完整配置。Xray 与 v2fly 的具体版本可能存在行为或字段差异,保存前应检查当前内核支持情况。

{
  "fakedns": [
    {
      "ipPool": "198.18.0.0/15",
      "poolSize": 65535
    }
  ],
  "dns": {
    "servers": [
      "fakedns"
    ]
  }
}

对于承担合成地址连接恢复的入站,常见的嗅探片段如下。这里的 fakedns 是目标恢复类型,不表示同时启用了所有 HTTP、TLS 嗅探功能。不要为追求“选项齐全”而把其他版本的类型名称一并复制进去。

{
  "sniffing": {
    "enabled": true,
    "destOverride": [
      "fakedns"
    ]
  }
}

开启后的验证:按 DNS、映射、路由三层检查

验证目标不是“开关显示已启用”,而是同一次访问从域名查询到最终出站都有合理结果。建议先记录当前代理模式、DNS 设置和内核类型,每次只改变一组设置。订阅中的服务器地址、端口与用户标识不属于 FakeDNS 的地址池参数,不需要为了测试而改动。

  1. 建立基线。关闭 FakeDNS 时,确认同一网络下目标网站能够访问,记录使用的是系统代理还是 TUN,并保留一份原配置。
  2. 确认查询路径。启用后,使用一个重新发起解析的域名访问,检查 DNS 日志是否进入预期处理流程;若配置要求该查询使用 FakeDNS,回答应落在配置的池内。
  3. 确认连接回流。查看连接或核心日志,确认对合成地址的连接进入代理,并在可观察的日志阶段恢复出域名。不同日志级别展示的信息可能不同,不能只凭一行 IP 日志断定失败。
  4. 确认分流结果。分别测试一个预期直连和一个预期代理的域名,核对实际出站。只测网页能否打开,无法证明规则命中正确。
  5. 补测兼容性。检查局域网服务、应用内登录和后台联网;若启用了 IPv6,还要检查 AAAA 查询,避免只验证 A 记录就认为所有流量均已接管。

Windows 上可以用 ipconfig /flushdns 清理系统 DNS 缓存;浏览器或其他应用可能还保有自己的缓存及连接,需要退出后重新打开。安卓上可先停止客户端连接,再关闭并重开测试应用。不要为了获取新结果反复同时切换网络、节点、协议和 DNS,那会让对照失去意义。

测试边界:地址池命中不是最终成功

查询返回合成地址只能证明分配环节发生了;还应看到连接进入正确入站、恢复域名并命中预期出站,才能判断这次配置形成了闭环。

常见问题:延迟、解析结果与重启后失效

开启后查询很快,为什么下载速度没变?

合成回答减少的是部分本地解析等待,不会提高远端节点带宽。先比较首次打开网页的耗时与持续下载速度,分开记录;若持续下载仍慢,应检查线路、节点负载和丢包,而不是继续增大地址池。

查询工具返回真实 IP,是不是 FakeDNS 没生效?

先确认工具实际查询了哪个 DNS,以及该域名是否应当走 FakeDNS。工具可能绕过系统解析接口、显式查询其他服务器,或者命中真实解析例外。结合 DNS 日志确认路径,比只看一次查询结果可靠。

客户端重启后,部分应用突然连不上了?

应用可能缓存了旧合成地址,而新进程的映射表已重建。先退出相关应用、清理可控的 DNS 缓存,再重新解析和连接;不要假定客户端重启后仍保留之前的地址对应关系。

局域网域名或打印服务异常,应该改哪里?

先临时恢复真实 DNS 验证关联,再通过客户端支持的 DNS 分流与直连规则处理内网域名。不要把需要交给局域网 DNS 的名称全部送进合成地址池;企业网络还要确认地址池与现有路由没有冲突。

关闭与恢复:同时撤销 DNS 分配和流量接管

关闭时要避免一种中间状态:DNS 仍向应用返回合成地址,但负责恢复的入站或 TUN 已停止工作。更稳妥的方式是暂停测试应用,恢复此前配套的 DNS 与代理设置,再重启连接并清理旧缓存。若客户端提供一体化的 FakeDNS 模式,优先通过同一入口回退,而不是只手动删除一行核心配置。

FakeDNS 的价值在于把域名信息带回透明代理的路由判断。对于已经稳定工作的系统代理,保持简单通常更容易维护;对于确实需要域名分流的 TUN 场景,重点则是确认查询、映射、入站和出站彼此配套。更多基础设置可参照完整手册中的 DNS 设置,先把普通解析路径确认清楚,再增加合成地址这一层。