Mihomo fake-ip 模式怎么设置?
简答:Mihomo 的 fake-ip 模式在 DNS 配置中设置:启用 `dns.enable: true`,并将 `dns.enhanced-mode` 改为 `fake-ip`。最短路径是先备份当前配置,再加入最小 YAML,保存并重新加载,最后用 DNS 查询确认返回地址是否落在 `fake-ip-range` 内。若配置后仍返回真实 IP,优先检查当前 Profile、客户端 DNS 覆写、监听端口和 TUN 接管状态。
定义:fake-ip 是 Mihomo 的 DNS 处理模式:域名查询时先返回 fake-ip 地址,再由 Mihomo 根据域名映射和规则处理连接;另一种模式是 redir-host,通常直接返回真实解析地址。
先试这一步:加入最小 fake-ip 配置
本文是第三方使用指南站,Mihomo 字段和客户端界面可能随版本变化,以下内容以 Mihomo 当前文档为准。修改前先复制一份原 YAML,避免订阅更新或配置合并后无法回滚。
| 字段 | 作用 | 设置建议 |
|---|---|---|
dns.enable | 启用 Mihomo DNS 处理 | true |
dns.enhanced-mode | 选择 DNS 增强模式 | fake-ip |
fake-ip-range | 分配 fake-ip 的地址池 | 198.18.0.1/16 |
fake-ip-filter-mode | 决定过滤列表的匹配逻辑 | 新手先用 blacklist |
fake-ip-filter | 排除不适合 fake-ip 的域名 | 先加入局域网和本地域名 |
将下面片段合并到当前配置的 dns: 区域,不要在同一份 YAML 中重复创建两个 dns: 顶级字段:
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-mode: blacklist
fake-ip-filter:
- '*.lan'
- '*.local'
- 'localhost'
default-nameserver:
- 223.5.5.5
nameserver:
- https://dns.alidns.com/dns-query
- https://doh.pub/dns-query注意:223.5.5.5、DoH 地址只是示例,是否能从你的网络访问需要自行测试。若上游不可达,应替换为所在网络实际可访问的 DNS;不要因为示例地址无法连接就直接判断 fake-ip 功能失效。Mihomo 文档说明,default-nameserver 用于解析 DNS 服务器自身的域名,nameserver 用于普通域名解析,两者职责不同。
官方文档还说明,fake-ip-range 是 fake-ip 地址池,fake-ip-filter 中的域名不会获得 fake-ip 映射;fake-ip-filter-mode 支持 blacklist、whitelist 和 rule,具体语法应以当前文档为准。查看 Mihomo DNS 字段说明
保存、校验、重载:不要只改完 YAML 就结束
- 备份:复制当前配置文件,并标记为“修改前备份”。如果配置来自订阅或 Merge 模板,还要确认你改的是当前实际加载的 Profile。
- 合并:把
dns:配置放在主配置中;如果客户端有“覆写”“Merge”“高级配置”或“DNS 设置”入口,检查它是否会覆盖 YAML。 - 校验:使用客户端自带的配置检查、重载或测试功能。出现 YAML 缩进、重复字段、端口占用等错误时,先恢复备份,再逐项加入字段。
- 重载:保存后执行客户端的重新加载配置;如果客户端没有热加载,完全退出并重新启动 Mihomo。
- 清缓存:若之前使用过 redir-host,重载后仍看到旧结果,可在客户端执行 DNS 缓存和 fake-ip 缓存清理。Mihomo API 文档列出了 DNS 缓存与 fake-ip 缓存的清理接口,是否能直接使用取决于客户端是否开放外部控制器。查看 Mihomo API 文档
不要把包含订阅链接、访问令牌、控制器密钥或节点信息的完整配置粘贴到公开论坛、在线解析器或截图中。验证时只保留无效占位值。
Windows、macOS、Linux、OpenWrt 怎么验证 fake-ip 是否生效
验证前先确认 listen 的地址和端口。例如上面的配置监听在本机 127.0.0.1:1053;如果该端口被占用,应换成空闲端口,并同步修改测试命令。
| 系统 | 操作 | 预期现象 |
|---|---|---|
| Windows | 打开 PowerShell 或命令提示符,执行 nslookup example.com 127.0.0.1;若工具不能指定端口,可临时把监听端口改为系统可查询的本地 DNS 端口,或使用支持端口参数的 DNS 工具。 | 查询经过 Mihomo;启用 fake-ip 时,A 记录通常应落在配置的 fake-ip 地址池内。 |
| macOS | 终端执行 dig @127.0.0.1 -p 1053 example.com A。 | ANSWER 中的地址应与 198.18.0.0/16 地址池相符,具体地址会随域名和缓存变化。 |
| Linux | 终端执行 dig @127.0.0.1 -p 1053 example.com A +short,再查看 Mihomo 日志。 | 能看到 DNS 请求进入 Mihomo,并返回 fake-ip 地址或被过滤后的真实地址。 |
| OpenWrt | 在路由器上执行 nslookup example.com 127.0.0.1:1053;同时检查 Mihomo 的 DNS 监听、透明代理和防火墙转发是否指向同一端口。 | 终端设备的 DNS 请求确实经过 Mihomo,而不是继续由 dnsmasq 或上游系统 DNS 直接解析。 |
验证时不要只看浏览器能否打开网页。浏览器可能使用自身的安全 DNS、缓存或 DoH,导致测试绕过 Mihomo。更可靠的顺序是:先用 dig、nslookup 或客户端日志确认 DNS 请求,再测试网页和应用连接。
仅系统代理、TUN 和路由器透明代理的区别
仅系统代理:只有遵守系统代理的应用通常会经过 Mihomo。系统代理本身不一定接管所有 DNS 请求,因此即使 enhanced-mode: fake-ip 已启用,某些应用仍可能绕过 Mihomo。
TUN 模式:TUN 会接管更广泛的系统流量,fake-ip 通常与 DNS 劫持、路由和权限设置一起工作。若 TUN 已开启但网页仍直连,检查客户端是否获得系统权限、dns-hijack 是否启用、自动路由是否成功,以及本地 DNS 监听端口是否冲突。Mihomo 的示例配置将 TUN 的 DNS 劫持和 fake-ip DNS 分开配置,不能只改其中一项就假定全部流量已接管。查看 Mihomo 配置示例
路由器透明代理:除了 Mihomo 本身,还要检查路由器的 DHCP、dnsmasq、防火墙和转发链路。终端设备如果仍拿到路由器原 DNS,或者路由器把 53 端口转给其他服务,fake-ip 查询就不会进入 Mihomo。
fake-ip-filter 怎么写:先解决局域网和特殊应用异常
fake-ip 并不是所有域名都适合使用。局域网设备、打印机、路由器管理地址、本地域名和部分依赖真实地址的应用,可能需要加入过滤列表。可先从下面几类开始,再依据日志逐项增加:
*.lan:常见局域网域名。*.local:部分本地发现或局域网服务使用的域名。localhost:本机回环相关名称。- 实际出现异常的 NTP、STUN、游戏、投屏或打印机域名:只加入已确认会出问题的域名,不要一开始把所有域名都加入过滤列表。
在默认的 blacklist 模式下,列表通常表示“这些域名不使用 fake-ip”;在 whitelist 模式下,只有匹配项才返回 fake-ip,误切换模式会让大量域名表现为真实解析。官方文档还提供了 rule 模式,其语法与路由规则一致,适合已经熟悉 RuleSet、GEOSITE 或 DOMAIN 规则的用户,不建议新手直接从复杂规则开始。核对 fake-ip-filter 模式和通配符语法
常见故障分流:看到什么现象就查哪一层
| 现象 | 优先检查 | 处理方法 |
|---|---|---|
| 配置保存后仍返回真实 IP | 当前 Profile、Merge 覆写、enhanced-mode 是否被覆盖 | 在客户端查看运行中的配置,而不是只看本地原文件;删除重复 DNS 字段后重新加载。 |
| 所有域名都无法解析 | 上游 DNS 是否可达、监听端口是否冲突 | 先将 nameserver 换成已测试可访问的上游,分别测试 UDP、TCP 或 DoH/DoT;确认端口没有被其他服务占用。 |
| 局域网、打印机或投屏异常 | 域名是否需要真实 IP 或本地解析 | 把实际异常域名加入 fake-ip-filter,重载后再测试;不要直接关闭整个 DNS 模块。 |
| 节点域名解析失败 | proxy-server-nameserver 和节点域名可达性 | 如果节点域名需要独立解析,按官方字段说明配置专用解析器;该字段只负责代理节点域名解析,不等于普通域名解析器。 |
| 仅 TUN 下断网 | TUN 权限、DNS 劫持、自动路由和回环排除 | 先关闭 TUN 验证系统代理是否正常,再逐项恢复 TUN、DNS 劫持和自动路由,失败时回滚到备份。 |
其中,proxy-server-nameserver 是代理节点域名解析用途;官方文档明确说明,若启用了依赖规则的 DNS 处理,相关 DNS 连接还需要配合节点域名解析配置,否则可能出现节点无法建立连接的现象。不要把这个字段当成所有网站 DNS 的替代品。
最后复测与回滚
- 先确认一个普通域名通过 Mihomo DNS 查询能够返回预期地址。
- 再确认一个局域网或本地服务域名仍能正常访问;如果异常,只过滤该域名。
- 分别测试系统代理和 TUN,不要在两种模式同时改变多项设置。
- 查看 Mihomo 日志,确认请求进入当前实例,而不是被浏览器或系统 DNS 绕过。
- 如果修改后出现持续断网,立即恢复备份,关闭 TUN 或 DNS 接管,先恢复基础网络,再逐项加回 fake-ip 配置。
最小可用的判断标准是:配置能通过客户端校验,DNS 监听端口可查询,普通域名在 fake-ip 地址池内返回映射,局域网和特殊应用通过过滤列表保持可用。不同客户端的菜单名称和默认端口可能不同,以当前客户端界面和 Mihomo 版本为准。
常见问题
Mihomo fake-ip 和 redir-host 有什么区别?
fake-ip 会返回地址池中的映射地址,再由 Mihomo 按域名和规则处理;redir-host 通常直接返回真实解析地址。TUN 或透明代理场景更常见 fake-ip,但局域网和特殊应用可能需要过滤。
为什么已经写了 enhanced-mode: fake-ip,查询仍是真实 IP?
先检查当前实际加载的 Profile,而不是只看原 YAML;然后检查 Merge、客户端 DNS 覆写、fake-ip-filter 模式和缓存。浏览器自带 DoH 也可能绕过 Mihomo,应先用 dig 或 nslookup 查询本地监听端口。
fake-ip-range 可以随便改吗?
不建议随意修改。官方文档将它定义为 fake-ip 地址池,常见示例是 198.18.0.1/16。若确有地址冲突,应先确认路由和局域网网段,再使用客户端和 Mihomo 当前文档支持的地址范围。
局域网设备开启 fake-ip 后找不到怎么办?
先确认设备使用的域名或本地发现名称,再把实际异常的域名加入 fake-ip-filter,例如 *.lan、*.local 或 localhost,保存并重载。不要直接把所有域名都加入过滤列表,否则 fake-ip 的作用范围会被大幅削弱。
仅开启系统代理,需要同时开启 TUN 吗?
不一定。系统代理只影响遵守代理设置的应用;TUN 才会接管更广泛的系统流量,但需要权限、路由和 DNS 劫持配合。先在系统代理模式验证 DNS,再单独开启 TUN 排查,便于定位问题。