Candytally(糖果云)

Mihomo TUN 模式开启后无法上网怎么办?按顺序恢复连接

更新于 2026-11-04 · candytally.buzz

简答:先关闭 TUN,只保留普通 HTTP、SOCKS 或 Mixed 代理,确认节点和配置本身能否连接;如果普通代理正常,再检查 TUN 权限、虚拟网卡、出口网卡、路由和 DNS。不要一开始同时修改 stack、auto-route、strict-route、fake-ip 和自定义 DNS,每次只改一个参数并复测。TUN 已显示运行但网页仍打不开时,优先区分 DNS 失败、规则未命中、路由回环和节点超时。

定义:Mihomo TUN 模式是通过虚拟网卡接管系统流量的运行方式,涉及虚拟网卡、系统路由、DNS 处理和代理节点,不等同于单纯打开系统代理。

先做三步速查:恢复网络,再判断故障层级

本站是面向客户端与网络问题的第三方使用指南站,不是任何客户端或服务品牌的官网。不同图形客户端的按钮名称会随版本变化,以下以“当前配置”“活动配置”“运行配置”“TUN”“日志”等同义入口为准。

现象先做什么成功判据
TUN 一打开就彻底断网关闭 TUN,保留普通代理测试普通代理能打开测试网页或完成域名解析
TUN 显示运行,但所有网页打不开查看日志并检查出口网卡、auto-route、DNS日志不再出现 TUN、DNS、route 或 timeout 连续报错
只有部分域名或应用失败分别测试 IP、域名、规则模式和 DNS能判断是 DNS、规则、IPv6 还是应用不兼容
  1. 在客户端中确认当前启动的是导入后正在使用的配置,而不是另一份旧配置;优先查看“当前配置/活动配置/运行配置”标记。
  2. 关闭 TUN,使用普通代理入口测试节点。若普通代理也失败,先处理订阅、节点、端口或网络问题,不要继续改 TUN。
  3. 普通代理正常后重新开启 TUN,只保留原有配置,记录开启前后的日志、默认网关和 DNS 变化。

官方文档说明,顶层 tun 配置主要负责系统流量接管、自动路由和 DNS 劫持;它与 mixed-port、socks-port 等代理端口不是同一层功能。可参考 Mihomo 入站配置说明。

先分清:TUN 没启动、启动后断网,还是只有部分流量失败

1. TUN 根本没有启动

重点看日志中的 permission denied、cannot create TUN、虚拟网卡创建失败或权限相关信息。Windows 通常需要允许客户端或 Mihomo 核心通过防火墙;macOS 需要允许网络扩展或 VPN 权限;Linux 需要确认当前用户具备创建 TUN 和配置路由的权限;Android 则需要接受系统 VPN 请求。

图形客户端如果有“以管理员身份运行”“服务模式”“允许网络扩展”或“VPN 权限”入口,应先完成权限授权,再重启客户端。若客户端没有这些入口,不要直接套用其他客户端的菜单名称,以当前版本界面和官方说明为准。

2. TUN 已启动但全局断网

优先检查是否选错出口网卡、路由回环或系统中存在第二个 VPN、虚拟网卡、流量过滤器。Mihomo 文档指出,auto-detect-interface 会自动选择流量出口;多网卡同时连接时,建议核对或手动指定实际联网的出口接口。官方 TUN 字段说明还说明,auto-route 会把全局流量导入 TUN,因此配置错误时可能表现为整体断网。

3. 只有部分应用或域名失败

这时不要直接把规则模式改成 Global。Rule、Global、Direct 主要决定流量如何选择出口,而 TUN 决定系统流量是否被接管,两者不是同一个开关。先分别测试域名解析、IP 访问、浏览器和目标应用,再决定是否检查规则、DNS、IPv6 或应用自身的代理设置。

按日志关键词分流排查

日志或现象优先检查处理与复测
permission denied管理员权限、VPN 或网络扩展权限、防火墙授权后完全退出客户端,再重新启动 TUN
cannot create TUN虚拟网卡、残留核心进程、其他 VPN 或安全软件退出重复运行的客户端与 VPN,重新创建 TUN
address already in use端口或旧进程占用关闭旧核心,确认只有一个实例,再启动
YAML、配置解析错误缩进、字段层级、字段拼写撤销最近一次修改,恢复上一份能启动的配置
DNS、解析超时dns.enable、dns-hijack、Fake-IP、系统 DNS先临时回到原 DNS 配置,再只改一个 DNS 参数
timeout、节点连接超时节点域名解析、出口网络、规则和节点本身关闭 TUN 测试同一节点;普通代理也超时则转查节点或本地网络
日志显示 listening,但网页打不开路由、DNS、规则、IPv6 或出口网卡先测 IP 与域名,再检查默认路由和 DNS

排障时不要同时更换节点、改 DNS、改 MTU 和切换 stack。每次只做一个改动,并记录“改动前现象—改动项—复测结果”,这样才能知道真正起作用的配置。

Mihomo TUN 配置怎么逐项恢复

建议先备份当前配置,再从最少字段开始恢复。下面的顺序用于定位,不代表所有平台都必须使用同一组值。

  1. 先确认接管:仅确认 tun.enable: true 是否能创建虚拟网卡;暂时不要添加自定义路由、MTU、IPv6 或复杂的分流条件。
  2. 再确认路由:检查 auto-route 是否开启,以及 auto-detect-interface 选到的是否是当前实际联网网卡。电脑同时连接有线、Wi-Fi、虚拟机网卡或手机热点时,尤其要核对这一项。
  3. 再处理 DNS:检查 dns.enable、enhanced-mode、dns-hijack 和 fake-ip-filter。官方 DNS 文档说明,Fake-IP 与 Redir-Host 是两种不同的 DNS 处理模式;不要因为“能看到 Fake-IP”就判断节点或 TUN 已经正常。参考 Mihomo DNS 配置说明。
  4. 最后尝试 stack:如果当前 stack 与防火墙、应用或系统兼容性有关,再一次只切换一个 stack。官方文档指出,system 与 mixed 在防火墙开启时可能需要放行核心程序;Windows、macOS、Linux 的处理方式不同。
  5. 最后才改 strict-route:strict-route 会强化路由约束。Windows 下它与 DNS 泄漏防护有关,但也可能让某些虚拟机或特殊网络应用出现兼容性问题;Android 下它还与 DNS 劫持能否工作有关。改动后必须立即复测常用应用和局域网资源。

Linux 使用 dns-mode: hijack 时,还要注意官方文档列出的平台条件:Linux 需要配合 auto-redirect;Windows 使用 DNS 劫持时需要 strict-route。因此不要把一段 Windows 配置原样复制到 Linux 或 Android。

DNS、Fake-IP 与 TUN 断网怎么验证

  1. 先测 IP:在关闭 TUN 和开启 TUN 两种状态下访问一个已知可用的 IP 测试地址。若 IP 可访问、域名打不开,优先怀疑 DNS,而不是节点完全失效。
  2. Windows:运行 ipconfig /all 查看当前 DNS 与网卡,再用 nslookup example.com 观察是否能返回地址。测试结束后可用 ipconfig /flushdns 清理本地 DNS 缓存。命令只能说明系统解析结果,不能单独证明所有应用都经过了 Mihomo。
  3. macOS:用 scutil --dns 查看解析器,用 route -n get default 查看默认出口。若 TUN 开启后默认出口变化异常,先关闭自定义路由和多余 VPN,再复测。
  4. Linux:查看 ip route 与 resolvectl status,确认默认路由和 DNS 服务器没有指向已经不存在的接口。
  5. Android:检查系统“私人 DNS”。官方文档说明,Android 开启私人 DNS 时,DNS 请求可能无法被自动劫持;应先临时改为自动进行对比测试,再决定是否保留。不要把某个公共 DNS 地址当成所有网络环境的通用答案。

DNS 选择应按网络环境复测:本地网络、出口节点所在地区和目标域名类型都会影响结果。先使用原配置建立基线,再修改一个 nameserver、fallback 或 proxy-server-nameserver 项。官方文档说明,proxy-server-nameserver 专门用于解析代理节点域名,配置不当可能形成“节点域名无法解析”的循环问题。

Windows、macOS、Linux、Android 的回滚顺序

设备先恢复什么仍失败时检查什么
Windows关闭 TUN,关闭系统代理或恢复原代理设置管理员权限、防火墙放行、默认路由、其他 VPN、网卡优先级
macOS关闭 TUN 与网络扩展,确认 Wi-Fi 或有线网络恢复网络扩展权限、utun 接口、默认路由、系统 DNS
Linux关闭 TUN,清理由客户端创建的路由或重启网络服务权限、iptables/nftables、auto-redirect、默认路由和 DNS
Android停止 VPN,关闭私人 DNS进行对比VPN 权限、电池限制、应用分流、include/exclude package

如果关闭 TUN 后网络仍未恢复,先退出所有重复运行的 Mihomo 核心和其他代理工具,再重新连接 Wi-Fi 或有线网络。不要在网络尚未恢复时继续修改配置,否则可能把残留路由、系统代理和新配置混在一起。

复测清单:确认不是“看起来已连接”

  • 普通代理模式下,同一节点可以连接。
  • TUN 虚拟网卡已创建,日志没有持续的权限或路由错误。
  • 域名解析与 IP 访问都能完成。
  • 浏览器、命令行和至少一个原本失败的应用分别测试过。
  • 检查 Rule、Global、Direct 后,确认规则命中结果与预期一致。
  • 关闭 TUN 后,系统代理、默认路由和 DNS 能恢复到原状态。
  • 若问题仍存在,保留客户端版本、系统、配置片段、日志关键词和复现步骤;分享日志前删除订阅地址、节点密码、UUID、密钥和个人 IP。

若需要核对核心版本或变更记录,应直接查看 Mihomo 官方发布页;本文不把未核实的版本号或客户端界面行为写成固定规则。

常见问题

开启 TUN 后断网,先换节点还是先改 DNS?

先关闭 TUN 测试同一节点。普通代理也失败,优先查节点、订阅、端口或本地网络;普通代理正常而 TUN 失败,才进入权限、路由和 DNS 分支。这样可以避免把 TUN 接管问题误判为节点问题。

TUN 显示运行,为什么还是打不开网页?

“运行”通常只说明虚拟网卡或核心已经启动,不代表 DNS、规则、出口网卡和节点链路都正常。先用 nslookup、系统路由查看命令和客户端日志分别确认解析、路由与节点连接。

需要把 stack 改成某个固定值吗?

不能一概而论。stack 与系统、应用、内核和防火墙存在兼容性差异,先保持当前值;只有日志或复测明确指向协议栈兼容性时,才一次切换一个值并回滚验证。官方 TUN 文档列出了不同 stack 的行为差异,应以当前核心文档为准。

fake-ip 会不会直接导致所有网络断开?

Fake-IP 本身不等于故障,但 DNS、规则、fake-ip-filter 与应用兼容性组合不当时,可能表现为域名失败或部分应用异常。先对比 Redir-Host 或原 DNS 配置,确认是域名解析问题后再调整过滤规则。

为什么 Windows、macOS、Linux 的同一份 TUN 配置不能直接照搬?

因为 DNS 劫持、路由、防火墙和虚拟网卡由操作系统分别处理。官方文档明确区分了 Windows、macOS、Linux 和 Android 的 dns-mode、strict-route、auto-redirect 条件,配置应按设备逐项核对。

常见问题

Mihomo TUN 开启后无法上网,第一步做什么?

先关闭 TUN,使用同一节点和普通代理测试。如果普通代理正常,问题集中在权限、虚拟网卡、路由或 DNS;如果普通代理也失败,应先排查节点、订阅或本地网络。

TUN 显示已启动但网页打不开怎么办?

分别测试 IP 和域名,再查看系统路由、DNS 与 Mihomo 日志。IP 可访问而域名失败时优先查 DNS、Fake-IP 和 DNS 劫持;全部超时时再查出口网卡、路由和节点。

Windows 开启 TUN 后 DNS 异常怎么处理?

确认核心程序已通过防火墙,检查 <code>strict-route</code> 与 DNS 配置,并用 <code>ipconfig /all</code>、<code>nslookup</code> 对比开启前后的解析结果。每次只改一个配置项。

Android 开启 TUN 后部分应用不能联网怎么办?

先检查系统 VPN 权限、私人 DNS、应用分流和 include/exclude package。Android 开启私人 DNS 时,DNS 请求可能无法被自动劫持,应先临时改为自动进行对比测试。

排查完成后如何恢复原网络?

关闭 TUN,退出重复运行的核心和其他 VPN,恢复系统代理与 DNS,再检查默认路由。若仍无网络,重连当前 Wi-Fi 或有线网络后再复测。

相关阅读

参考资料

  1. Mihomo 官方文档:TUN 配置
  2. Mihomo 官方文档:DNS 配置
  3. Mihomo 官方文档:入站配置
  4. Mihomo 官方发布页