2 lines
13 KiB
HTML
2 lines
13 KiB
HTML
<link rel="stylesheet" href="/css/tutorials.css"><div class="tutorial-body"><p>浏览器能打开网页,终端却一直超时;已经切到“全局”,游戏还是连不上;打开 TUN 后能用了,又担心所有网站都被送到国外。遇到这些情况,先分清两件事:<strong>流量有没有进入代理客户端,以及进入以后走哪个出口。</strong></p><p>系统代理和 TUN 主要解决第一件事,规则、全局和直连模式主要解决第二件事。本文以 Clash Verge Rev 和 Mihomo 桌面客户端为例,说明它们的区别、适用场景和检查方法。</p><nav class="guide-toc" aria-label="文章目录"><strong>阅读路线</strong><a href="#system-proxy">系统代理接管什么</a><a href="#tun">TUN 改变了什么</a><a href="#routing">为什么全局不等于全部</a><a href="#choose">应该用哪一种</a><a href="#switch">怎样切换和检查</a><a href="#troubleshoot">按现象排错</a><a href="#dns">DNS 还要单独看</a></nav><h2 id="system-proxy">01 系统代理:让应用按设置转交请求</h2><p>打开 Clash Verge Rev 的“系统代理”,客户端会修改操作系统的代理设置,把代理地址指向本机正在监听的端口。愿意读取并遵循这项设置的应用,就会把相应请求交给客户端处理。浏览器通常可以通过这种方式使用代理。<a href="https://www.clashverge.dev/guide/quickstart.html">官方快速入门</a></p><p>这里的关键是“应用遵循设置”。有的软件读取系统设置,有的软件使用自己的代理配置,还有的软件直接建立连接。同一台电脑上,浏览器正常、另一个应用不走代理,并不矛盾。</p><figure class="guide-diagram"><div class="diagram-label">图 1 · 系统代理依赖应用配合</div><div class="guide-flow"><div><b>应用读取设置</b><small>使用系统指定的代理</small></div><span aria-hidden="true">→</span><div><b>本机代理端口</b><small>请求进入 Mihomo</small></div><span aria-hidden="true">→</span><div><b>匹配出口</b><small>直连或代理节点</small></div></div><div class="guide-branch">不遵循系统代理的应用:仍按自己的网络设置连接,不会仅因这个开关而进入 Mihomo。</div><figcaption>这也解释了为什么“浏览器能用”不能代表电脑上每个应用都已经走代理。</figcaption></figure><p>如果应用提供 HTTP 或 SOCKS 代理选项,可以单独指向客户端的本机端口。地址通常是 <code>127.0.0.1</code>,端口应查看客户端当前设置,不要照抄别人的数字;HTTP、SOCKS 和混合端口也要对应正确。</p><p>终端工具同样需要看各自支持什么。以 Linux 上的 curl 为例,可以先用<a href="/a/m174.html#terminal">单条命令指定代理的方法</a>检查,不必为了一个工具马上接管整台电脑。</p><h2 id="tun">02 TUN:通过虚拟网卡接收流量</h2><p>TUN 会创建虚拟网络接口,并通过路由把符合接管条件的 IP 流量交给内核。应用不必先学会使用 HTTP 或 SOCKS 代理,因此它常用于系统代理无法覆盖的程序。Mihomo 可以处理通过 TUN 进入的 TCP、UDP 流量,但最终能否完成连接,还取决于配置、节点和目标服务。<a href="https://www.clashverge.dev/guide/term.html">官方名词解释</a></p><figure class="guide-diagram"><div class="diagram-label">图 2 · TUN 在网络路由这一层接管</div><div class="guide-flow"><div><b>应用发起连接</b><small>无需读取系统代理</small></div><span aria-hidden="true">→</span><div><b>系统路由 → TUN</b><small>进入虚拟网卡</small></div><span aria-hidden="true">→</span><div><b>Mihomo 处理</b><small>再决定实际出口</small></div></div><div class="guide-branch">被排除的地址、接口或其他未进入 TUN 的连接,仍可能走原来的网络路径。</div><figcaption>TUN 扩大了接管范围,但开关亮着不等于每一条连接都已被接管。</figcaption></figure><p>TUN 也有接管范围。自动路由、排除网段、IPv6 设置及其他 VPN 的路由,都可能影响实际路径。例如,把某个局域网网段排除在 TUN 之外,就是让它绕过这层接管;这与连接进入 Mihomo 后命中 <code>DIRECT</code> 规则不同。<a href="https://wiki.metacubex.one/config/inbound/tun/">Mihomo TUN 配置</a>、<a href="https://www.clashverge.dev/guide/bypass.html">代理绕过说明</a></p><p>日常使用图形客户端时,优先使用它提供的 TUN 设置。建立网卡和修改路由需要相应权限;Clash Verge Rev 的服务模式可让具有权限的后台服务启动内核,不代表必须一直以管理员身份运行整个界面。<a href="https://www.clashverge.dev/guide/term.html">服务模式说明</a></p><h2 id="routing">03 “全局”和 TUN 不是同一个维度</h2><p>把“规则”改成“全局”,改变的是进入内核后的出口选择。一个完全没有进入客户端的应用,不会因为切到全局就自动被接管。</p><p>反过来,开启 TUN 也不要求使用全局模式。<strong>TUN + 规则模式</strong>可以接管更多应用,同时继续按规则让部分连接直连、部分连接使用节点。<a href="https://www.clashverge.dev/guide/term.html">规则与全局模式说明</a></p><figure class="guide-diagram"><div class="diagram-label">图 3 · 先进入客户端,再决定去哪里</div><div class="guide-flow"><div><b>第一步:接管</b><small>系统代理 / 应用代理 / TUN</small></div><span aria-hidden="true">→</span><div><b>第二步:选择出口</b><small>规则 / 全局 / 直连</small></div><span aria-hidden="true">→</span><div><b>第三步:建立连接</b><small>本地网络或所选节点</small></div></div><figcaption>排错也按这个顺序进行:先找有没有进入,再看实际出口,最后判断线路是否可用。</figcaption></figure><table><thead><tr><th>常见组合</th><th>实际含义</th></tr></thead><tbody><tr><td>系统代理 + 规则</td><td>遵循系统代理的请求进入客户端,再按当前配置分流</td></tr><tr><td>系统代理 + 全局</td><td>进入内核的普通业务连接使用全局策略;未被接管的应用仍可能绕过</td></tr><tr><td>TUN + 规则</td><td>被 TUN 接管的连接按规则选择出口,并非全部使用代理节点</td></tr><tr><td>TUN + 全局</td><td>被接管的普通业务连接使用全局策略;仍需查看所选策略是否为可用节点</td></tr></tbody></table><p>一个具体例子:浏览器和下载工具访问同一域名,浏览器连接记录里显示了节点,下载工具却没有记录。此时应优先检查下载工具的代理设置或接管方式;反复切换全局,通常没有解决前面的缺口。</p><h2 id="choose">04 按应用需求选择,不必一开始全部打开</h2><table><thead><tr><th>你要完成的事</th><th>可以先这样做</th></tr></thead><tbody><tr><td>主要浏览网页,常用软件已经正常</td><td>使用系统代理 + 规则模式</td></tr><tr><td>只有一个应用不跟随系统设置,且自带代理选项</td><td>给该应用配置正确的本机代理端口</td></tr><tr><td>多个应用不支持代理设置,希望统一处理</td><td>考虑 TUN + 规则模式,再逐个检查所需应用</td></tr><tr><td>游戏或语音涉及 UDP</td><td>检查 TUN 接管,同时确认所选节点支持所需 UDP 转发</td></tr><tr><td>需要同时访问公司 VPN、NAS 或局域网设备</td><td>先明确这些连接的路径,再设置绕过或直连,避免盲目全局接管</td></tr></tbody></table><p><strong>TUN 不是加速档位。</strong> 游戏登录网页能打开,不代表游戏数据传输已经正常;节点对网页可用,也不代表它能承载所需的 UDP。选择方式要看应用连接是否按预期工作,而不是哪个开关听起来更强。</p><p>系统代理和 TUN 可以同时存在,但两个开关都开不代表效果翻倍。应用主动交给本机端口的请求,本来就已进入客户端;其他连接可能由 TUN 接管。排错时,先明确正在验证哪条路径,比同时改动多个设置更容易找到原因。</p><h2 id="switch">05 从系统代理切到 TUN,怎样确认有效</h2><p>先确保客户端已经导入配置、选中可用节点,并完成基本连接。尚未完成这一步,可以按对应平台的教程操作:<a href="/a/clash-verge-rev-windows.html#enable">Windows</a>、<a href="/a/m173.html#enable">Mac</a>、<a href="/a/m174.html#connect">Linux</a>。</p><ol><li><strong>记录原来的设置。</strong> 包括系统代理、TUN 开关和当前代理组。保持订阅、节点和规则模式不变,便于对比。</li><li><strong>按客户端提示启用服务和 TUN。</strong> 若开关自动关闭或提示权限错误,先处理服务状态与具体错误,不要继续叠加 DNS、协议栈等改动。</li><li><strong>排除其他入口的干扰。</strong> 若要确认某个应用是否由 TUN 接管,暂时关闭本客户端的系统代理,并检查该应用是否另设了代理;有的话记录原值,再临时停用。只关闭系统代理,不能排除应用自己的代理设置。</li><li><strong>让目标应用发起新连接。</strong> 重连应用或重新打开目标内容,避免只观察缓存页面和原有长连接。</li><li><strong>查看连接记录。</strong> 按域名、目标 IP 或可用的进程信息定位请求,查看匹配规则、出口策略,以及界面或日志提供的入站信息。应走节点的请求如果显示 DIRECT,需要回到分流规则检查。</li><li><strong>检查日常需要的本地服务。</strong> 包括局域网设备、公司内网等;确认没有因路由变化失去访问能力,再保留这套设置。</li></ol><p>关掉系统代理后应用仍能联网,只能说明它不依赖刚才关闭的那项设置。还要结合新连接记录和实际出口,才能判断 TUN 是否按预期接管;应用本来就能直连时,单凭“能打开”尤其容易误判。</p><p>如果切换后异常,先关闭 TUN,恢复刚才记录的系统代理和应用设置,让连接回到原先可用的状态,再按下一节定位。</p><h2 id="troubleshoot">06 按现象定位,少做无关改动</h2><h3>浏览器能用,终端或另一个应用不能用</h3><p>先检查该应用是否跟随系统代理,或者是否需要独立配置。观察它发起新请求时,客户端有没有相应连接记录。记录里没有出现时,先清除列表筛选、重试并查看日志,排查接管问题;已经出现时,再看命中的规则和实际出口。</p><h3>开了 TUN,流量仍显示 DIRECT</h3><p>DIRECT 表示这条连接由客户端直连,并不等于 TUN 没有工作。检查它是否命中了局域网、国内地址等直连规则,或代理组本身选中了 DIRECT。需要改变的是对应出口策略,而不是反复重启虚拟网卡。</p><h3>网页正常,游戏或语音仍然失败</h3><p>把登录请求和实时数据连接分开看。后者可能使用不同的地址、端口和 UDP。确认目标连接已进入客户端,再检查节点是否支持相关转发;网页测试成功不能代替这项检查。</p><h3>一开 TUN,局域网、公司 VPN 或整个网络就异常</h3><p>先恢复原先可用的方式,再检查路由重叠、网段冲突和客户端日志。系统代理绕过、TUN 路由排除与内核 DIRECT 规则各自发生在不同位置,不应混为一谈。不要把删除网卡或关闭全部防火墙作为第一步。<a href="https://www.clashverge.dev/guide/bypass.html">代理绕过说明</a>、<a href="https://www.clashverge.dev/faq/windows.html">Windows TUN 常见问题</a></p><h3>关闭系统代理,连接却还在走节点</h3><p>检查 TUN 是否仍开启,以及应用自己的代理设置是否仍生效。想停用本客户端的接管,应同时处理实际启用的入口,并重新建立连接。关闭窗口可能只是把客户端收进托盘,也不等于退出。</p><h2 id="dns">07 TUN 能接管流量,DNS 仍要单独检查</h2><p>访问网站的连接和解析域名的查询,可能走不同路径。TUN 已经开启,并不能直接推出“DNS 一定经过节点”。普通 DNS 是否被接管、应用是否使用独立的加密 DNS,以及解析服务连接走直连还是代理,都需要分别看。</p><p>例如,浏览器使用 DoH 时,查询本身是加密的 HTTPS 连接。它可能经 TUN 进入内核,但不会仅因一条针对 53 端口的 DNS 劫持设置,就自动变成 Mihomo 内置 DNS 处理的查询。相关字段和平台差异见<a href="https://wiki.metacubex.one/config/inbound/tun/">Mihomo TUN 配置</a>。</p><p>想继续检查解析路径,可以阅读<a href="/a/mihomo-dns-leak.html#dns-2">DNS 防泄漏配置与验证</a>。日常排查时,先确认应用连接进入了哪里,再看它选了什么出口,最后补上 DNS 这条路径,通常比不断切换“系统代理、TUN、全局”更有效。</p></div>
|