跳到正文
进阶原理 预计阅读 12 分钟

Clash Fake-IP 模式原理:与 redir-host 的差异及适用场景

拆解 Fake-IP 如何用保留地址段映射域名、减少 DNS 往返,并说明 fake-ip-filter 的作用及与局域网设备冲突时的处理。

Fake-IP:先返回映射地址,再处理真实连接

在 Clash 或 mihomo 配置里看到 enhanced-mode: fake-ip,表示内核的 DNS 模块可以为域名分配一个合成地址。这个地址不是网站服务器的公网 IP,而是内核查找域名映射的索引。应用随后连接这个地址时,流量必须再次进入同一个内核,才能恢复域名并继续处理。

常见配置使用 198.18.0.1/16 作为 fake-ip-range。它位于用于网络基准测试的保留地址块 198.18.0.0/15 内,不是普通公网网站地址,也不是 192.168.0.0/16 那类私有局域网地址。看到它出现在 DNS 结果里,不能直接判断为解析错误。

一次访问经过哪些步骤

  1. 应用查询 example.com,请求进入内核 DNS。
  2. 内核建立域名与合成地址的映射,向应用返回该地址,例如 198.18.0.10。此处数字仅为示意,实际分配结果不固定。
  3. 应用发起到该地址的连接,TUN 等接管路径把连接送回内核。
  4. 内核恢复 example.com,按规则选择直连或代理;需要真实地址时,再按对应的出站和 DNS 设置解析。

Fake-IP 与 redir-host 的核心差异

redir-host 通常先查询上游 DNS,再向应用返回真实 IP。内核会尝试利用 DNS 记录关联域名,但同一 IP 可能承载多个域名,关联信息也可能缺失。Fake-IP 用专门的映射保留域名,通常更利于按域名分流,不过它要求连接路径完整。

比较项 Fake-IP redir-host
应用获得的 DNS 地址 通常是地址池分配的合成地址;过滤域名例外。 通常是上游解析得到的真实地址。
返回 DNS 答案前 未命中过滤规则时,通常不必先等待真实 A 记录。 通常需要等待真实解析结果或使用缓存。
域名识别 可通过合成地址映射恢复域名。 依赖 DNS 关联、请求中携带的域名或嗅探等信息。
兼容性关注点 应用是否接受合成地址,连接是否回到内核。 上游解析质量、真实地址可达性与域名关联完整性。

“减少 DNS 往返”不等于完全不解析

Fake-IP 减少的是部分场景下应用等待真实解析的前置步骤。若规则直接按域名选中代理,且出站协议能把域名交给远端处理,本地可以避免一次用于获取目标真实 IP 的查询。但直连出口通常仍需真实地址;IP 类规则、过滤域名和其他解析需求,也可能触发上游查询。

因此不能承诺固定节省多少毫秒。缓存命中率、上游 DNS 延迟、节点位置和连接复用都会影响结果。对比两种模式时,应使用同一网络、同一节点和同一域名,分别记录 DNS 耗时与网页首字节耗时,不要把一次测速结果当作普遍结论。

mihomo 配置:区分 DNS 监听与代理端口

下面是用于说明字段的 YAML 片段,适用于支持这些字段的 mihomo 配置。它不包含节点、代理组与规则,不能作为完整订阅使用。将字段合并到现有配置时,保留原有出站设置;图形客户端可能通过覆写功能生成最终配置,应以当前生效配置为准。

mixed-port: 7890
mode: rule

dns:
  enable: true
  listen: 127.0.0.1:1053
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "localhost"
    - "+.lan"
    - "+.local"
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  • mixed-port: 7890:提供 HTTP 与 SOCKS 混合代理入口,不是 DNS 端口。实际端口以客户端显示为准。
  • listen: 127.0.0.1:1053:仅在本机监听 DNS,方便定向测试。Windows 网卡 DNS 通常使用 53 端口,不能只填 127.0.0.1 就自动访问 1053。
  • ipv6: false:控制此 DNS 模块对 AAAA 查询的处理,不等于关闭 Windows 的 IPv6 协议栈。
  • nameserver:列出上游解析器。示例使用普通 DNS,不代表已启用加密 DNS,也不保证在每个网络都可达。

订阅更新可能覆盖直接编辑的配置。若客户端提供“覆写”或配置合并入口,优先通过该入口修改 DNS 字段。保存后重新加载配置,并查看日志是否出现 YAML 解析错误、监听失败或上游请求超时;界面上的开关状态不能代替生效配置检查。

fake-ip-filter:只给需要真实地址的域名例外

在通常的过滤语义下,fake-ip-filter 命中的域名不分配 Fake-IP,而是走真实解析。mihomo 还支持通过 fake-ip-filter-mode 调整匹配语义;若配置使用了该字段,应先核对当前版本文档与实际值,不要套用默认黑名单语义进行判断。

先定位具体域名,再添加过滤

  • 局域网管理界面:先确认设备实际使用的主机名,例如 nas.home.arpa,再为该名称或必要后缀添加例外。
  • 企业内部服务:确认公司 DNS 能解析内部域名,必要时通过 nameserver-policy 指向公司解析器。
  • 依赖真实解析结果的应用:从日志中找到失败域名,逐项添加,保留其余域名的 Fake-IP 行为。

+.lan 表示匹配该后缀相关域名,并不是所有本地设备的通用识别器。.local 常用于 mDNS,涉及组播发现;把 +.local 加入过滤,不会自动把普通上游 DNS 变成 mDNS 转发器。打印机发现失败时,还要检查应用的发现机制、防火墙和所在网段。

过滤规则也不等于直连规则。它只决定 DNS 是否返回合成地址,不负责把连接指定为 DIRECT。如果 NAS 域名需要直连,应另行配置对应域名规则;如果只有公司 DNS 知道真实地址,还需要正确的解析器选择。把整个过滤列表扩大到所有域名,会削弱 Fake-IP 的作用,却未必解决真正的路由问题。

TUN、系统代理与加密 DNS 的配合

Fake-IP 是 DNS 工作模式,TUN 是流量接管方式,两者不是同一个开关。TUN 模式通常更适合接管应用向合成地址发起的连接;系统代理则主要影响遵循 Windows 代理设置的应用。只启用系统代理,不代表所有程序的 DNS 和连接都会进入内核。

按请求路径检查四个位置

  1. Windows DNS:在 Windows 11 打开「设置」→「网络和 Internet」→ 当前连接的「属性」→「DNS 服务器分配」,确认使用的解析器。不同系统版本的页面文字可能略有差异。
  2. 客户端 TUN:确认虚拟网卡已建立、服务正常,且路由覆盖所用的 Fake-IP 地址池。需要服务权限的客户端应先完成对应服务安装。
  3. DNS 劫持:检查生效配置中的 tun.dns-hijack。常见的 53 端口劫持不能自动接管所有应用内 DoH 请求。
  4. 浏览器安全 DNS:在 Microsoft Edge 打开「设置」→「隐私、搜索和服务」→「安全性」,检查“使用安全的 DNS”相关选项。受组织管理的设备可能由策略控制。

浏览器直接向外部 DoH 服务查询时,可能得到真实 IP,绕过内核的 Fake-IP 分配。网站仍可能打开,但这条连接不一定拥有预期的 DNS 映射。域名嗅探有时能补充信息,却不能保证恢复所有协议中的域名。诊断时可以暂时关闭应用自己的安全 DNS 做对照,确认原因后再决定统一解析路径或保留独立解析。

Windows 验证:查询、连接与日志分开看

先测试内核 DNS 是否按预期回答,再测试应用连接。针对上面的 1053 监听示例,在 PowerShell 或命令提示符中启动 nslookup,依次输入以下命令。交互模式的端口设置用于本次测试,不会修改 Windows 网卡 DNS。

nslookup
server 127.0.0.1
set port=1053
set type=A
example.com
exit

在未命中过滤规则、配置已正确加载的情况下,答案应落在配置的 Fake-IP 地址池内。不要要求一定返回某个固定末位数字。若显示超时,先查 DNS 是否启用、监听地址是否一致,以及内核日志;若返回真实 IP,先查过滤规则和生效的 enhanced-mode。

切换模式后清理旧状态

ipconfig /flushdns

这条命令清理 Windows DNS 客户端缓存,不会清理所有浏览器缓存、应用连接池或内核映射。切换 Fake-IP 与 redir-host 后,还应关闭受影响应用的旧连接,必要时重启应用。若重载配置导致映射失效,但应用仍持有旧合成地址,就可能出现短暂失败。

随后在客户端「连接」页查看目标域名、匹配规则、策略组和出站节点。DNS 返回合成地址但连接列表没有对应记录,重点检查流量是否进入内核;连接已有记录但失败,则继续查看真实解析、节点连通性和出站错误。不要仅凭 ping 的结果判断网页代理是否正常,ICMP 与浏览器的 TCP、UDP 请求不是同一条验证路径。

局域网冲突与模式选择

如果某个 VPN、实验环境或公司网络已经使用 198.18.0.0/15 内的地址,Fake-IP 路由可能与真实目标冲突。先执行 route print,检查目的网段、接口和跃点数,再结合 VPN 配置确认地址用途。不要看到保留地址就直接删除系统路由。

现象 优先处理
公网网站正常,NAS 域名失败 检查 NAS 域名的真实解析器、过滤例外和直连规则。
拿到合成地址,所有连接都失败 检查 TUN 路由、应用绕行和内核映射是否仍有效。
启用公司 VPN 后部分地址不可达 检查地址池与 VPN 路由重叠,按网络管理要求调整。
只有特定应用拒绝合成地址 先添加最小范围过滤例外,再评估 redir-host。

调整 fake-ip-range 时,必须同时确认新地址范围不会与真实网络冲突,且接管路由与排除规则同步更新。不要随意改成正在使用的家庭局域网网段。如果无法协调公司 VPN 与虚拟网卡策略,切换到 redir-host 可以作为兼容性对照,但仍需验证域名规则、解析质量和内部服务访问。

对主要依赖域名分流、能够完整接管 DNS 与连接的 Windows 环境,可以优先测试 Fake-IP。对需要保留真实 DNS 答案、存在特殊局域网发现机制或受企业网络策略约束的环境,先做域名级例外;例外仍无法满足要求时,再评估 redir-host。选择依据应是实际请求路径和应用兼容性,而不是把某一种模式视为所有网络的固定答案。

Clash下载