先选接管方式,再检查分流规则
浏览器能打开网页,终端却连接超时;开启系统代理后,游戏仍然使用原来的出口。这些现象不一定是节点失效,常见原因是应用没有读取系统代理设置。系统代理与 TUN 的主要差别,是流量怎样进入 Clash 内核,而不是节点速度或者订阅质量。
- 主要使用浏览器:先开启系统代理。设置简单,出现问题时容易恢复。
- 只想代理一个命令行任务:先给命令显式指定 HTTP 或 SOCKS 代理,不必立刻开启 TUN。
- 应用不支持代理设置,或需要处理部分 UDP 流量:再考虑 TUN,并检查路由、DNS 和节点协议。
- 正在连接公司 VPN:先确认单位网络要求,避免两个工具同时修改默认路由。
系统代理:让应用主动连接本地端口
系统代理会把本地代理地址写入操作系统的代理设置。支持这套设置的应用读取地址后,把请求交给客户端。例如,客户端监听 127.0.0.1:7890,浏览器便可以通过这个本地端口建立代理连接。端口号以客户端实际显示为准,7890 只是本文示例。
系统代理能接管哪些连接?
Edge、Chrome 等浏览器通常遵循系统代理,但具体行为还会受到组织策略、扩展和启动参数影响。Firefox 可以选择使用系统代理,也可以独立设置连接方式。下载器、开发工具和游戏则各有自己的实现,不能只凭任务栏里“系统代理已开启”就认定全部应用都已接管。
- HTTP 代理常用于网页请求,HTTPS 通常通过 HTTP CONNECT 建立隧道;这不代表客户端在解密 HTTPS 内容。
- SOCKS5 可以处理 TCP;能否使用 UDP,还需要应用、客户端和节点链路共同支持。
mixed-port可以在同一端口接收 HTTP 与 SOCKS 代理请求,但不会让不读取代理设置的应用自动改道。
从系统设置核对地址
Windows 11 可以进入「设置」→「网络和 Internet」→「代理」,检查手动代理或设置脚本状态。macOS 可以进入「系统设置」→「网络」→ 当前网络服务 →「详细信息」→「代理」。这些位置用于核对系统设置;日常开关应优先使用客户端,避免两边反复覆盖。
不要把 0.0.0.0 填成应用的代理服务器地址。它常用于表示监听全部 IPv4 接口;同一台电脑上的应用通常应连接 127.0.0.1。只有需要局域网共享时,才另外考虑监听地址、防火墙和访问限制。
TUN 模式:通过虚拟网络接口接收 IP 流量
TUN 会创建或使用虚拟网络接口,再通过路由等机制把符合条件的 IP 数据包交给内核处理。应用不必提供 HTTP 代理选项,因此它更适合无法手动配置代理的程序。Clash Meta 后续发展的 mihomo 内核提供了相关能力,但不同客户端使用的内核、服务安装方式与界面开关并不完全相同。
“开启 TUN”不是“拦截所有网络”的保证。实际接管范围取决于 IPv4 与 IPv6 路由、接口排除项、局域网绕过、其他 VPN 和系统防火墙。虚拟机、容器以及 WSL 的流量也有额外网络路径,不能直接等同于宿主机应用。
| 对比项目 | 系统代理 | TUN 模式 |
|---|---|---|
| 流量入口 | 应用主动连接代理监听端口 | 虚拟接口与路由接收 IP 流量 |
| 应用要求 | 遵循系统设置或单独配置代理 | 通常不要求应用支持代理协议 |
| UDP 处理 | 普通 HTTP 系统代理不承接一般 UDP | 可处理被接管的 UDP,仍依赖节点支持 |
| 权限与服务 | 通常不需要创建虚拟接口 | 通常需要提权或预装特权服务 |
| 排障重点 | 地址、端口、应用是否读取设置 | 路由、DNS、服务权限与接口冲突 |
为什么 TUN 常需要管理员权限?
创建接口和修改路由属于系统网络操作。Windows 客户端可能通过服务模式执行,macOS 可能需要授权辅助程序;Linux 通常涉及 /dev/net/tun 与相应网络管理权限。安装了特权服务之后,图形界面不一定需要每次都以管理员身份启动。
如果日志提示权限不足,应按所用客户端说明安装或修复服务,而不是不断重复切换 TUN。也不要为了排障长期关闭系统防火墙;先确认服务状态,再查具体被阻止的程序和规则。
命令行和游戏:按应用验证,不按开关猜测
命令行不通,先做显式代理测试
终端里的工具不一定读取操作系统代理设置。部分工具识别 HTTP_PROXY、HTTPS_PROXY 或 ALL_PROXY,但支持范围与大小写处理存在差异。排查时,显式传参通常比修改全局环境变量更容易确认影响范围。
# Windows PowerShell 使用 curl.exe,避免旧版别名干扰
curl.exe --proxy http://127.0.0.1:7890 --noproxy "" -I https://example.com
# macOS / Linux 使用 curl
curl --proxy http://127.0.0.1:7890 --noproxy "" -I https://example.com
# 通过 SOCKS5,并让代理端解析目标域名
curl --proxy socks5h://127.0.0.1:7890 --noproxy "" -I https://example.com
这些命令假设 7890 是支持相应协议的混合端口。返回 HTTP 响应说明这次代理请求建立成功,但不能单凭状态码判断使用了哪个公网出口。如果显式代理成功、普通命令失败,优先检查该工具的代理参数或环境变量,不要先更换订阅。
游戏使用 UDP,TUN 也不是延迟保证
游戏可能同时使用 TCP 登录、UDP 对战和独立语音连接。开启 TUN 后,只有被路由接管且得到节点支持的连接才有机会经过代理。节点协议、服务端配置、规则命中和地区限制,都可能影响结果。
- 先在客户端连接列表里查找游戏进程或目标地址,确认连接是否进入内核。
- 检查命中的规则与代理组,避免登录连接走代理、对战连接却落到意外的直连规则。
- 核对节点是否支持 UDP 转发,不要只看网页测速结果。
- 在相同服务器和时段比较直连与代理表现,记录游戏内延迟、丢包及断线情况。
绕路更长的节点可能增加延迟。TUN 的作用是扩大可接管范围,不是自动提供游戏加速;游戏服务条款和反作弊限制也需要单独确认。
DNS 处理:区分代理解析与系统解析
系统代理与 TUN 的另一个关键差别,是域名查询经过哪里。使用 HTTP 代理访问 HTTPS 网站时,应用可以把目标域名交给代理处理;但应用自己的预解析、其他后台连接和安全 DNS 功能,仍可能采用不同路径。因此,“网页已经代理”不能证明所有 DNS 查询都采用相同出口。
TUN 可以配合 DNS 接管,把符合条件的 53 端口查询交给内核 DNS 模块。mihomo 中常见的 dns-hijack 就用于这类处理。它不是任意加密 DNS 的解密器:应用自行发出的 DoH 使用 HTTPS,DoT 通常使用 853 端口,不能期待一条针对 53 端口的配置自动识别并改写它们。
mihomo 配置片段如何阅读?
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
dns:
enable: true
listen: 127.0.0.1:1053
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
这是用于解释字段的局部片段,不是一份可独立运行的完整配置。auto-route 用于自动设置相关路由,auto-detect-interface 用于自动检测出口接口。listen 中的 1053 是本地 DNS 监听端口,不是节点端口;DNS 接管与这个监听端口也不是同一个概念。
Fake-IP 模式会给域名分配映射地址,再利用映射关系处理后续连接。198.18.0.1/16 属于这里使用的地址池,不是实际网站服务器地址。已有配置还需要合适的上游 DNS 等设置;不要把片段直接覆盖到订阅文件中,也不要在同一层重复添加第二个 dns 或 tun 键。
启用顺序:先建立基线,再增加 TUN
同时打开系统代理和 TUN 并非必然冲突,但也不能据此推断效果翻倍。HTTP 代理连接和虚拟接口接管可能同时存在,客户端通常需要正确处理自身流量与路由排除。排障时只保留一种入口,更容易判断问题发生在哪一层。
- 确认节点和配置:导入订阅,选定一个节点,使用 Rule 模式,先通过系统代理完成一次网页访问。
- 记录本地端口:在客户端中确认 HTTP、SOCKS 或混合端口,不把控制面板 API 端口误当作代理端口。
- 准备服务权限:按客户端说明安装服务或完成授权,关闭其他正在接管网络的代理工具。
- 单独测试 TUN:暂时关闭系统代理,开启 TUN,重新启动目标应用,观察连接列表和日志。
- 验证日常服务:检查网页、命令行、局域网设备及公司内网站点,确认规则没有误伤需要直连的地址。
Android 客户端通常通过系统 VPN 接口接管流量,同一用户下通常只能有一个处于活动状态的 VPN 服务。这与电脑上填写 HTTP 系统代理不是同一操作。iOS 的网络扩展也有独立机制,不能把桌面端 YAML 字段与开关位置直接照搬到移动端。
TUN 开启后无法上网,按现象缩小范围
系统代理正常,只有 TUN 失败
- 检查服务是否运行,以及日志是否出现创建接口、设置路由或权限错误。
- 检查其他 VPN、虚拟网卡和安全软件是否同时修改路由;一次只停用一个因素,再重新测试。
- 核对 IPv6 接管设置。不要因为 IPv4 请求成功,就认定所有连接都已进入同一路径。
部分网站正常,部分应用报域名错误
- 检查 DNS 模块是否启用、上游是否可达,以及应用是否配置了独立 DoH。
- 检查 Fake-IP 过滤与直连规则,尤其是局域网域名、企业内部域名和依赖真实地址的服务。
- 对照连接日志确认问题是解析失败、规则选错,还是节点连接失败,避免把所有超时都归因于 DNS。
退出客户端后仍然无法联网
先正常关闭 TUN 和系统代理,再退出客户端。若程序异常退出,检查系统代理是否仍指向已停止监听的 127.0.0.1:7890,以及原有 VPN 或网络服务是否已经恢复。重启相关网络服务或系统前,保存工作内容;不要在没有记录原设置的情况下批量删除路由。
如果仍然无法定位,可继续查看无法上网排查与配置文件检查。提交日志时,隐藏订阅链接、节点密码和访问令牌,只保留出错时间、内核信息、报错行与复现步骤。