本文速览

FakeDNS 适合需要在透明代理中保留域名信息的用户,不能单独替代完整的 DNS 与路由配置。本文按地址映射、TUN 接管、Xray 配置和故障定位展开,读完可以判断自己的客户端是否具备配套条件,并用日志与缓存清理验证设置,而不是只凭一个开关猜测是否生效。

FakeDNS 原理:用临时地址保留域名

FakeDNS 返回的是本地映射地址,不是网站服务器的真实地址。普通 DNS 查询会把域名转换为真实 IP;FakeDNS 则从预设地址池分配一个地址,并记录“域名与临时地址”的对应关系。应用仍按正常流程连接这个地址,代理接管后再根据映射恢复域名,交给后续路由和出站处理。

域名查询 分配假地址 应用连接 TUN 接管 恢复域名 匹配出站

Xray 常见的 IPv4 地址池示例是 198.18.0.0/15,范围从 198.18.0.0 到 198.19.255.255。这是用于基准测试的保留地址范围,不是公网服务器地址,也不是常见的家庭局域网私有地址段。应用拿到这样的结果,在正确配置的 FakeDNS 链路中属于正常现象。

这套机制的关键是“地址可以还原成域名”。如果应用连接假地址时绕过了代理,或者接管连接的内核没有那份映射表,假地址就无法用于正常访问。仅在 DNS 设置中填入一个地址池,却没有配置连接接管与还原环节,通常只会把能够访问的网站变成连接超时。

FakeDNS 与 TUN:接管流量不等于接管 DNS

TUN 负责把网络包送入代理处理,FakeDNS 负责让域名信息在这个过程中可恢复。两者经常搭配,但不是同一个功能。开启 TUN 后,应用的连接可能已被接管,DNS 查询却仍发送到路由器、企业 DNS,或者浏览器自己的加密解析服务;此时得到的仍是真实地址,FakeDNS 映射并未建立。

环节 需要具备的条件 缺失后的表现
DNS 入口 目标查询交给配置好的 FakeDNS 仍返回真实 IP,无法验证假地址映射
连接接管 地址池流量进入正确的 TUN 或透明入站 应用直接连接保留地址并超时
域名还原 处理连接的内核能查到对应映射 路由只看到假地址,无法按域名分流
最终出站 直连或代理能处理恢复后的目标 规则已命中,但连接仍然失败

域名还原与流量嗅探也要区分。HTTP Host、TLS 中的服务器名称等信息可以帮助识别部分连接,但并非每种连接都能提供可读取的域名。FakeDNS 依靠之前的查询映射恢复域名,不必完全依赖应用层内容;不过应用直接使用 IP、没有经过该 DNS 入口时,它也无法凭空补出原始域名。

判断:先确认四个环节,再开启 FakeDNS

DNS 入口、地址池路由、映射还原和出站处理必须连成完整链路。只确认 TUN 图标已开启不够,应在日志中核对恢复的目标域名与命中的出站,再判断域名分流是否真正生效。

Xray 配置:地址池与入站还原分开检查

Xray 的 FakeDNS 需要地址池配置与实际 DNS 使用方式配合。下面是用于讲解的顶层配置片段,不是可直接运行的完整客户端配置。它只展示 IPv4 假地址池和内置 DNS 的服务器选择;完整配置还需要入站、路由和出站,且必须让应用查询确实进入这个 DNS 模块。

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

poolSize 表示映射池容量,不是 DNS 监听端口,也不是网络速度参数。示例中的 65535 不代表网站能够获得 65535 条并发连接。只有 FakeDNS 的 DNS 配置也不能承担所有真实解析需求:需要真实 IP 的直连目标、代理服务器域名以及特殊内网域名,都应有明确的真实解析路径,防止连接引导阶段也拿到无法直接使用的假地址。

地址池与 DNS

顶层字段
fakedns
IPv4 地址池
198.18.0.0/15
示例容量
65535
DNS 服务项
fakedns

先确认查询进入该模块,再观察返回地址是否落在配置的池内。

Xray 入站还原

入站字段
sniffing
启用状态
enabled: true
覆盖目标
destOverride: ["fakedns"]
检查对象
真正接收假地址连接的入站

这里只列出还原相关字段;其他嗅探选项应按现有配置合并。

对支持该机制的 Xray 入站,sniffing.destOverride 中的 fakedns 用于查找映射并恢复目标。不要把这组字段直接粘到其他内核的配置中,也不要只修改一个不接收 TUN 流量的入站。若客户端自动生成配置,手改临时文件还可能在下一次启动时被覆盖,应优先使用客户端提供的配置入口。

适用场景:域名分流优先,内网解析保留例外

FakeDNS 更适合“流量被透明接管,但需要按域名选择出站”的场景。例如某些应用不使用系统 HTTP 代理,开启 TUN 后只能看到连接目标 IP;通过 FakeDNS 保留映射,可以让路由重新获得域名条件。它改善的是识别链路,不会改变订阅节点质量,也不会把 VMess 自动转换成 VLESS。

使用场景 建议 配置重点
TUN 下需要域名分流 条件完整时可以启用 确认映射恢复后再匹配域名规则
仅用显式 HTTP 或 SOCKS 代理 先确认是否已有域名目标 已有域名时通常不必额外引入假地址
企业内网与家庭设备发现 优先保留真实解析 内网域名交给相应 DNS,局域网流量按需绕过
应用检查真实 IP 或地址归属 先做单应用兼容测试 需要时为该应用或域名设置真实解析例外

局域网打印机、企业内部服务和依赖本地发现的应用不宜一律交给 FakeDNS。多播发现与普通单播 DNS 也不是同一套机制。应先保留这些服务原有的解析路径,再逐步扩大接管范围;如果把内部域名分给公共解析器,即使关闭 FakeDNS,也可能仍然无法访问。

选择:先让普通 DNS 与 TUN 稳定,再增加假地址映射

新配置先验证直连、代理和内网访问三类目标。只有确实遇到域名识别缺失,再增加 FakeDNS 并重复这三类测试,能够把 DNS 问题与节点、权限、路由问题分开。

验证与排障:先看解析,再看目标与出站

验证 FakeDNS 不应只看网页是否能打开。网页可能通过已有连接、缓存或浏览器独立 DNS 正常访问,无法证明新配置生效。建议只改一个设置,记录改动前后的 DNS 结果、连接目标和出站标签;以下顺序不依赖特定客户端版本,也不把某个菜单名称当成所有版本的统一入口。

  1. 确认实际内核。在 v2rayN 的内核选择或运行日志中核对启动对象;记录当前客户端与内核版本。配置报“未知字段”时先检查字段所属内核,而不是反复切换订阅节点。
  2. 检查 DNS 入口。普通 DNS 常使用 UDP 或 TCP 的 53 端口,但内置 DNS 模块不等于已经在系统上监听该端口。核对客户端的 DNS 接管配置和系统 DNS 地址,不要直接假设 127.0.0.1:53 可用。
  3. 清理旧缓存。关闭测试应用后清理系统缓存,再重新启动应用;浏览器可能另有 DNS 缓存与安全 DNS 设置,需要分别核对。
  4. 验证地址与还原。查询结果应符合所配置的地址池,连接日志则应能显示恢复后的域名或相应处理记录。仅看到 198.18.x.x 不能证明出站成功。
  5. 核对真实解析和路由。检查直连目标与代理服务器域名是否能得到真实地址,再确认域名规则命中的出站。排障完成后恢复常规日志级别,避免长期保存大量连接信息。

Windows 可用以下命令清理系统 DNS 缓存,并查看各网络接口配置的 DNS 服务器。第二条需要在 PowerShell 中运行。它们用于定位入口,不会自动修改客户端规则,也无法清理应用内部的全部缓存。

ipconfig /flushdns

Get-DnsClientServerAddress -AddressFamily IPv4

如果测试工具返回真实地址,先确认它查询的是哪个 DNS 服务器,再判断 FakeDNS 是否失败;如果返回假地址但连接超时,重点检查地址池流量是否进入正确入站,以及映射是否仍然有效。重启内核后,应用可能继续使用旧假地址,而新内核已经没有对应映射,这时重启应用并清理缓存比反复更换节点更有针对性。

常见问题:开关、延迟与关闭后的恢复

开启 FakeDNS 后,为什么域名还是解析成真实 IP?

先检查测试应用的 DNS 入口。浏览器安全 DNS、系统原有 DNS 或客户端的真实解析例外都可能返回真实 IP。用同一个域名分别核对系统查询与应用访问日志,确认它是否被分配给 FakeDNS;不要为了看到假地址而删除必要的内网或服务器域名例外。

返回 198.18 开头的地址,是不是 DNS 被污染了?

先核对地址池配置。若配置为 198.18.0.0/15,这个范围内的回答可能正是 FakeDNS 的预期结果。继续检查映射还原与出站日志;若从未启用此类功能却出现该地址,再查当前 DNS 服务器和网络中的其他接管设置。

FakeDNS 能降低节点延迟、提高下载速度吗?

不能直接改善节点到目标的链路质量。分配假地址可能省去应用等待真实解析的一个环节,但后续仍可能需要真实解析与建连。测试时保持同一节点、同一目标和同一网络,分别记录首次连接与持续传输表现,不要用一次页面打开速度作结论。

关闭 FakeDNS 后,为什么应用还是打不开?

应用可能仍缓存着假地址或保持旧连接。关闭相关应用,恢复原有 DNS 与接管设置,Windows 执行 ipconfig /flushdns 后重新启动应用。若仍失败,再检查路由与 DNS 服务器是否一并恢复;不要只关闭 TUN,让缓存里的假地址继续绕过代理。

最终判断以完整连接链路为准:应用获得了什么地址,哪个入站接管连接,能否恢复域名,规则选择了哪个出站。需要进一步调整路由与代理模式时,可阅读完整手册;初次配置客户端则先按使用指南建立可用基线,再增加 FakeDNS。

按平台下载客户端

选择 Windows、macOS、Android 或 Linux 客户端,先完成订阅导入与基础连接测试,再核对内核和 DNS 接管设置。