TUN模式无法上网怎么办?按权限、路由和DNS逐步排查
简答:TUN模式无法上网时,先关闭TUN并启用客户端的普通HTTP、SOCKS或Mixed代理:如果普通代理也无法访问,优先检查订阅、节点和核心;如果普通代理正常而TUN失败,再检查虚拟网卡权限、路由接管、DNS和其他VPN冲突。最安全的顺序是“先恢复网络,再只改一个设置,最后复测并保留回滚路径”。
定义:TUN模式是一种通过虚拟网络接口接管系统流量的工作方式,故障通常集中在虚拟网卡、路由、DNS、权限或其他网络软件冲突,而不一定是节点本身失效。
先做这一步:用普通代理判断是不是TUN本身的问题
不要一开始就修改MTU、堆栈或系统路由。先保存当前配置,然后关闭TUN,启用客户端提供的普通HTTP、SOCKS或Mixed代理,再打开一个平时能够访问的网页或应用。
- 普通代理也无法访问:问题更可能在订阅、节点、核心进程、规则或上游网络,暂时不要继续改TUN参数。
- 普通代理正常,TUN无法启动:优先检查管理员权限、VPN权限、虚拟网卡、服务模式和其他网络软件冲突。
- TUN显示已启动但网页打不开:优先检查默认路由、自动选择出口网卡、DNS接管和规则命中。
- 只有域名打不开、直接IP或部分应用正常:优先检查DNS、浏览器自带安全DNS、Android私人DNS或应用独立代理。
在支持这些字段的内核中,TUN负责接收系统流量;例如相关文档将auto-route定义为自动设置全局路由,将流量导入TUN,将auto-detect-interface用于自动选择出口网卡。不同客户端的界面名称可能不同,不能把某个客户端的菜单路径直接套用到所有软件。可参考Mihomo TUN配置文档和sing-box TUN配置文档,访问日期:2026年11月10日。
按症状快速分流:先查哪一层
| 现象 | 优先检查 | 暂时不要做 |
|---|---|---|
| 开关灰色、点开立即关闭 | 权限、系统VPN授权、虚拟网卡、客户端日志 | 不要先改DNS或MTU |
| TUN已启动但全网断开 | 默认路由、出口网卡、其他VPN、严格路由 | 不要连续修改多个路由字段 |
| 只有域名打不开 | DNS模式、DNS劫持、浏览器安全DNS、私人DNS | 不要直接删除系统DNS |
| 只有部分应用异常 | 应用独立代理、规则、IPv6、QUIC/UDP和绕过设置 | 不要断定是节点速度问题 |
| 重启后恢复,重新开启又失败 | 服务模式、权限持久化、残留路由和虚拟网卡 | 不要手动添加永久路由 |
这张表只用于确定排查顺序。TUN无法上网并不等于某个配置字段一定错误,必须结合客户端日志、系统网络状态和关闭TUN后的对照结果判断。
TUN启动失败:权限、虚拟网卡和软件冲突
如果TUN开关没有保持开启,先完全退出其他VPN、WireGuard客户端、网络加速器、虚拟机网络工具、容器网络工具和重复运行的代理客户端,再重新启动目标客户端。多个软件同时接管系统路由或VPN接口时,可能出现接口占用、权限不足或路由互相覆盖;这里应把它作为排查假设,而不是未经日志确认的结论。
- Windows:右键客户端或核心程序,选择以管理员身份运行;同时检查Windows防火墙是否允许该核心程序联网。Mihomo文档明确提示,Windows遇到防火墙问题时可在Windows安全中心的防火墙允许列表中放行核心程序,具体程序名称以当前客户端实际使用的核心为准。
- macOS:如果客户端使用系统网络扩展或VPN授权,重新启动客户端后查看系统设置中的VPN或网络项目,确认授权没有被撤销。macOS的网络设置入口通常位于“系统设置→网络”,但不同客户端的授权方式可能不同。
- Android:系统同时只能有一个活动的VPN服务。Android官方文档说明,新的VPN服务启动后可能停止已有的VPN服务,因此要关闭其他正在运行的VPN或网络过滤应用,再重新授权当前客户端。
- Linux:确认当前用户有创建TUN接口和设置路由的权限,并查看客户端日志是否出现权限拒绝、接口创建失败或防火墙拦截。
常见日志关键词包括permission denied、Start TUN listening error、interface timeout、address already in use和unknown field。关键词只能帮助定位方向,不能替代完整日志。反馈问题时应同时记录操作系统、客户端名称与版本、内核名称与版本、TUN相关配置、错误发生时间以及关闭TUN后普通代理是否正常,并删除订阅地址、账号、密钥和节点服务器信息。
TUN启动后全网断开:检查路由和出口网卡
TUN开启后全网无法访问,先关闭TUN,确认系统网络恢复,再重新开启并只检查一项。重点是判断系统是否把“连接到节点所需的出口流量”也错误地送回了TUN,或者自动选择了错误的网络接口。
Windows检查方法
打开命令提示符,执行:
ipconfig /allroute print
Microsoft文档说明,ipconfig /all可以显示各适配器的完整TCP/IP配置,route print可以显示当前路由表。检查结果时重点观察:物理网卡是否有IP地址和默认网关;TUN虚拟网卡是否出现;路由表中是否存在明显重复的默认路由;开启TUN前后默认路由和接口是否发生异常变化。不要直接执行添加或删除永久路由,除非你已经保存原始路由并知道如何恢复。
Linux检查方法
执行:
ip routeip route get 1.1.1.1
ip route用于查看路由表,ip route get用于让内核计算到指定地址将选择哪条路径。重点看输出中的出口设备和下一跳是否符合当前联网方式。若设备同时连接Wi-Fi、有线网、虚拟机或容器网络,优先在客户端中确认自动选择出口网卡的设置,而不是手动改系统路由。相关命令语义可参考Linux手册页ip-route,访问日期:2026年11月10日。
macOS和Android检查方法
macOS优先在“系统设置→网络”中确认当前Wi-Fi或有线服务仍然连接,并暂时关闭其他VPN配置。Android优先进入“设置→网络和互联网→VPN”,确认当前运行的VPN服务就是目标客户端;如果开启了私人DNS,也要把它作为DNS排查变量单独测试。菜单名称可能因系统版本和厂商界面不同而变化。
在支持相关配置的内核中,auto-detect-interface用于自动检测出口接口;多网卡设备如果自动检测结果不正确,可以在确认实际接口名称后再尝试手动指定。每次只改变一个设置,修改后重新启动TUN并测试同一个网页或应用。
只有域名打不开:按DNS、浏览器和私人DNS排查
如果直接使用IP或部分应用正常,但域名解析失败,优先把问题限定在DNS层。不要把所有DNS服务器都删除,也不要同时改变DNS模式、规则和浏览器设置。
- 先关闭TUN,确认普通代理能否打开域名。
- 重新开启TUN,只检查客户端的DNS是否启用、是否存在可用上游DNS,以及DNS模式是否与当前系统匹配。
- 在浏览器中暂时关闭独立的安全DNS或加密DNS功能,避免浏览器绕过系统DNS;测试完成后可按实际安全需求恢复。
- Android设备检查“设置→网络和互联网→私人DNS”。Android官方说明,私人DNS只保护DNS请求和响应,不能代替完整的网络连接;Mihomo文档也提示,Android开启私人DNS时,TUN不能自动劫持DNS请求。
- macOS如果需要检查系统DNS,可进入“系统设置→网络→当前网络服务→详细信息→DNS”。Apple官方文档确认该入口用于添加或移除DNS服务器。
如果修改DNS后恢复,只能说明DNS是故障链中的一个变量,还要继续确认规则是否把DNS请求送入正确的解析模块。Mihomo和sing-box的文档都对native、hijack、auto-route和strict-route的作用作了区分,具体字段是否可用必须以当前内核文档和配置校验结果为准。
基础连接恢复后,再处理IPv6、MTU、严格路由和UDP
IPv6、MTU、严格路由、堆栈和QUIC/UDP属于第二阶段变量。只有普通代理正常、TUN能够启动、默认路由和DNS基本正常后,才值得逐项测试。
- IPv6:如果只有IPv6网站失败,可以暂时用同一网络分别测试IPv4和IPv6;不要因为出现IPv6地址就直接删除系统IPv6。
- MTU:Mihomo文档说明MTU会影响极限条件下的传输表现,一般用户可以保持默认值。只有在特定网站、长连接或大数据包明显失败时,才在备份配置后逐步测试。
- strict-route:严格路由可能帮助防止DNS泄漏,但文档也提示Windows下可能影响某些应用,Linux下会改变不支持网络的可达性。启用或关闭后必须复测局域网、虚拟机和常用应用。
- UDP或QUIC:如果网页可以打开但视频、实时通信或部分应用异常,检查规则、应用独立代理和UDP支持范围,不要仅凭浏览器表现判断TUN整体失效。
修改前复制配置文件或导出当前配置;每次只改一个字段;测试失败就恢复上一个值。不要复制来源不明的整段TUN配置,尤其不要把其他客户端、其他内核或旧版本字段直接混用。
安全回滚:关闭TUN后仍然无法上网怎么办
- 在客户端内关闭TUN,并等待状态变为已停止。
- 关闭系统代理或恢复到开启TUN前的系统代理状态。
- 退出客户端核心,再重新打开系统网络设置,确认Wi-Fi或有线网络已连接。
- Windows执行
ipconfig /all和route print,Linux执行ip route,只记录结果,不要先删除路由。 - Android关闭当前VPN服务并重新连接Wi-Fi或移动网络;如果此前改过私人DNS,先恢复原来的选项。
- macOS在“系统设置→网络”和“VPN”中确认当前网络服务与VPN状态,必要时先停用再启用对应网络服务。
- 如果重启网络后仍然异常,恢复此前备份的客户端配置,暂时不要继续叠加修改。
成功判据应至少包括:TUN状态保持运行;普通网页和一个出现过问题的应用均可访问;DNS解析正常;关闭TUN后系统网络也能恢复;系统没有持续新增未知路由或重复VPN连接。
向开发者反馈时应提供什么
为了避免反复试错,可以按下面模板整理信息:
- 操作系统及版本:
- 客户端名称及版本:
- 内核名称及版本:
- 网络类型:Wi-Fi、网线或移动网络:
- TUN状态:无法启动、启动后断网、只有域名失败或部分应用失败:
- 关闭TUN后普通代理是否正常:
- 最近一次正常使用的时间:
- 脱敏后的相关日志关键词:
- 已经尝试过的单项修改及回滚结果:
不要提交订阅链接、访问令牌、私钥、账号密码、完整节点信息或包含个人地址的日志。日志中如果出现公网IP、内网IP或设备名称,也应按需要脱敏。
常见问题
TUN模式开启后完全没有网络,应该先改DNS吗?
不建议。先关闭TUN并用普通代理做对照。如果普通代理也无法上网,优先检查节点、订阅和核心;如果普通代理正常,再检查权限、虚拟网卡、路由和出口网卡,最后处理DNS。
TUN模式必须开启严格路由吗?
不能一概而论。严格路由是否可用、是否需要开启取决于客户端、内核和操作系统。相关文档显示它可能影响DNS处理,也可能影响Windows上的部分应用,因此应在基础连接正常后单独测试,并保留关闭后的回滚方案。
Android开启TUN后只有部分应用无法联网怎么办?
先确认当前客户端是唯一正在运行的VPN服务,再检查应用分流、允许或排除应用列表、私人DNS和规则。Android的VPN服务可以按应用决定哪些流量进入VPN,因此部分应用异常不一定代表TUN整体失败。
修改MTU能解决TUN无法上网吗?
多数情况下不应把MTU作为第一步。先排查权限、路由、DNS和软件冲突。只有在特定网站、长连接或大数据包出现稳定异常时,才备份配置后一次修改一个MTU值并复测。
关闭TUN后系统仍然无法上网,如何恢复?
先退出客户端核心,确认系统代理已经恢复,再检查当前网络服务、默认网关和路由表。Windows可查看<code>ipconfig /all</code>与<code>route print</code>,Linux可查看<code>ip route</code>。不要在不了解原始状态的情况下批量删除路由。
相关阅读
- 继续看:Mihomo TUN模式不生效的日志与症状排查
- 如果使用sing-box:按启动报错和系统权限排查
- 先判断是代理连接成功但无法上网,还是TUN接管失败
- Mihomo已连接但网页打不开时的请求、DNS与规则排查
- Clash Verge Rev用户可查看TUN设置、验收与回滚步骤