2 lines
11 KiB
HTML
2 lines
11 KiB
HTML
<link rel="stylesheet" href="/css/tutorials.css"><div class="tutorial-body"><p>同一个网站,规则模式打不开,切成全局却正常;明明选了新节点,连接记录里还是另一个名字。遇到这类问题,先看这条连接实际走了哪条规则、哪个代理组,再决定要改什么。</p><p>本文以 Clash Verge Rev 和 Mihomo 为例,讲清规则、全局、直连三个模式,并完成一次“只让指定网站走指定出口”的配置。还没有完成导入和首次连接,可以先看 <a href="/a/clash-verge-rev-windows.html#enable">Windows 入门教程</a>;Mac 用户可以从<a href="/a/m173.html#enable">对应操作步骤</a>开始。</p><nav class="guide-toc" aria-label="文章目录"><strong>阅读路线</strong><a href="#modes">三个模式怎么选</a><a href="#groups">为什么换节点没效果</a><a href="#order">规则先后顺序</a><a href="#custom">添加一条网站规则</a><a href="#verify">从连接记录验证</a><a href="#troubleshoot">按现象排查</a></nav><h2 id="modes">01 三个模式,改变的是出口选择</h2><p>先确定前提:请求已经进入了客户端。系统代理、应用自身代理设置和 TUN 负责把流量送进来,下面三个模式负责决定进去以后怎样处理。未被接管的应用,不会因为切到全局就自动经过客户端;接管方式见<a href="/a/system-proxy-vs-tun.html#routing">系统代理与 TUN 的区别</a>。</p><div class="table-wrap"><table><thead><tr><th>模式</th><th>进入客户端后的普通业务连接</th><th>适合什么时候用</th></tr></thead><tbody><tr><td>规则(Rule)</td><td>按当前配置匹配规则,选择直连、代理组或其他策略</td><td>日常分流:不同网站使用不同出口</td></tr><tr><td>全局(Global)</td><td>使用 GLOBAL 组当前选择的节点或策略</td><td>临时对比:判断问题是否与分流结果有关</td></tr><tr><td>直连(Direct)</td><td>由本地网络直接连接目标</td><td>临时检查本地网络,或不需要代理出口时</td></tr></tbody></table></div><p>这三个模式是路由选择,不是速度档位。全局也要检查 GLOBAL 组究竟选了什么:如果选的是 DIRECT,结果仍然是直连;如果选的是另一个代理组,还要继续看那个组的选择。<a href="https://wiki.metacubex.one/config/general/">Mihomo 运行模式说明</a></p><p>直连模式也不等于退出客户端:系统代理、TUN 等入口可能仍开启。要停用接管,需要处理对应开关,不能只把模式改成“直连”。<a href="https://www.clashverge.dev/guide/term.html">Clash Verge Rev 名词解释</a></p><figure class="guide-figure"><img src="/images/editorial/98a43bdd771dd4c6c5ec6b87bb5f0ebf679fa2b228dddbb764adecf50b0374e9.png" alt="请求进入客户端后,规则模式按规则分流,全局模式使用 GLOBAL 选择,直连模式使用本地网络" width="1000" height="670"><figcaption>图 1:模式作用于已进入客户端的连接;切模式不会补上接管范围的缺口。</figcaption></figure><h2 id="groups">02 换了节点没效果,可能换错了组</h2><p>代理页里有“节点选择”“流媒体”“自动选择”等分组时,不要把它们当成一排作用相同的开关。规则通常先指向一个组,组再选节点,也可能继续选另一个组。</p><p>例如,一份配置把视频网站分给“影音”,普通网页交给“节点选择”。你在“节点选择”里换成节点乙,但“影音”仍直接选着节点甲,视频连接就可能继续走甲。只有“影音”选择了“节点选择”这个组,它才会沿着这条选择关系继续向下找出口。</p><figure class="guide-figure"><img src="/images/editorial/417b203a4af30200b6ed3b37d0b0e823a9b47db49e2d743b1110b35329cc5de8.png" alt="规则命中影音组后,该组直接选择节点甲时不经过节点选择组;选择节点选择组时才跟随其中的节点乙" width="1000" height="610"><figcaption>图 2:两种配置的差别在于“影音”组的选择。组名只是配置中的名称,实际关系要查看当前选择。</figcaption></figure><p>手动选择组(<code>select</code>)由你决定使用哪个选项;如果它选择的是自动选择组(<code>url-test</code>),后者仍会按自己的测速配置选择节点。想固定到具体节点,就检查整条选择路径,而不是只看最外层的组名。<a href="https://wiki.metacubex.one/config/proxy-groups/select/">手动选择组</a>与<a href="https://wiki.metacubex.one/config/proxy-groups/url-test/">自动选择组</a></p><p>实际排查时,可以在连接详情里找策略、代理链或类似字段。不同界面展示顺序可能不同,重点是认出“命中了哪个组”和“最终使用哪个节点”。</p><h2 id="order">03 先看顺序,再看规则写得对不对</h2><p>Mihomo 的路由规则从上往下匹配。通常前面命中的规则就决定了后续策略,因此“更精确”不会自动获得更高优先级;精确规则如果排在已经覆盖它的规则之后,仍可能用不上。涉及 UDP 等条件时,还要注意目标策略是否具备相应支持。<a href="https://wiki.metacubex.one/config/rules/">路由规则与优先级</a></p><p>下面是用来理解顺序的片段,不是可以替换整个订阅的完整配置。<code>example.com</code> 是示例域名,“节点选择”必须换成你配置中真实存在的组名:</p><pre><code class="language-yaml">rules: - DOMAIN,video.example.com,节点选择 - DOMAIN-SUFFIX,example.com,DIRECT - MATCH,节点选择 </code></pre><p>在这个例子里,访问 <code>video.example.com</code> 先命中第一条,交给“节点选择”;访问 <code>docs.example.com</code> 则命中第二条,使用直连。如果把前两条交换,<code>video.example.com</code> 也会先被域名后缀规则接住。</p><p><code>DOMAIN</code> 对应完整域名;<code>DOMAIN-SUFFIX</code> 对应该域名及其子域名。末尾的 <code>MATCH</code> 用于接住前面没有匹配到的连接。不要为了让某个网站使用节点,就在前面塞一条覆盖所有连接的 MATCH:那会让后面的分流规则失去机会。</p><h2 id="custom">04 在 Verge Rev 里给一个网站添加规则</h2><p>先选一个你确实需要调整的网站。例如,某个域名在当前网络下直连不通,而你已有能访问它的节点。只改这一项,验证后再扩展范围。</p><ol><li>在“订阅”页面找到<strong>正在使用的配置</strong>,右键选择“编辑规则”。这里维护的是该订阅的自定义规则,可以保留在后续订阅更新中。</li><li>新增规则,类型先选 <code>DOMAIN</code>,内容填写连接记录里的完整主机名,例如 <code>video.example.com</code>。不要填 <code>https://</code>、路径或整个网页地址。</li><li>代理策略选择当前配置中实际存在的代理组;需要直连时选 DIRECT,需要使用节点时选相应的组,并确认组内选择。</li><li>需要覆盖订阅中已有的分流结果时,放入<strong>前置规则</strong>,同时检查前面是否还有会先命中的自定义项。不要把它追加在已兜底的 MATCH 后面。</li><li>保存并确认没有配置错误,保持规则模式,然后让目标应用重新发起连接。</li></ol><p>界面入口与前置/后置规则的含义可参考 <a href="https://www.clashverge.dev/guide/rules.html">Verge Rev 自定义规则</a>。这与直接改下载下来的订阅正文不同;后者可能被下一次更新覆盖。</p><p>一个网页可能同时访问登录、图片、视频和接口等多个域名。添加主站域名后页面只恢复了一部分,先查看失败连接,再补真正需要的域名。不要因为一个资源加载失败,就直接扩大成整类域名、全部应用或全部流量。</p><h2 id="verify">05 改完以后,检查一条新连接</h2><p>验证时保持订阅、模式和接管方式稳定,只调整刚才那条规则或对应组的选择。打开“连接”页面,清除筛选,重新访问目标内容,找到刚建立的连接,逐项检查:</p><ul><li><strong>目标是否相同:</strong> 看实际域名或 IP,而不是只认浏览器标签页上的网站名。</li><li><strong>规则是否符合预期:</strong> 有没有命中新加的规则,还是先被另一条规则或规则集处理。</li><li><strong>策略是否正确:</strong> 命中的组是否是你刚才修改的组,组内有没有继续指向其他组或 DIRECT。</li><li><strong>应用是否恢复:</strong> 出口符合预期以后,再验证原先失败的操作,例如播放、登录或下载。</li></ul><p>已有长连接不适合作为换规则、换节点后的唯一观察对象。可优先重连目标应用,或只关闭相关连接后重新测试;直接清空所有连接会影响其他正在使用的程序。</p><p>如果仍无法区分,可以做一次有控制的对比:记录当前设置,在全局模式中选择<strong>同一个明确的节点</strong>,重新建立目标连接。全局可用、规则模式不可用,提示你继续查分流和代理组;它并不能单独证明某一条规则错误,因为模式变化也可能影响其他配置行为。对比后切回规则模式,修正具体目标。</p><h2 id="troubleshoot">06 几种常见现象,对应查哪里</h2><div class="table-wrap"><table><thead><tr><th>现象</th><th>下一步检查</th></tr></thead><tbody><tr><td>换了节点,目标连接仍走旧节点</td><td>是否改错代理组、组里还有嵌套选择,以及观察的是否为旧连接</td></tr><tr><td>明明加了代理规则,却显示 DIRECT</td><td>当前模式、规则顺序、实际域名,以及命中组是否选了 DIRECT</td></tr><tr><td>全局能用,规则不能用</td><td>对比同一目标的新连接,确认规则模式的最终出口是否与全局相同</td></tr><tr><td>网页文字出现了,图片或视频失败</td><td>找失败资源的域名与连接,逐项判断,不只给主站加规则</td></tr><tr><td>完全找不到应用的连接记录</td><td>清除筛选、查看日志,再检查应用代理或 TUN 接管;规则还没到发挥作用的阶段</td></tr><tr><td>订阅更新后又不对了</td><td>是否改了会被覆盖的订阅正文、当前配置是否切换、原代理组是否还存在</td></tr></tbody></table></div><p>如果连接已经走了预期节点,但仍出现域名解析异常,继续检查 <a href="/a/mihomo-dns-leak.html#dns-2">DNS 接管、加密和出口</a>。如果客户端根本看不到目标流量,则回到<a href="/a/system-proxy-vs-tun.html#troubleshoot">系统代理与 TUN 的排查步骤</a>。先根据连接记录确定问题发生在哪一步,再动对应设置,通常比不断切换三个模式更有效。</p></div>
|