Clash TUN 模式与系统代理差异:流量接管范围与适用情境
了解系统代理与 TUN 虚拟网卡的运作差异,并判断游戏、命令列工具和 UWP 应用适合哪种代理方式。
先选择接管方式,再检查分流规则
日常浏览网页可先使用系统代理;应用不读取代理设置、需要接管 UDP,或希望统一处理多种应用时,再考虑 TUN 模式。两者解决的是「流量如何进入内核」,并不会直接决定流量最终直连或通过节点传输。
使用 mihomo 内核时,可将一次连接分为三个步骤:先进入代理端口或 TUN 虚拟网卡,再匹配规则,最后交由直连出口或某个代理节点处理。入口、规则和出口是三个独立环节。只切换入口,不一定会改变规则匹配结果。
「接管全部流量」是对 TUN 用途的概括,并非无条件保证。路由排除、其他虚拟网卡、IPv6 设置、应用绑定网卡以及用戶端实作方式,都可能影响实际覆盖范围。节点本身的连接也需要正确绕过 TUN,以免形成回环。
系统代理:应用主动连接本机代理连接埠
系统代理如何运作
开启用戶端的「系统代理」后,用戶端通常会修改作业系统的代理设置,指向本机监听位址,例如 127.0.0.1:7890。读取这项设置的应用会将请求交给该位址;忽略设置的应用则仍沿用原本的网络路径连接。
7890 在本文中仅为设置范例,并非所有用戶端的固定连接埠。请先到用戶端设置页面确认「混合连接埠」或「HTTP 连接埠」。如果页面显示其他数值,命令和应用代理设置也必须一并替换。请勿将控制介面连接埠误当成代理连接埠。
- 浏览器:通常可以读取系统代理,但浏览器内的独立代理设置可能会覆盖系统设置。
- 命令列工具:不一定会读取桌面作业系统的代理设置,可能需要使用代理参数或环境变数。
- 游戏与实时通讯:原生 UDP 通讯通常不会因为开启 HTTP 系统代理,就自动进入内核。
- 自行处理网络连接的应用:可能绕过系统代理,也可能只有登入页面走代理,主要连接仍然直连。
使用显式代理确认连接埠可用
以下命令会明确要求请求通过本机 HTTP 代理。Windows 终端机可使用 curl.exe,避免部分终端环境中的同名命令造成混淆;其他系统通常使用 curl。
curl --head --proxy http://127.0.0.1:7890 https://clash67.com/
执行后请查看用戶端的连接记录。只有看到目标网域和规则匹配结果,才能确认该请求确实进入内核。回传的状态码只反映该网站当时的回应,不能证明所有网站都能存取;这项测试也无法证明系统代理开关已正确写入作业系统,因为命令中已经明确指定代理。
TUN 模式:通过虚拟网卡与路由接管连接
TUN 是第三层虚拟网络介面。用戶端建立介面并设置路由后,符合路由条件的 IP 封包便会进入内核处理。应用不必主动理解 HTTP 或 SOCKS 代理,因此 TUN 更适合接管不遵守系统代理设置的程式。
这类接管通常需要较高的系统权限。桌面用戶端可能通过背景服务或提权程序设置网卡与路由;Android 用戶端则常透过系统 VPN 授权接管指定应用的流量。不同平台的实作方式和开关名称不尽相同,不能将桌面版参数直接套用到手机上。
mihomo 的 TUN 设置范例
以下片段展示常见的入口参数,不包含节点、策略群组和完整的 DNS 设置。请将它与目前有效的设置合并,而非直接取代整份订阅。若已有 tun 或其他同名的顶层键,请修改原有字段,避免重复定义。
mixed-port: 7890
allow-lan: false
mode: rule
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
mixed-port:同一个连接埠可接受 HTTP 和 SOCKS 代理连接;启用 TUN 后仍可保留这个入口。allow-lan: false:不向局域网开放代理服务;本机使用 TUN,不需要因此开启局域网存取。stack: mixed:选择 mihomo 支持的混合协议堆叠,并不代表「同时开启系统代理」。实际是否可用,仍须以用戶端内附的内核为准。auto-route:让内核自动设置相关路由。只建立虚拟网卡,却没有正确设置路由,仍可能无法接管目标流量。auto-detect-interface:自动侦测对外连线介面。在多网卡环境中,仍需检查日志和实际选用的出口。dns-hijack:接管符合条件的传统 DNS 请求。这里包含 UDP 53 和 TCP 53,但不会直接解密应用内的加密 DNS。
系统代理与 TUN 适用情境比较
| 使用情境 | 优先方式 | 检查项目 |
|---|---|---|
| 浏览器浏览网页 | 系统代理 | 浏览器是否采用系统设置,以及是否设有独立代理配置 |
| 临时命令列请求 | 明确指定代理参数 | 工具支持的参数、实际连接埠与环境变数 |
| 多个不读取代理设置的工具 | TUN | 路由是否生效,以及程序或网域规则是否匹配 |
| 使用 UDP 的游戏 | TUN | 节点和伺服器是否支持 UDP,以及是否误匹配为直连 |
| UWP 应用 | 先测试系统代理,再考虑 TUN | 应用的网络实作、回环限制与系统政策 |
| 同时使用单位内网与其他通道 | 先使用系统代理 | 内网路由、专用 DNS 与其他虚拟介面的优先顺序 |
游戏:接管 UDP 不代表节点支持 UDP
TUN 可以让游戏数据进入内核,但出口仍须支持对应的传输方式。若节点或伺服器不支持 UDP,切换到 TUN 也无法补上这项能力。请先在连接面板中寻找游戏连接,确认网络类型、目标位址、匹配规则和所选节点,再判断问题出在入口还是出口。
游戏启动器、登入服务和对战连接可能使用不同的网域与位址。成功登入不代表对战流量已经通过代理。也不要只凭一次延迟测试就断定 TUN 比较快;延迟还取决于网络路径、节点负载和目标伺服器的位置。
命令列:单一工具优先明确设置代理
只运行一个支持代理参数的工具时,明确设置通常更容易追踪,也不会改变其他应用的网络路径。HTTP_PROXY、HTTPS_PROXY 和 ALL_PROXY 是否生效,取决于工具的实作方式;环境变数名称包含 HTTPS,也不表示变数值必须使用 HTTPS 代理协议。
UWP:区分代理限制与沙箱回环限制
部分 UWP 应用存取本机代理时,可能会受到回环限制影响。这与节点是否可用是不同的问题。如果应用在系统代理下无法连接,可先用浏览器确认本机连接埠正常,再检查该应用是否需要个别授权回环存取,或改用 TUN 进行验证。排查单一应用时,请勿一次开放所有应用的权限。
DNS 与 Fake-IP:启用 TUN 后能连线却无法开启网域时,先检查这些项目
TUN 接管连接,DNS 则负责将网域转换为可连接的位址,两条链路必须搭配运作。常见症状包括:开启后浏览器持续等待、日志出现解析逾时,或同一网域在不同应用中的表现不一致。遇到这种情况,继续切换节点未必能解决入口 DNS 的问题。
- 确认 DNS 模组已启用:检查目前运行设置中的
dns.enable,并确认用戶端是否通过自身设置产生 DNS 配置。 - 检查连接埠 53 是否已接管:传统 DNS 通常使用 UDP 53,也可能使用 TCP 53;只检查其中一种并不完整。
- 辨识应用内的加密 DNS:应用通过 HTTPS 或 TLS 发送解析请求时,不会单纯匹配连接埠 53 的劫持设置。
- 检查 DNS 上游是否可连线:确认 DNS 上游本身可以连接,避免上游依赖尚未建立的代理连接,造成循环依赖。
Fake-IP 会针对符合条件的网域回传合成位址,并由内核维护网域与位址之间的对应关系。常见的示例位址池为 198.18.0.1/16。解析结果出现这类位址不一定代表故障,但相关连接必须按预期回到内核,才能正确还原目标。
关闭 TUN 后,如果应用仍缓存合成位址,可能会暂时无法存取。请先重新建立应用连接,再依照系统方式清除 DNS 快取;Windows 可在终端机执行 ipconfig /flushdns。浏览器自身的解析快取可能需要另外清除。若遇到局域网侦测、设备管理或特定内网网域的问题,应根据实际需求检查 Fake-IP 过滤和直连解析策略,而不是将所有网域都加入过滤清单。
依照四个步骤验证:入口、规则、出口与回退
-
先建立可用的基准。
关闭 TUN,确认订阅已启用,选择可用节点,并使用明确指定代理的命令测试本机连接埠。在用戶端连接面板记录目标网域、匹配规则和策略群组。如果基准测试无法通过,请先处理订阅、连接埠或节点问题,不要再叠加 TUN 进行排查。
-
单独验证 TUN 接管效果。
开启必要的服务或系统授权,启用 TUN,暂时关闭系统代理,并确认测试工具没有继承代理环境变数。可执行
curl --head --noproxy "*" https://clash67.com/,再查看连接记录。这里的--noproxy "*"只是让 curl 不使用明确指定的代理,无法绕过作业系统的 TUN 路由。 -
核对规则与出口。
找到刚才的请求,检查是否匹配预期规则,以及最终使用直连还是代理节点。网页能够开启只代表连接成功;如果目标本来就能直连,单看页面结果无法证明代理出口已生效。
-
测试回退与特殊网络。
关闭 TUN 后重新连接,确认一般网络已恢复。接着测试局域网设备、单位内网、IPv6 目标和游戏 UDP。每次只调整一个选项,并记录修改前后的差异,避免同时调整 DNS、路由和策略群组后无法判断原因。
常见问题:同时启用、断网与局域网存取
系统代理和 TUN 可以同时启用吗?
可以,许多用戶端允许这两个入口共存。不过,同时启用会让问题排查更复杂:某个应用可能通过代理连接埠进入,另一个应用则通过 TUN 进入。初次设置时建议分别验证,再决定是否同时保留。两者同时启用不会自动提升速度,也无法取代正确的出口路由。
启用 TUN 后完全断网,应该先关闭哪一项?
先关闭 TUN,确认一般网络是否恢复。如果恢复,请依序检查服务权限、默认出口、DNS 和其他通道冲突。重新启动用戶端后,观察是否成功建立虚拟介面,以及新增路由时是否发生错误。请勿先关闭系统防火墙;应根据日志找出需要放行的程式和连接。
TUN 会将局域网设备的流量也通过代理传送吗?
不一定。局域网连接是否进入 TUN,以及进入后是否直连,取决于路由和规则。请测试设备的实际位址,例如 192.168.1.1,并检查匹配结果。需要直连时,请同时核对路由排除设置和规则,避免误将局域网管理页面交由远端节点处理。
电脑启用 TUN 后,手机会自动共用代理吗?
不会。电脑本机的 TUN 不会自动让电脑变成局域网网关。手机必须单独设置代理,或使用正确配置的网关方案。让手机连接电脑的代理连接埠,还涉及监听位址、局域网授权和防火墙规则,与本机 TUN 是不同的事项。
IPv4 正常,但部分应用仍绕过代理,该怎么办?
请检查这些连接是否使用 IPv6,并核对用戶端的 IPv6 设置、DNS 回传结果和 TUN 路由设置。只验证 IPv4,不代表 IPv4 与 IPv6 两种通讯协定都已接管。也请检查应用是否绑定特定网卡,或被用戶端的应用排除设置绕过。
最终应以可验证的连接记录作为选择依据。系统代理已能满足需求时,就保留简单的入口;需要覆盖更多应用时再启用 TUN,并逐项确认权限、路由、DNS 和 UDP 出口。有关内核与规则字段,可继续参阅本站协议参考中的 mihomo 内核说明。