Mihomo TUN 模式无法访问局域网怎么办?
简答:先关闭 TUN 做对照:如果局域网立即恢复,优先检查 auto-route、strict-route 和真实内网 CIDR。然后只把目标设备或实际网段加入 route-exclude-address,重载配置并用 IP、域名和系统路由分别验证;allow-lan 主要控制其他设备使用本机代理,不负责本机绕过 TUN 访问局域网。
定义:Mihomo TUN 局域网访问失败,是系统访问路由器、NAS、打印机或内网服务时被 TUN 路由、严格路由或 DNS 处理接管而无法建立连接的故障。
先做四步速查:不要一上来排除全部私网
- 关闭 TUN 做对照:保留普通代理或直接关闭代理,访问同一个局域网 IP,例如路由器管理地址、NAS 地址或打印机地址。关闭 TUN 后仍打不开,问题不一定在 Mihomo,应先检查 Wi-Fi、网线、设备防火墙和局域网本身。
- 确认目标 IP 与真实网段:记录目标设备 IP、子网掩码和网关。例如设备为
192.168.50.20、掩码为255.255.255.0,通常应先按192.168.50.0/24验证,而不是直接套用大范围私网段。 - 先排除单个地址:在
tun.route-exclude-address中暂时加入目标设备的/32地址。官方文档将该字段定义为在启用auto-route时排除自定义子网;具体字段名称和支持情况仍需以所用核心版本为准。Mihomo TUN 配置文档 - 重载并复测:关闭再开启 TUN,或通过客户端的配置重载功能应用修改。成功判据是目标 IP 能打开、路由表显示流量走实际局域网接口,且开启 TUN 后外网仍按原计划工作。
本文是站点整理的 Mihomo 使用排查指南,不代表任何客户端或服务品牌的官方说明。配置示例仅用于说明思路,不能替代对当前 Mihomo 核心版本、操作系统和客户端界面的核对。
先分流:局域网打不开、域名打不开和全网断开不是一回事
| 现象 | 优先怀疑 | 第一项验证 | 成功判据 |
|---|---|---|---|
| 只有路由器、NAS或打印机打不开,外网正常 | 局域网目标被 TUN 路由接管 | 关闭 TUN访问目标 IP,再测试单个 /32 排除 | 开启 TUN 后目标 IP仍可访问 |
| IP能访问,内网主机名打不开 | 内网 DNS、.lan、.local或 Fake-IP | 分别测试 IP、短主机名和完整域名 | IP与域名解析结果符合内网 DNS预期 |
| 开启 TUN后所有网站和局域网都打不开 | 权限、虚拟网卡、系统路由、防火墙或多 VPN冲突 | 关闭 TUN,查看 Mihomo 日志和系统路由变化 | 关闭 TUN后系统网络恢复,重新开启后错误不再出现 |
| 只有一台电脑或一部手机打不开 | 本机防火墙、应用排除、网卡或私有 DNS设置 | 换另一台同网设备访问同一目标 | 可区分是单设备故障还是全局路由故障 |
如果开启 TUN 后完全断网,不要先扩大 route-exclude-address。先记录客户端日志、TUN 网卡状态、当前配置和路由表,再回滚到开启 TUN 前的配置,避免把全局路由问题误判成局域网问题。
配置 route-exclude-address:从单个设备到真实网段
下面是仅示意、需按实际网段替换的配置片段:
tun:
enable: true
auto-route: true
auto-detect-interface: true
route-exclude-address:
- 192.168.50.20/32先使用目标设备的单个地址验证。如果 192.168.50.20/32 有效,再根据本机真实子网扩大为类似下面的范围:
tun:
route-exclude-address:
- 192.168.50.0/24常见私有地址范围包括 192.168.0.0/16、10.0.0.0/8 和 172.16.0.0/12,但不应在没有核对本机路由表的情况下全部排除。公司 VPN、虚拟机网卡、容器网络、热点共享和第二个局域网可能也使用这些范围,盲目排除会造成路由冲突或让本应进入代理的流量直连。
修改后的验证顺序:
- 保存原配置副本,记录修改前的
tun段。 - 加入一个
/32目标地址并重载配置。 - 开启 TUN,访问目标 IP;不要先用浏览器域名判断。
- 如果成功,再扩大到实际 CIDR;如果失败,删除新增项并回滚。
- 查看日志中是否出现 TUN 启动失败、路由添加失败、权限错误或连接被重新捕获。
官方文档还说明,strict-route 会在启用 auto-route 时执行更严格的路由规则;Windows 下它会添加用于阻止普通多宿主 DNS 解析造成泄漏的防火墙规则,并可能影响某些虚拟化应用。因此,如果局域网设备、虚拟机或公司内网在开启严格路由后异常,应将该字段作为单独变量测试,而不是同时修改多个配置。官方 TUN 字段说明
不要混淆四个设置:路由排除、DIRECT、Fake-IP 与 allow-lan
| 设置 | 主要作用 | 不能代替什么 |
|---|---|---|
route-exclude-address | 在自动路由下排除指定目标地址或子网,让该流量不按 TUN 的默认路由处理 | 不能自动修复错误的内网 DNS或设备防火墙 |
规则中的 IP-CIDR,...,DIRECT | 决定已经进入 Mihomo 规则处理的连接使用直连策略 | 不能保证系统层面的 TUN 路由一定绕过 |
fake-ip-filter | 控制哪些域名不返回 Fake-IP;官方 DNS 文档列出该字段支持域名通配和域名集合 | 不能替代正确的目标 IP 路由 |
allow-lan | 允许其他设备通过本机代理端口访问网络 | 不等于允许本机访问局域网,也不等于绕过 TUN |
官方全局配置文档将 allow-lan 定义为允许其他设备经过 Clash 代理端口访问互联网,并由 bind-address、lan-allowed-ips 等字段进一步限制访问范围。因而,本机访问 NAS 失败时,单纯把 allow-lan 改为 true 通常不是第一排查点。Mihomo 全局配置文档
IP能通但内网域名不通:再查 DNS 与 Fake-IP
把“连接失败”拆成两次测试:第一步直接访问设备 IP;第二步访问主机名或内网域名。若 IP能通、域名不通,优先检查内网 DNS,而不是继续扩大路由排除范围。
- 确认内网域名实际使用的 DNS服务器,例如路由器地址或公司 DNS地址;不要把公共 DNS能解析公网域名误认为它能解析内网域名。
- 检查
dns.enhanced-mode是fake-ip还是redir-host,并核对fake-ip-filter是否包含实际使用的内网域名后缀。 - 对于
.lan、.local或公司内部域名,先做一个最小范围的过滤项测试,不要把所有域名都加入白名单。 - 清理 DNS 和 Fake-IP 缓存后重新解析。若客户端提供控制器 API,官方文档列出了
/cache/fakeip/flush与/cache/dns/flush接口;是否开放以及接口地址取决于当前客户端配置。Mihomo API 文档
Windows 和 macOS 不能自动劫持发往局域网的 DNS 请求,Android 开启“私人 DNS”时也可能无法自动劫持 DNS;这些行为在官方 TUN 文档中有明确说明。遇到“IP通、域名不通”时,应同时记录 DNS服务器、解析结果、客户端模式和系统 DNS设置。官方 DNS 劫持说明
Windows 路由验证:确认目标走哪块网卡
适用范围:Windows 10、Windows 11以及支持 NetTCPIP 模块的 Windows 环境。请在 PowerShell 中执行只读查询,不要在未备份前直接删除系统路由。
Get-NetRoute -AddressFamily IPv4
Find-NetRoute -RemoteIPAddress 192.168.50.20
route printGet-NetRoute用于查看 IP 路由信息,包括目标前缀、下一跳和路由指标;Find-NetRoute可查找访问指定目标地址时使用的地址和路由;route print可显示接口和路由表。相关命令的参数和适用系统请以 Microsoft Learn 为准。Get-NetRoute Find-NetRoute route print
成功判据:目标地址对应的路由应指向实际局域网接口,而不是只指向 Mihomo 的 TUN 虚拟网卡。若目标地址仍被导向 TUN,回到 route-exclude-address、auto-route 和 strict-route 检查;若路由正确但仍失败,再查 Windows 防火墙、目标设备服务端口和内网 DNS。
macOS、Linux 与 Android 的差异化排查
- macOS:先确认 TUN 设备名称符合当前平台要求;官方文档说明 macOS 的 TUN 设备名只能使用
utun开头。多网卡环境下,检查auto-detect-interface是否选择了正确出口;需要同时使用有线、Wi-Fi或虚拟网卡时,不要默认自动选择一定正确。 - Linux:
auto-redirect仅适用于 Linux,并要求同时启用auto-route;如果使用路由器、容器或 nftables,应把系统防火墙规则、TUN接口和实际出接口分开记录。官方文档还说明,Linux 的route-exclude-address-set涉及 nftables,并不是所有平台都适用。Linux TUN字段说明 - Android:检查私人 DNS、应用排除项和 VPN 权限。官方文档列出
include-package、exclude-package等 Android 应用范围字段;如果只有某个应用访问不了,先确认是否被排除或未被纳入 TUN,而不是修改整个局域网路由。
修改无效时的失败分支与回滚清单
- 单个 /32 无效:删除该项,关闭 TUN,确认设备 IP仍在线;检查设备是否更换了 DHCP 地址。
- 网段排除后外网异常:立即回滚到原配置,说明排除范围可能覆盖了公司 VPN、虚拟机或其他需要代理的地址。
- 配置能保存但 TUN不启动:核对字段缩进、字段名称和当前核心版本;官方文档同时保留了部分旧版 inet4/inet6 排除字段说明,不同客户端界面可能映射不同,不能把旧字段直接复制到所有版本。
- 重载后仍像旧配置:通过当前客户端的运行配置或控制器确认实际生效的
tun段;官方 API 文档列出/configs用于读取运行配置,具体访问权限取决于external-controller和密钥设置。运行配置 API 说明 - 只有开启防火墙时失败:检查 Mihomo 核心是否被系统防火墙拦截。官方 TUN 文档指出,Windows 使用某些协议栈时可能需要允许核心通过防火墙。
建议保留一份“修改前配置、修改后配置、客户端版本、操作系统、目标 IP、路由查询结果和日志片段”。这样即使本次排查失败,也能准确回滚并避免重复修改。
结论:先定位层级,再扩大排除范围
Mihomo TUN 无法访问局域网时,最稳妥的顺序是:关闭 TUN做对照,确认目标 IP和真实 CIDR,使用单个 /32 验证,再扩大到实际网段;随后分别检查规则中的 DIRECT、Fake-IP DNS、allow-lan、系统路由和防火墙。不要把所有私网段一次性加入排除列表,也不要把“允许其他设备使用本机代理”当成本机局域网访问开关。
如果你的问题属于跨设备办公、远程访问内网或多网卡环境下的连接诊断,可在完成上述基础验证后,再记录延迟、丢包、网关、MTU和实际出口接口,避免只凭“能否打开网页”判断 TUN 是否正常。
常见问题
Mihomo 的 allow-lan 改成 true 就能访问局域网吗?
不能直接这样判断。allow-lan 主要控制其他设备是否可以通过本机代理端口访问网络,不等于本机绕过 TUN,也不负责修复本机到路由器、NAS或打印机的系统路由。
route-exclude-address 应该填写 192.168.0.0/16 吗?
不建议盲目填写。先确认目标设备 IP、子网掩码和网关,优先使用目标地址的 /32 验证,再扩大到实际 CIDR。过大的排除范围可能影响公司 VPN、虚拟机、容器或其他需要代理的流量。
为什么 NAS 的 IP 能打开,但 nas.lan 打不开?
这通常更像内网 DNS或 Fake-IP 过滤问题,而不是基础路由问题。请分别测试 IP、主机名和完整域名,核对内网 DNS服务器,并检查 fake-ip-filter 是否覆盖实际域名后缀。
开启 strict-route 后局域网和虚拟机都异常怎么办?
先记录当前配置并关闭 TUN做对照,再单独测试 strict-route。官方文档说明 Windows 下严格路由可能影响某些应用,例如虚拟化软件;不要同时修改多个字段,否则无法判断是哪项设置造成影响。
配置修改后为什么看起来没有生效?
可能只是编辑了文件但没有重载运行配置,也可能客户端使用了另一份配置。请确认当前运行配置中的 tun 段、重启或重载 TUN,并记录客户端日志;如果支持控制器,可按官方 API 文档读取运行配置。
相关阅读
- Mihomo TUN 模式启动失败时,先查权限、虚拟网卡与路由
- 继续检查 Mihomo DNS、Fake-IP 与解析失败
- 理解 Mihomo 规则分流与 DIRECT 的区别
- 需要排除 Fake-IP 时查看关闭方法与回退步骤
- Windows 系统代理也异常时,继续核对地址、端口和脚本