先认识 Fake-IP:它改的是解析结果,不是代理出口

Fake-IP 是 mihomo 内核的一种 DNS 增强模式。应用查询域名后,内核可以返回一个保留地址段内的映射 IP;应用连接这个地址时,内核再根据映射找回原域名,继续执行域名规则并选择出站策略。常见的映射范围是 198.18.0.0/16,它不是网站服务器的真实地址,也不代表流量已经成功代理。

设置 Fake-IP 主要涉及两件事:启用 mihomo 的 DNS 模块并将增强模式设为 fake-ip;确保需要使用该解析结果的 DNS 查询确实进入 mihomo。第二点常被忽略:Windows 系统代理主要告诉应用如何连接代理服务器,不等于自动把电脑的全部 DNS 查询交给内核。使用 TUN 时,DNS 接管通常还要结合 TUN 路由和 DNS 劫持设置。

修改前先确认配置来源与 DNS 接管方式

在 Clash Verge Rev 中打开配置(Profiles)页面,确认当前启用的是哪份配置,并保存一份未修改的副本。若当前配置来自远程订阅,直接改动下载到本机的生成文件,可能在更新订阅或切换配置后丢失。优先使用客户端提供的配置编辑、覆写或合并功能;不同版本的菜单名称和按钮位置可能不同,关键是确认修改最终进入了当前生效的配置。

  • 确认当前配置:在配置列表中核对启用状态。不要只编辑列表里未激活的订阅。
  • 确认内核:查看客户端显示的内核名称与版本。若内核启动日志报未知字段或配置解析失败,先检查内核兼容性和 YAML 缩进。
  • 确认流量入口:只使用系统代理时,只有遵循系统代理设置的应用会把连接交给客户端;TUN 则通过虚拟网卡与路由接管流量,但需要正确配置权限、路由和 DNS 劫持。
  • 记录原值:记下现有的 dns、tun 配置,以及 Windows 网卡的 DNS 设置。已有的上游服务器、过滤项或路由设置不要为套用示例而删除。

如果只是想让浏览器使用代理,Fake-IP 未必是必需项;如果依赖域名规则、TUN 接管或希望内核依据映射识别域名,Fake-IP 才更有实际意义。先确定目标,可以避免把 DNS 模式、系统代理和出站策略当成同一个开关。

mihomo DNS 配置:启用 fake-ip 并保留内网例外

下面的片段演示 DNS 字段,不包含节点、代理组或分流规则。将它合并到当前配置已有的 dns: 项中;如果原配置已经有 dns:,不要再新增第二个同级字段,否则可能导致解析失败或部分设置被覆盖。

dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  default-nameserver:
    - 223.5.5.5
  nameserver:
    - https://dns.alidns.com/dns-query
  fake-ip-filter:
    - '*.lan'
    - '*.local'
    - 'router.local'

enable: true 启用内核 DNS 模块,enhanced-mode: fake-ip 选择 Fake-IP,fake-ip-range 指定映射地址范围。上游 DNS 示例使用一个公开解析服务;可以按网络环境替换,但应确保内核能够解析上游服务所需的域名。配置中的上游地址不是代理节点地址,也不是 Windows 网卡必须填写的地址。

fake-ip-filter 用于让特定域名避开 Fake-IP,具体条目应按内核版本支持的格式填写。示例中的局域网后缀和主机名仅作参考;企业内网、路由器、打印机或本地开发域名,应按实际名称添加。不要把常用公网域名随意加入过滤列表,否则相关连接可能不再按预期通过 Fake-IP 映射识别域名。

Windows 操作步骤:编辑、应用并检查生效状态

  1. 备份当前配置:在 Clash Verge Rev 的配置页面确认正在使用的配置,并复制一份原始文件或导出备份。记录当前 DNS 和 TUN 选项,方便出错后恢复。
  2. 打开当前配置的编辑入口:在配置列表中选择已启用的配置,使用该版本提供的编辑或覆写功能。菜单文案可能因版本而异;确认打开的是当前配置,而不是另一份未启用的订阅。
  3. 合并 DNS 字段:把上一节中的字段合并到现有 dns: 下。保留原有上游、策略和其他必要设置,检查缩进:子字段相对 dns: 缩进两个空格,列表项再按 YAML 层级缩进。
  4. 保存并重新加载:保存配置后,在客户端重新加载配置或重启内核。观察启动日志,确认没有 YAML 解析错误、未知字段或 DNS 模块启动失败。
  5. 按需处理 TUN:若目标是让未遵循系统代理的应用也使用内核 DNS,检查 TUN 是否启用,以及当前配置是否包含适用的 DNS 接管设置。mihomo 常见的 DNS 劫持字段是 dns-hijack,但它应放在正确的 tun: 配置层级,并依据当前内核版本和网络环境确认。不要仅凭 DNS 模式已显示为 Fake-IP,就推断 Windows 所有应用的 DNS 都已被接管。
  6. 先小范围验证:保持其他设置不变,用一个普通网站和一个内网域名分别测试;确认结果后再测试日常使用的浏览器、桌面应用或 TUN 场景。每次只改一个因素,便于定位问题。

如果客户端还提供 DNS 或覆写相关的图形设置,应确认它生成的最终配置与手动编辑内容一致。有些界面设置会重新生成配置字段;同时在图形界面和 YAML 中设置同一选项,可能让最终值难以判断。排错时以当前生效配置和内核日志为准,而不是只看输入框里的内容。

验证是否生效:分别检查映射、域名规则与连接

可靠的验证要分开看 DNS 返回值和实际连接。访问网站成功,不足以证明使用了 Fake-IP:应用可能命中了系统缓存、浏览器自带的加密 DNS,或直接沿用已有连接。反过来,解析到 Fake-IP 也只证明该次查询得到映射地址,不保证节点、规则或上游连接可用。

检查位置 应观察的现象 不符合时优先检查
内核启动日志 配置成功加载,DNS 模块没有解析错误或上游超时 YAML 缩进、重复字段、内核版本与上游可达性
DNS 查询结果 确认查询确实发给 mihomo 后,目标域名返回配置的 Fake-IP 地址段 查询是否到达内核、系统或浏览器 DNS 缓存、过滤列表
连接记录与规则 目标连接能显示域名,并命中预期规则和策略 当前模式、规则顺序、策略组选择及应用是否经过客户端
内网服务 路由器、打印机或内部域名仍返回可用的真实地址并能访问 fake-ip-filter 条目、内网 DNS 和本地路由

若配置了本地 DNS 监听地址,可用系统自带的 nslookup 对该监听地址发起查询;只有在内核确实监听本机标准 DNS 端口时,才可直接用 nslookup example.com 127.0.0.1 测试。若监听的是其他端口,这条命令不会自动改用该端口,不应把查询失败误判成 Fake-IP 配置无效。也可以结合客户端 DNS 日志、连接记录和 TUN 测试结果交叉确认。

测试前可关闭浏览器自定义的安全 DNS,或暂时清除相关缓存,再启动新的访问连接。浏览器的 DoH 请求通常经 HTTPS 发送,不是普通的 53 端口 DNS 查询;仅配置 TUN 对 53 端口的 DNS 劫持,不等于自动接管所有应用自带的加密解析。

常见异常与回滚:先恢复可用,再逐项定位

  • 配置加载失败:检查是否新增了重复的 dns:,确认缩进、冒号和列表格式正确;再核对内核是否支持所用字段。恢复备份后逐项合并,避免一次粘贴多个来源的配置。
  • 上网变慢或域名解析超时:在内核日志中查看上游 DNS 错误,确认上游可达。若更换上游,先只改 nameserver 并重新测试,不要同时改变代理模式、节点和 TUN 设置。
  • Fake-IP 返回正常但网站打不开:检查连接记录中的命中规则、出站策略和当前节点;Fake-IP 是解析映射,不会修复不可用节点、规则错误或被防火墙阻断的连接。
  • 内网域名打不开:确认该域名是否需要真实地址解析,必要时将准确的内部域名加入过滤列表,并检查内网 DNS 与路由。不要为解决单个内网域名而关闭所有分流或删除整段 DNS 配置。
  • 关闭 TUN 后仍有连接异常:部分应用可能缓存了 Fake-IP 或维持旧连接。退出并重新打开受影响的应用;需要时在管理员 PowerShell 中执行 ipconfig /flushdns 刷新 Windows DNS 缓存,再重新测试。

回滚时,先在客户端切回已保存的原配置或恢复备份,再重新加载配置;如果曾手动修改 Windows 网卡的 DNS 地址,也要在「设置」→「网络和 Internet」→「高级网络设置」→ 当前网络适配器中恢复原先的自动获取或记录值。随后确认系统代理开关、TUN 状态与 DNS 接管设置均回到预期状态。不要只删除 enhanced-mode 一行而留下依赖 Fake-IP 的其他修改,也不要在排障期间同时运行多个代理客户端。

按“配置能否加载、DNS 查询是否到达内核、连接是否命中预期规则、出站是否可用”的顺序排查,通常比反复重装客户端更快。每完成一项测试,记录修改内容和结果;确认稳定后,再按需恢复浏览器安全 DNS 或其他此前关闭的功能。