<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>ednovas</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://blog.e.show/</id>
  <link href="https://blog.e.show/" rel="alternate"/>
  <link href="https://blog.e.show/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, ednovas</rights>
  <subtitle>科学上网技术文档</subtitle>
  <title>代理百科</title>
  <updated>2026-05-11T21:40:36.947Z</updated>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="流媒体与解锁" scheme="https://blog.e.show/categories/%E6%B5%81%E5%AA%92%E4%BD%93%E4%B8%8E%E8%A7%A3%E9%94%81/"/>
    <category term="ChatGPT" scheme="https://blog.e.show/tags/ChatGPT/"/>
    <category term="Claude" scheme="https://blog.e.show/tags/Claude/"/>
    <category term="Gemini" scheme="https://blog.e.show/tags/Gemini/"/>
    <category term="AI" scheme="https://blog.e.show/tags/AI/"/>
    <category term="解锁" scheme="https://blog.e.show/tags/%E8%A7%A3%E9%94%81/"/>
    <category term="IP策略" scheme="https://blog.e.show/tags/IP%E7%AD%96%E7%95%A5/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：ChatGPT、Claude、Gemini 等 AI 服务对访问 IP 有不同程度的限制。部分服务在中国大陆不可直接访问，部分对数据中心 IP 有封锁。本文整理主流 AI 服务的 IP 策略、可用地区和解锁方法，帮助你顺畅使用这些工具。</p></blockquote><hr><h2 id="为什么-AI-服务需要”解锁”"><a href="#为什么-AI-服务需要”解锁”" class="headerlink" title="为什么 AI 服务需要”解锁”"></a>为什么 AI 服务需要”解锁”</h2><p>如果你之前了解过流媒体解锁，会发现 AI 服务的访问限制有很多相似之处——但也有本质区别。</p><p><img src="/images/inline/chatgpt-blocked.jpg" alt="ChatGPT 地区限制提示"><br><em>图片来源：<a href="https://www.tenorshare.com/">Tenorshare</a></em></p><h3 id="与流媒体解锁的异同"><a href="#与流媒体解锁的异同" class="headerlink" title="与流媒体解锁的异同"></a>与流媒体解锁的异同</h3><p>流媒体解锁的核心问题是<strong>版权授权的地域分割</strong>：Netflix 在不同国家拥有不同的内容库，解锁的目的是访问特定地区的内容。</p><p>AI 服务的访问限制则有所不同。它的根源主要是以下几点：</p><p><strong>合规与法律限制</strong>：OpenAI、Anthropic 等公司在服务条款中明确列出了不支持的国家和地区。这些限制通常与出口管制法规、数据隐私法规以及公司自身的风险评估有关。中国大陆、俄罗斯、伊朗等地区被多数美国 AI 公司排除在服务范围之外。</p><p><strong>滥用防控</strong>：AI 服务的运营成本远高于流媒体。每一次对话都在消耗 GPU 算力，而 GPU 算力是有限且昂贵的。为了防止大规模滥用——比如通过自动化脚本批量调用、利用免费额度套利——AI 服务商会主动封锁大量数据中心 IP。这个逻辑和流媒体封锁数据中心 IP 类似：正常用户不会从数据中心访问 ChatGPT。</p><p><strong>反欺诈需求</strong>：AI 服务的免费层级（如 ChatGPT 的免费版、Claude 的免费额度）吸引了大量用户。部分用户通过不断注册新账号来突破使用限制，代理和 VPN IP 是这类行为的常见特征。封锁这些 IP 可以有效降低此类滥用。</p><h3 id="变化频繁"><a href="#变化频繁" class="headerlink" title="变化频繁"></a>变化频繁</h3><p>与流媒体平台相比，AI 服务的 IP 策略变化更加频繁。这些公司仍处在快速发展阶段，服务条款、可用地区、IP 检测策略都在不断调整。一个月前还能正常使用的 IP 段，下个月可能就被封锁了；一个之前限制严格的服务，可能突然放宽了地区限制。</p><p>这意味着本文的具体信息有一定的时效性。文中描述的是截至更新日期的情况，实际使用中请以当时的测试结果为准。</p><hr><h2 id="各服务-IP-策略详解"><a href="#各服务-IP-策略详解" class="headerlink" title="各服务 IP 策略详解"></a>各服务 IP 策略详解</h2><h3 id="ChatGPT-OpenAI"><a href="#ChatGPT-OpenAI" class="headerlink" title="ChatGPT (OpenAI)"></a>ChatGPT (OpenAI)</h3><p><a href="https://chat.openai.com/">ChatGPT</a> 是目前对 IP 限制最严格的主流 AI 服务。</p><p><strong>可用地区</strong></p><p>OpenAI 官方公布了一份支持国家列表。截至目前，以下地区<strong>不可使用</strong> ChatGPT：</p><ul><li>中国大陆</li><li>中国香港（SAR）</li><li>俄罗斯</li><li>伊朗</li><li>朝鲜</li><li>叙利亚</li><li>其他受美国制裁的国家&#x2F;地区</li></ul><p>注意香港被明确列入不可用地区，这是很多用户踩坑的点——不要以为香港节点就能用 ChatGPT。</p><p><strong>IP 限制策略</strong></p><p>OpenAI 对 IP 类型的检测比大多数流媒体平台更加激进：</p><ul><li><strong>大规模封锁数据中心 IP</strong>：AWS、GCP、Azure、Vultr、DigitalOcean、BandwagonHost 等主流云服务商的 IP 段被广泛封锁。这不是逐个 IP 封锁，而是对整个 ASN 或 IP 段进行批量标记。</li><li><strong>共享代理 IP 高危</strong>：被大量用户同时使用的代理出口 IP 会被检测并封锁。这就是为什么很多机场的节点能看 Netflix 但用不了 ChatGPT——太多人通过同一个 IP 访问 ChatGPT，触发了 OpenAI 的异常检测。</li><li><strong>IP 信誉评分机制</strong>：OpenAI 使用的 IP 检测系统会综合评估 IP 的类型、历史行为、并发访问量等多个维度。即使一个 IP 没有被明确列入黑名单，低信誉分也可能导致频繁的人机验证或直接拒绝访问。</li></ul><p><strong>常见报错</strong></p><p>使用不合规 IP 访问 ChatGPT 时，你可能会遇到以下提示：</p><ul><li>“Access denied” 或 “You do not have access to chat.openai.com”</li><li>反复出现 Cloudflare 人机验证，验证通过后仍然无法访问</li><li>登录后被强制登出，页面显示服务在你的地区不可用</li><li>更严重的情况：账号被标记甚至封禁</li></ul><p>最后一种情况虽然不常见，但确实存在。OpenAI 的条款明确禁止从不支持的地区访问服务，如果系统检测到你的账号长期从受限地区登录，理论上有权封禁账号。</p><p><strong>网页版 vs API</strong></p><p>这是一个关键区别：<strong>ChatGPT 网页版和 OpenAI API 的 IP 限制程度不同。</strong></p><p>ChatGPT 网页版（chat.openai.com &#x2F; chatgpt.com）的限制最严格，因为它直接面向终端用户，是滥用的重灾区。OpenAI 在网页版前面部署了 Cloudflare 的防护层，对 IP 类型和地区的检测都很严格。</p><p>OpenAI API 的限制则相对宽松。API 的计费模式是按量付费，用户已经通过信用卡验证了身份，滥用的经济动机较低。因此 API 对数据中心 IP 的封锁力度明显弱于网页版。很多在网页版被封锁的 IP，通过 API 仍然可以正常调用。</p><p>这意味着如果你的主要需求是使用 ChatGPT 的能力（而非必须使用网页界面），通过 API 接入可以绕过大部分 IP 限制。市面上有不少基于 OpenAI API 的第三方客户端，它们的可用性通常优于直接访问 ChatGPT 网页版。</p><p><strong>推荐地区与节点类型</strong></p><ul><li>美国、日本、新加坡、台湾地区、英国的原生 IP 节点可用性最好</li><li>部分干净的数据中心 IP 仍然可用，但比例在持续下降</li><li>机场中标注”ChatGPT 可用”或”AI 解锁”的节点通常经过专门测试</li></ul><p><strong>付费订阅注意事项</strong></p><p>ChatGPT Plus &#x2F; Pro 订阅需要绑定支付方式。OpenAI 接受的支付方式有地区限制，中国大陆发行的信用卡通常无法使用。常见的解决方案包括使用虚拟信用卡服务（如 WildCard、Depay 等）或使用支持地区发行的实体信用卡。</p><h3 id="Claude-Anthropic"><a href="#Claude-Anthropic" class="headerlink" title="Claude (Anthropic)"></a>Claude (Anthropic)</h3><p><a href="https://claude.ai/">Claude</a> 的 IP 限制策略目前比 ChatGPT 宽松不少，但服务的可用地区本身比较有限。</p><p><strong>可用地区</strong></p><p>Anthropic 在逐步扩展 Claude 的可用地区，但截至目前，claude.ai 网页版的正式可用地区仍然集中在以下区域：</p><ul><li>美国</li><li>英国</li><li>部分欧洲国家</li><li>日本</li><li>澳大利亚</li><li>其他逐步扩展中的地区</li></ul><p>中国大陆不在支持地区之列。但与 OpenAI 不同的是，Anthropic 对 IP 类型的检测并不算严格。</p><p><strong>IP 限制策略</strong></p><ul><li><strong>数据中心 IP 容忍度较高</strong>：相比 ChatGPT，Claude 对数据中心 IP 的封锁力度明显较弱。很多在 ChatGPT 上被封锁的数据中心 IP，访问 Claude 仍然正常。这可能与 Anthropic 目前的用户规模和策略侧重有关——公司仍处于扩张阶段，对用户增长的优先级高于严格的 IP 管控。</li><li><strong>地区限制为主</strong>：Claude 的限制更多体现在地区层面而非 IP 类型层面。只要你的 IP 地理位置在支持的国家，不管是住宅 IP 还是数据中心 IP，大概率都能正常使用。</li><li><strong>频率限制</strong>：Claude 免费版有明确的使用量限制。如果同一 IP 的使用量异常偏高，可能触发额外的限制。这种限制更多是防滥用，而非地区封锁。</li></ul><p><strong>网页版 vs API</strong></p><p>Claude API 的可用范围比网页版更广。API 通过 API Key 认证和按量计费，对 IP 的限制进一步降低。在很多地区，即使 claude.ai 网页版无法直接访问，API 调用仍然正常。</p><p>和 OpenAI 类似，如果你主要需要 Claude 的能力，通过 API 接入是更稳定的方案。</p><p><strong>推荐地区与节点类型</strong></p><ul><li>美国、英国节点的可用性最佳</li><li>日本节点通常也可以正常使用</li><li>数据中心 IP 在多数情况下可用，选择范围比 ChatGPT 宽很多</li></ul><p><strong>付费订阅</strong></p><p>Claude Pro 订阅同样需要绑定国际信用卡。支持的支付方式与 OpenAI 类似，中国大陆发行的卡一般不可用，需要通过虚拟信用卡或海外卡解决。</p><h3 id="Google-Gemini"><a href="#Google-Gemini" class="headerlink" title="Google Gemini"></a>Google Gemini</h3><p>Gemini 是三大主流 AI 服务中访问限制最宽松的。</p><p><strong>可用地区</strong></p><p>Gemini 在大多数 Google 服务可用的国家和地区都可以访问。Google 的基础设施覆盖面极广，对 IP 管控的经验也最丰富——但这种经验被用来提供更好的服务覆盖，而非更严格的限制。</p><p>中国大陆由于 Google 服务本身被屏蔽，自然无法直接访问 Gemini。但这是 GFW 层面的封锁，而非 Google 自身的地区限制。只要你能访问 Google，基本就能使用 Gemini。</p><p><strong>IP 限制策略</strong></p><ul><li><strong>对 IP 类型不敏感</strong>：Gemini 对数据中心 IP 的封锁力度最低。Google 自身就是全球最大的云服务商之一（GCP），对来自数据中心的流量有更高的容忍度。</li><li><strong>依赖 Google 账号体系</strong>：Gemini 的访问控制更多依赖 Google 账号本身，而非 IP 地址。只要你有一个正常的 Google 账号，从大多数 IP 都可以正常使用 Gemini。</li><li><strong>Gemini Advanced 可能有额外限制</strong>：付费版的 Gemini Advanced 在某些地区可能暂未上线，但这更多是产品推广节奏的问题，而非 IP 封锁。</li></ul><p><strong>推荐地区与节点类型</strong></p><ul><li>几乎任何能访问 Google 的节点都可以使用 Gemini</li><li>美国、日本、新加坡、台湾地区等节点均可</li><li>数据中心 IP 通常不会遇到问题</li></ul><p><strong>付费订阅</strong></p><p>Gemini Advanced（Google One AI Premium）的订阅通过 Google One 平台完成。Google 的支付体系比 OpenAI 和 Anthropic 更成熟，支持的支付方式也更多。但中国大陆的支付方式仍然不被接受，需要使用外区 Google 账号配合国际支付方式。</p><h3 id="其他-AI-服务"><a href="#其他-AI-服务" class="headerlink" title="其他 AI 服务"></a>其他 AI 服务</h3><p><strong>Midjourney</strong></p><p>Midjourney 通过 Discord 平台提供服务（同时也有独立网页版）。Discord 本身在中国大陆被屏蔽，但只要你能访问 Discord，Midjourney 的使用基本不会遇到 IP 相关的限制。Discord 对 IP 类型不敏感，数据中心 IP 正常使用。</p><p><strong>Microsoft Copilot &#x2F; Bing AI</strong></p><p>作为微软的产品，Copilot 在全球大部分地区可用，包括中国大陆（通过 bing.com 访问）。IP 限制极少，可能是主流 AI 服务中最容易访问的。但部分高级功能可能有地区差异。</p><p><strong>Perplexity</strong></p><p>Perplexity 的可访问性介于 ChatGPT 和 Gemini 之间。对数据中心 IP 有一定的限制，但远不如 ChatGPT 严格。美国、日本等地区的节点通常可以正常使用。</p><p><strong>Suno &#x2F; Udio（AI 音乐生成）</strong></p><p>这类垂直领域的 AI 服务通常限制较少，但各自有不同的策略，需要逐个测试。一般来说，能访问 ChatGPT 的节点也能访问这些服务。</p><hr><h2 id="对比表"><a href="#对比表" class="headerlink" title="对比表"></a>对比表</h2><table><thead><tr><th>服务</th><th>封锁力度</th><th>推荐地区</th><th>数据中心 IP 可用性</th><th>API 限制</th><th>注册难度</th></tr></thead><tbody><tr><td>ChatGPT 网页版</td><td>⭐⭐⭐⭐</td><td>US &#x2F; JP &#x2F; SG &#x2F; TW</td><td>差</td><td>—</td><td>需海外手机号</td></tr><tr><td>ChatGPT API</td><td>⭐⭐</td><td>广泛</td><td>中等</td><td>宽松</td><td>需国际支付方式</td></tr><tr><td>Claude 网页版</td><td>⭐⭐⭐</td><td>US &#x2F; UK &#x2F; JP</td><td>中等</td><td>—</td><td>需海外手机号</td></tr><tr><td>Claude API</td><td>⭐⭐</td><td>广泛</td><td>较好</td><td>宽松</td><td>需国际支付方式</td></tr><tr><td>Gemini</td><td>⭐⭐</td><td>广泛</td><td>较好</td><td>宽松</td><td>需 Google 账号</td></tr><tr><td>Midjourney</td><td>⭐</td><td>N&#x2F;A（走 Discord）</td><td>好</td><td>N&#x2F;A</td><td>Discord 账号即可</td></tr><tr><td>Copilot</td><td>⭐</td><td>全球</td><td>好</td><td>宽松</td><td>微软账号即可</td></tr><tr><td>Perplexity</td><td>⭐⭐</td><td>US &#x2F; JP</td><td>中等</td><td>宽松</td><td>邮箱即可</td></tr></tbody></table><p>封锁力度说明：⭐ 越多表示越严格。⭐ &#x3D; 几乎无限制，⭐⭐⭐⭐ &#x3D; 主动封锁数据中心 IP 且限制地区。</p><hr><h2 id="实用建议"><a href="#实用建议" class="headerlink" title="实用建议"></a>实用建议</h2><h3 id="节点选择策略"><a href="#节点选择策略" class="headerlink" title="节点选择策略"></a>节点选择策略</h3><p>不同 AI 服务对节点的要求不同，以下是针对性的选择建议：</p><p><strong>ChatGPT 用户</strong></p><p>ChatGPT 对节点质量的要求最高。优先选择以下类型的节点：</p><ul><li>美国、日本原生 IP 节点：可用性最好，被封锁概率最低</li><li>新加坡、台湾地区节点：可用性较好，延迟对亚洲用户更友好</li><li>避免使用香港节点：香港在 OpenAI 的封锁名单中，使用香港 IP 访问可能导致账号被标记</li><li>避免使用热门共享节点：如果一个节点有几千人同时使用，该出口 IP 大概率已被 OpenAI 标记</li></ul><p><strong>Claude 用户</strong></p><p>Claude 的要求相对宽松：</p><ul><li>美国、英国节点是首选</li><li>日本节点通常可用</li><li>数据中心 IP 在大多数情况下不会遇到问题</li><li>选择范围比 ChatGPT 大很多，不需要刻意寻找原生 IP 节点</li></ul><p><strong>多 AI 服务用户</strong></p><p>如果你同时使用多个 AI 服务，建议在代理客户端中创建一个专门的”AI”策略组。将所有 AI 服务的域名指向这个策略组，选择一个质量较高的节点作为默认出口。这样既保证了 AI 服务的可用性，又不会影响其他流量的路由。</p><h3 id="代理规则配置"><a href="#代理规则配置" class="headerlink" title="代理规则配置"></a>代理规则配置</h3><p>在 Clash（<a href="https://github.com/MetaCubeX/mihomo">mihomo</a>）配置中，为 AI 服务创建专门的分流规则：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># AI 服务分流规则</span></span><br><span class="line"><span class="attr">rules:</span></span><br><span class="line">  <span class="comment"># OpenAI / ChatGPT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,openai.com,AI</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,chatgpt.com,AI</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,oaistatic.com,AI</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,oaiusercontent.com,AI</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># Anthropic / Claude</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,anthropic.com,AI</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,claude.ai,AI</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># Google Gemini</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,gemini.google.com,AI</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,bard.google.com,AI</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,aistudio.google.com,AI</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># Midjourney</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,midjourney.com,AI</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># Perplexity</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,perplexity.ai,AI</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># Suno</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,suno.com,AI</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 通用 AI 相关</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,openrouter.ai,AI</span></span><br></pre></td></tr></table></figure><p>如果使用 rule-provider，也可以将这些规则整理为一个独立的规则集文件，方便维护和更新。</p><p>对于 Sing-box 用户，对应的路由规则写法不同（使用 JSON 格式），但逻辑一致——将 AI 服务的域名指向专门的出站节点或策略组。</p><h3 id="账号注册建议"><a href="#账号注册建议" class="headerlink" title="账号注册建议"></a>账号注册建议</h3><p>AI 服务的账号注册环节同样需要注意 IP 问题：</p><p><strong>注册时使用干净 IP</strong></p><p>注册新账号时，尽量使用原生 IP 或干净的住宅 IP。原因是这些平台在注册阶段的 IP 检测往往比日常使用时更严格——注册是滥用者的必经之路，平台会在这个环节设置更高的门槛。</p><p>如果你使用一个被大量其他用户注册过的共享代理 IP，注册过程中可能会遇到更多的验证步骤，甚至直接被拒绝。</p><p><strong>手机号验证</strong></p><p>ChatGPT 和 Claude 的注册都需要手机号验证。中国大陆的手机号（+86）在这些平台通常不被接受。常见的解决方案：</p><ul><li>使用海外实体手机号（如果你有的话）</li><li>使用接码平台获取临时海外手机号（注意选择可靠的平台，避免号码被大量复用导致注册失败）</li><li>使用 Google Voice 等虚拟号码服务（部分平台可能不接受虚拟号码）</li></ul><p><strong>支付方式</strong></p><p>ChatGPT Plus、Claude Pro 等付费订阅需要国际支付方式。解决方案包括：</p><ul><li>虚拟信用卡服务：如 WildCard 等平台提供针对 AI 服务订阅优化的虚拟卡</li><li>海外实体信用卡：如果你有海外银行账户</li><li>Apple ID 余额：部分 AI 服务的 iOS 应用支持通过 App Store 订阅，可以使用外区 Apple ID 配合礼品卡充值</li></ul><p><strong>注册后的注意事项</strong></p><ul><li>不要频繁切换登录地区。今天从美国登录，明天从日本登录，后天从新加坡登录——这种模式在 AI 平台的安全系统看来非常可疑，可能触发安全审查甚至账号锁定</li><li>选定一个地区后尽量保持一致，偶尔切换问题不大，但频繁跳转风险较高</li><li>正常使用的情况下（不是大规模自动化调用），通过代理访问通常不会导致封号。但风险始终存在，因为它在技术上违反了这些服务的使用条款</li></ul><hr><h2 id="常见坑与避坑指南"><a href="#常见坑与避坑指南" class="headerlink" title="常见坑与避坑指南"></a>常见坑与避坑指南</h2><h3 id="坑一：香港节点与-ChatGPT"><a href="#坑一：香港节点与-ChatGPT" class="headerlink" title="坑一：香港节点与 ChatGPT"></a>坑一：香港节点与 ChatGPT</h3><p>这是最常见的坑之一。很多用户想当然地认为香港节点是访问海外服务的最佳选择——延迟低、速度快、带宽充足。但 OpenAI 明确将香港列为不支持的地区。使用香港 IP 访问 ChatGPT 不仅会被拒绝，还可能导致账号被标记。</p><p>如果你的机场默认节点是香港，务必为 ChatGPT 相关域名单独配置路由规则，将流量导向美国、日本等支持地区的节点。</p><h3 id="坑二：Netflix-能解锁不代表-ChatGPT-能用"><a href="#坑二：Netflix-能解锁不代表-ChatGPT-能用" class="headerlink" title="坑二：Netflix 能解锁不代表 ChatGPT 能用"></a>坑二：Netflix 能解锁不代表 ChatGPT 能用</h3><p>流媒体解锁和 AI 服务解锁使用不同的 IP 检测数据库和策略。Netflix 可能使用 MaxMind 的数据库来判断 IP 类型，而 OpenAI 可能使用另一套检测系统（包括但不限于 ipinfo.io、IPQualityScore 等）。</p><p>一个 IP 在 MaxMind 中被标记为住宅 IP（解锁 Netflix），但在 ipinfo.io 中被标记为数据中心 IP（无法使用 ChatGPT）——这种不一致完全可能发生。</p><p>所以不要用”能看 Netflix”来推断”能用 ChatGPT”，这两件事需要分别测试。</p><h3 id="坑三：频繁切换节点"><a href="#坑三：频繁切换节点" class="headerlink" title="坑三：频繁切换节点"></a>坑三：频繁切换节点</h3><p>很多代理客户端支持自动切换节点（如延迟最低自动选择、负载均衡等）。对于普通上网来说这很方便，但对 AI 服务来说可能带来问题。</p><p>如果你的客户端在一次对话过程中自动切换了节点——你的 IP 地址在会话中间突然从美国变成了日本——AI 平台的安全系统可能判定这是异常行为。轻则触发重新验证，重则导致会话中断。</p><p>建议为 AI 服务使用固定节点，而不是自动切换的策略组。或者至少将自动切换的范围限制在同一国家的节点之间。</p><h3 id="坑四：浏览器指纹"><a href="#坑四：浏览器指纹" class="headerlink" title="坑四：浏览器指纹"></a>坑四：浏览器指纹</h3><p>IP 地址不是 AI 平台检测的唯一维度。浏览器指纹——包括 User-Agent、屏幕分辨率、时区、语言设置、已安装的插件等——也是判断用户真实性的重要参考。</p><p>如果你的 IP 显示在美国，但浏览器的时区设置是 UTC+8（中国标准时间），语言是 zh-CN，这种不一致可能引起平台的怀疑。</p><p>建议：</p><ul><li>使用无痕&#x2F;隐私模式访问 AI 服务</li><li>或使用独立的浏览器配置文件（Profile），将语言和时区设置与节点所在地区匹配</li><li>避免在同一浏览器配置文件中混用不同地区的代理</li></ul><h3 id="坑五：免费节点的风险"><a href="#坑五：免费节点的风险" class="headerlink" title="坑五：免费节点的风险"></a>坑五：免费节点的风险</h3><p>免费代理节点（无论是免费机场还是公开的节点分享）在访问 AI 服务时问题尤其严重。这些节点通常被大量用户共享，出口 IP 早已被各大 AI 平台标记。不仅 ChatGPT 用不了，还可能因为节点提供者的监控导致账号信息泄露。</p><p>对于 AI 服务的访问，使用付费、有信誉的代理服务是基本要求。</p><hr><h2 id="长期方案"><a href="#长期方案" class="headerlink" title="长期方案"></a>长期方案</h2><h3 id="API-优先策略"><a href="#API-优先策略" class="headerlink" title="API 优先策略"></a>API 优先策略</h3><p>如果你是 AI 工具的重度用户，强烈建议考虑 API 接入方案。</p><p><strong>为什么 API 更稳定？</strong></p><ul><li>IP 限制比网页版宽松：API 用户已经通过付费验证了身份，平台对 API 流量的 IP 管控明显更松</li><li>不受前端变化影响：网页版的 Cloudflare 防护、验证码机制经常变化，API 调用不受这些影响</li><li>可以自由选择客户端：不必依赖官方网页界面，可以使用本地客户端、终端工具、或自建前端</li></ul><p><strong>API 接入方式</strong></p><ul><li>直接使用 OpenAI &#x2F; Anthropic &#x2F; Google AI 的官方 API</li><li>通过 OpenRouter 等 API 聚合服务统一调用多个模型</li><li>使用 ChatBox、LobeChat、NextChat 等开源客户端连接 API</li></ul><p>API 的缺点是需要按量付费，没有”包月无限使用”的选项（不像 ChatGPT Plus 月付固定金额）。但对于普通使用量的用户来说，API 的月费用通常低于 Plus 订阅费。</p><h3 id="专门的-AI-解锁节点"><a href="#专门的-AI-解锁节点" class="headerlink" title="专门的 AI 解锁节点"></a>专门的 AI 解锁节点</h3><p>越来越多的代理服务提供商意识到 AI 服务解锁的需求，开始提供专门的”AI 解锁”节点组。这些节点通常具备以下特征：</p><ul><li>使用经过 AI 服务可用性测试的 IP</li><li>用户密度较低（减少因共享 IP 被封的风险）</li><li>定期检测和更换被封锁的 IP</li></ul><p>如果你的机场提供此类节点，在代理规则中将 AI 服务域名指向这些专用节点是最省心的方案。</p><h3 id="自建方案"><a href="#自建方案" class="headerlink" title="自建方案"></a>自建方案</h3><p>如果你有技术能力并且对可控性有更高要求，自建代理节点来访问 AI 服务也是可行的：</p><ul><li>选择服务商时关注 IP 质量，而非只看价格和带宽。部分小众 VPS 供应商的 IP 尚未被大规模标记</li><li>定期检测你的 IP 是否仍然可用。可以通过 ipinfo.io 查询 IP 类型，或直接访问 AI 服务进行测试</li><li>如果你的 VPS IP 被封锁，联系供应商更换 IP 或更换供应商</li></ul><p>自建的优势在于独享 IP、没有其他用户的滥用行为影响你的 IP 信誉。劣势在于成本较高、维护需要一定的技术能力、且 IP 被封后需要自行解决。</p><hr><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="Q-为什么我的节点能看-Netflix-但不能用-ChatGPT？"><a href="#Q-为什么我的节点能看-Netflix-但不能用-ChatGPT？" class="headerlink" title="Q: 为什么我的节点能看 Netflix 但不能用 ChatGPT？"></a>Q: 为什么我的节点能看 Netflix 但不能用 ChatGPT？</h3><p>不同服务使用不同的 IP 检测系统和数据库。Netflix 的 IP 检测主要依赖 MaxMind 等地理位置数据库，而 OpenAI 可能使用 ipinfo.io、IPQualityScore 等更侧重于 IP 类型识别的服务。一个 IP 在不同数据库中的分类可能不一致——在 A 数据库中被标记为住宅 IP，在 B 数据库中被标记为数据中心 IP。因此，流媒体解锁能力和 AI 服务解锁能力需要分别测试，不能互相推断。</p><h3 id="Q-用代理访问-ChatGPT-会被封号吗？"><a href="#Q-用代理访问-ChatGPT-会被封号吗？" class="headerlink" title="Q: 用代理访问 ChatGPT 会被封号吗？"></a>Q: 用代理访问 ChatGPT 会被封号吗？</h3><p>有风险，但实际概率较低。OpenAI 的服务条款确实限制了从不支持地区的访问，从技术上说，使用代理绕过地区限制违反了条款。但在实际执行中，OpenAI 目前的主要精力集中在封锁 IP 端（阻止访问），而非封禁单个用户账号端。</p><p>在以下条件下，封号风险相对较低：</p><ul><li>使用干净的 IP（非大规模共享的代理 IP）</li><li>不频繁切换登录地区</li><li>正常的个人使用（非自动化批量调用）</li><li>账号有正常的付费记录</li></ul><p>但风险始终存在，这一点需要明确认知。</p><h3 id="Q-API-和网页版的-IP-限制有什么区别？"><a href="#Q-API-和网页版的-IP-限制有什么区别？" class="headerlink" title="Q: API 和网页版的 IP 限制有什么区别？"></a>Q: API 和网页版的 IP 限制有什么区别？</h3><p>API 的 IP 限制通常比网页版宽松得多。具体差异如下：</p><ul><li><strong>OpenAI</strong>：API 不限制访问地区（只限制注册地区和支付方式），对数据中心 IP 的容忍度也比网页版高。很多网页版被封锁的 IP 通过 API 仍可正常调用</li><li><strong>Anthropic</strong>：Claude API 同样比 claude.ai 网页版限制更少，可用地区更广</li><li><strong>Google</strong>：Gemini API（通过 AI Studio 或 Vertex AI）的地区限制与网页版大致相同，因为 Google 的 API 基础设施本身就是全球化的</li></ul><p>如果网页版遇到限制，可以优先尝试 API 接入。</p><h3 id="Q-有免费使用这些-AI-服务的方法吗？"><a href="#Q-有免费使用这些-AI-服务的方法吗？" class="headerlink" title="Q: 有免费使用这些 AI 服务的方法吗？"></a>Q: 有免费使用这些 AI 服务的方法吗？</h3><p>三大主流 AI 服务都提供免费层级：</p><ul><li><strong>ChatGPT</strong>：免费版可使用 GPT-4o mini 模型，有一定的使用频率限制</li><li><strong>Claude</strong>：免费版可使用 Claude Sonnet 模型，有每日使用量限制</li><li><strong>Gemini</strong>：免费版功能较为完整，使用限制相对宽松</li></ul><p>核心问题不在于服务本身是否免费，而在于访问通道是否畅通。上述免费层级在支持的地区可以直接使用，关键是解决从受限地区访问的问题。</p><h3 id="Q-哪个-AI-服务最容易访问？"><a href="#Q-哪个-AI-服务最容易访问？" class="headerlink" title="Q: 哪个 AI 服务最容易访问？"></a>Q: 哪个 AI 服务最容易访问？</h3><p>从 IP 限制的角度排序（从易到难）：</p><ol><li><strong>Gemini</strong> —— 最容易。只要能访问 Google，基本就能用 Gemini。对 IP 类型不敏感</li><li><strong>Copilot</strong> —— 很容易。微软服务全球可用性好，中国大陆可直接访问部分功能</li><li><strong>Claude</strong> —— 中等。地区限制有但 IP 类型检测不严格</li><li><strong>Perplexity</strong> —— 中等。有一定限制但不算严格</li><li><strong>ChatGPT</strong> —— 最难。地区限制 + IP 类型检测双重封锁</li></ol><p>如果你只是想尝试 AI 工具，从 Gemini 或 Copilot 开始是最省事的选择。</p><h3 id="Q-AI-服务的-IP-策略未来会怎么变？"><a href="#Q-AI-服务的-IP-策略未来会怎么变？" class="headerlink" title="Q: AI 服务的 IP 策略未来会怎么变？"></a>Q: AI 服务的 IP 策略未来会怎么变？</h3><p>难以准确预测，但可以观察到几个趋势：</p><ul><li><strong>可用地区逐步扩展</strong>：OpenAI 和 Anthropic 都在逐步开放更多地区的访问。随着这些公司的国际化战略推进，限制可能会逐步放宽</li><li><strong>对数据中心 IP 的封锁可能持续收紧</strong>：随着 AI 服务用户量增长，滥用问题只会更加严重，对数据中心 IP 的封锁力度预计会持续加强</li><li><strong>API 可能保持相对宽松</strong>：API 的按量付费模式天然减少了滥用动机，预计 API 的 IP 限制不会大幅收紧</li><li><strong>可能出现新的检测手段</strong>：除了 IP 类型检测之外，行为分析、设备指纹等更高级的检测手段可能被引入</li></ul><p>总体而言，通过高质量的代理节点访问 AI 服务在可预见的未来仍然是可行的，但对节点质量的要求会越来越高。</p>]]>
    </content>
    <id>https://blog.e.show/posts/ai-services-unlock/</id>
    <link href="https://blog.e.show/posts/ai-services-unlock/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>ChatGPT、Claude、Gemini 的 IP 策略各不相同。整理可用地区、解锁方法和实用建议。</summary>
    <title>ChatGPT / Claude / Gemini 的 IP 策略与解锁</title>
    <updated>2026-05-11T21:40:36.947Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="网络知识" scheme="https://blog.e.show/categories/%E7%BD%91%E7%BB%9C%E7%9F%A5%E8%AF%86/"/>
    <category term="BGP" scheme="https://blog.e.show/tags/BGP/"/>
    <category term="Anycast" scheme="https://blog.e.show/tags/Anycast/"/>
    <category term="路由" scheme="https://blog.e.show/tags/%E8%B7%AF%E7%94%B1/"/>
    <category term="网络" scheme="https://blog.e.show/tags/%E7%BD%91%E7%BB%9C/"/>
    <category term="CDN" scheme="https://blog.e.show/tags/CDN/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：你可能有过这样的体验——同样的目标网站，换一个代理节点速度天差地别。这背后的原因往往不是服务器配置的差异，而是网络路由的差异。BGP（边界网关协议）决定了互联网流量的传输路径，Anycast（任播）让同一个 IP 地址在全球多个位置同时服务。理解这两个概念，能帮助你理解为什么某些线路特别快，以及如何挑选更好的节点。</p></blockquote><h2 id="互联网是怎么传输数据的"><a href="#互联网是怎么传输数据的" class="headerlink" title="互联网是怎么传输数据的"></a>互联网是怎么传输数据的</h2><p>在了解 BGP 之前，先简单回顾一下互联网的基本结构。</p><p>互联网不是一个统一的网络，而是由成千上万个<strong>独立网络</strong>互相连接组成的。每个独立网络被称为一个 <strong>AS（Autonomous System，自治系统）</strong>，每个 AS 都有一个唯一的编号（ASN）。</p><p>举几个例子：</p><table><thead><tr><th>ASN</th><th>运营商</th><th>说明</th></tr></thead><tbody><tr><td>AS4134</td><td>中国电信 163</td><td>中国电信的普通骨干网</td></tr><tr><td>AS4809</td><td>中国电信 CN2</td><td>中国电信的精品网络</td></tr><tr><td>AS4837</td><td>中国联通</td><td>联通骨干网</td></tr><tr><td>AS9808</td><td>中国移动</td><td>移动骨干网</td></tr><tr><td>AS13335</td><td>Cloudflare</td><td>CDN 和网络安全服务</td></tr><tr><td>AS15169</td><td>Google</td><td>Google 的网络</td></tr><tr><td>AS32934</td><td>Meta (Facebook)</td><td>Meta 的网络</td></tr></tbody></table><p>当你从北京家中访问一台位于洛杉矶的服务器时，你的数据包不是直飞过去的——它需要在多个 AS 之间”接力传递”。从你的家庭宽带（运营商的接入网）→ 运营商的骨干网 → 国际出口 → 海底光缆 → 美国的骨干网 → 目标服务器所在的网络。</p><p>这个”接力”过程中，数据包在每个 AS 之间的”传递方式”就是由 <strong>BGP</strong> 决定的。</p><h2 id="BGP-是什么"><a href="#BGP-是什么" class="headerlink" title="BGP 是什么"></a>BGP 是什么</h2><p>BGP（Border Gateway Protocol，边界网关协议）是互联网的核心路由协议。它的作用简单来说就是：<strong>告诉每个网络，如何到达其他网络</strong>。</p><h3 id="BGP-的工作方式"><a href="#BGP-的工作方式" class="headerlink" title="BGP 的工作方式"></a>BGP 的工作方式</h3><p>每个 AS 通过 BGP 向邻居 AS 宣告（announce）自己管理的 IP 地址范围。这些宣告会在 AS 之间传播，最终形成一张全球性的路由表。</p><p>假设你在电信网络（AS4134）中，要访问 Google（AS15169）的服务器：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">你的电脑 → AS4134 (中国电信) → AS ??? → AS ??? → AS15169 (Google)</span><br></pre></td></tr></table></figure><p>中间经过哪些 AS，由 BGP 决定。BGP 会根据以下因素选择路径：</p><ol><li><strong>AS 路径长度</strong>：经过的 AS 数量越少，路径通常越短</li><li><strong>路由策略</strong>：运营商会配置各种策略偏好，比如优先使用成本更低的路径</li><li><strong>商业关系</strong>：AS 之间存在不同的商业关系（对等互联、上游购买、下游客户），这些关系影响路由选择</li><li><strong>网络拥塞</strong>：某些路径拥塞时，流量可能被引导到其他路径</li></ol><h3 id="AS-路径（AS-Path）"><a href="#AS-路径（AS-Path）" class="headerlink" title="AS 路径（AS Path）"></a>AS 路径（AS Path）</h3><p>AS Path 是 BGP 中最重要的属性之一。它记录了数据包到达目标需要经过的所有 AS。例如：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">AS4134 → AS4837 → AS6939 → AS15169</span><br></pre></td></tr></table></figure><p>这条路径表示：从中国电信出发，经过中国联通（可能在某个交换中心互联），然后到 Hurricane Electric（HE，美国的一个大型网络），最后到 Google。</p><p>AS Path 越短，通常延迟越低。但这不是绝对的——一条经过 3 个 AS 但物理距离很长的路径，可能比一条经过 5 个 AS 但物理距离短的路径更慢。</p><h3 id="为什么-BGP-路由对代理很重要"><a href="#为什么-BGP-路由对代理很重要" class="headerlink" title="为什么 BGP 路由对代理很重要"></a>为什么 BGP 路由对代理很重要</h3><p>BGP 路由直接决定了你使用代理时的实际网络体验：</p><p><strong>延迟（Latency）</strong>：好的路由意味着更少的中间跳转和更短的物理距离，延迟更低。</p><p><strong>带宽（Throughput）</strong>：不同路径的可用带宽不同。拥挤的路径会降低实际吞吐量。</p><p><strong>稳定性（Stability）</strong>：频繁变化的路由会导致连接不稳定，甚至出现丢包。</p><p><strong>丢包率（Packet Loss）</strong>：某些路径（特别是高峰期的国际出口）丢包率很高。</p><p>一个非常现实的例子：同样是从北京到洛杉矶的 VPS，使用中国电信 163 骨干网（AS4134）的路由可能延迟 200ms+ 且高峰期丢包严重；而使用中国电信 CN2 GIA（AS4809）的路由可能延迟只有 150ms 且几乎不丢包。两台 VPS 可能物理上在同一个数据中心，但网络体验天差地别。</p><h2 id="BGP-优化线路"><a href="#BGP-优化线路" class="headerlink" title="BGP 优化线路"></a>BGP 优化线路</h2><p>在代理领域，”优质线路”通常指的是有 BGP 优化的网络路径。以下是最常见的几种。</p><h3 id="CN2-GIA（全球互联网接入）"><a href="#CN2-GIA（全球互联网接入）" class="headerlink" title="CN2 GIA（全球互联网接入）"></a>CN2 GIA（全球互联网接入）</h3><p>CN2 GIA 是中国电信的高端国际线路，属于 AS4809。它的特点是：</p><ul><li><strong>双向 CN2</strong>：去程和回程都走 CN2 网络，不绕路</li><li><strong>低延迟</strong>：中美之间延迟通常在 130-160ms</li><li><strong>低丢包</strong>：即使在高峰期也能保持极低的丢包率</li><li><strong>价格昂贵</strong>：CN2 GIA 的 VPS 价格远高于普通线路</li></ul><p>CN2 GIA 之所以好，核心原因是它的 BGP 路由经过精心优化——流量走的是电信的精品骨干网，避开了拥挤的 163 骨干网。</p><h3 id="CUII（中国联通精品网）"><a href="#CUII（中国联通精品网）" class="headerlink" title="CUII（中国联通精品网）"></a>CUII（中国联通精品网）</h3><p>AS9929 是中国联通的精品网络（CUII），类似于电信的 CN2 GIA。对联通用户来说，CUII 线路提供了更好的国际出口体验。</p><h3 id="CMI（中国移动国际）"><a href="#CMI（中国移动国际）" class="headerlink" title="CMI（中国移动国际）"></a>CMI（中国移动国际）</h3><p>AS58453 是中国移动的国际出口。CMI 线路在近年来有较大改善，某些目的地的表现甚至优于 CN2。</p><h3 id="如何判断-VPS-使用的线路"><a href="#如何判断-VPS-使用的线路" class="headerlink" title="如何判断 VPS 使用的线路"></a>如何判断 VPS 使用的线路</h3><p>使用 traceroute（或 Windows 上的 tracert）可以查看数据包的路由路径：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">traceroute -I your-server-ip</span><br></pre></td></tr></table></figure><p>或者使用更好用的 <code>mtr</code>（结合了 ping 和 traceroute 的功能）：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mtr your-server-ip</span><br></pre></td></tr></table></figure><p>在 traceroute 的结果中，关注以下 IP 段可以判断走的是什么线路：</p><table><thead><tr><th>IP 段特征</th><th>线路</th></tr></thead><tbody><tr><td>59.43.x.x</td><td>CN2 (AS4809)</td></tr><tr><td>202.97.x.x</td><td>163 骨干网 (AS4134)</td></tr><tr><td>219.158.x.x</td><td>联通骨干 (AS4837)</td></tr><tr><td>218.105.x.x &#x2F; 223.120.x.x</td><td>移动骨干 (AS9808&#x2F;AS58453)</td></tr></tbody></table><p>如果去程（从你到服务器）走的全是 59.43 开头的 IP，说明你走的是 CN2 线路。</p><h2 id="Anycast-是什么"><a href="#Anycast-是什么" class="headerlink" title="Anycast 是什么"></a>Anycast 是什么</h2><p>理解了 BGP 之后，Anycast 就很好理解了。</p><p>在正常的互联网通信中，一个 IP 地址对应一台服务器——这叫做 <strong>Unicast（单播）</strong>。无论你在世界哪个角落访问这个 IP，数据包都会被路由到同一台服务器。</p><p><strong>Anycast（任播）</strong> 则完全不同：<strong>同一个 IP 地址在全球多个位置同时被宣告</strong>。当你访问一个 Anycast IP 时，BGP 会自动将你的流量路由到离你最近的那个位置。</p><p>用一个比喻来理解：</p><ul><li><strong>Unicast</strong> 像是只有一家总店的餐厅——无论你住在哪里，想吃就得去总店</li><li><strong>Anycast</strong> 像是连锁餐厅——每个城市都有分店，你自然会去离你最近的那家</li></ul><h3 id="Anycast-的工作原理"><a href="#Anycast-的工作原理" class="headerlink" title="Anycast 的工作原理"></a>Anycast 的工作原理</h3><p>Anycast 的实现依赖于 BGP。假设一个服务在全球 10 个位置部署了服务器，这 10 个位置的路由器都通过 BGP 向外宣告同一段 IP 地址。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">美国西海岸数据中心 → BGP 宣告: 1.2.3.0/24</span><br><span class="line">欧洲法兰克福数据中心 → BGP 宣告: 1.2.3.0/24</span><br><span class="line">亚太新加坡数据中心 → BGP 宣告: 1.2.3.0/24</span><br><span class="line">...</span><br></pre></td></tr></table></figure><p>当北京的用户访问 1.2.3.1 时，BGP 路由系统会发现到 1.2.3.0&#x2F;24 有多条路径，然后选择 AS 路径最短（通常也是物理距离最近）的那条——大概率是新加坡的数据中心。而当纽约的用户访问同一个 IP 时，流量会被路由到美国西海岸的数据中心。</p><p>所有这一切对用户来说是透明的——他们访问的是同一个 IP 地址，但实际响应来自不同的物理服务器。</p><h3 id="Cloudflare：Anycast-的典型案例"><a href="#Cloudflare：Anycast-的典型案例" class="headerlink" title="Cloudflare：Anycast 的典型案例"></a>Cloudflare：Anycast 的典型案例</h3><p><a href="https://www.cloudflare.com/">Cloudflare</a> 是 Anycast 技术的最大规模应用者之一。Cloudflare 在全球 300 多个城市部署了数据中心，所有数据中心都通过 BGP 宣告相同的 IP 地址。</p><p>当你使用 Cloudflare 的 DNS 服务（1.1.1.1）时，你的请求会被自动路由到离你最近的 Cloudflare 数据中心。在中国大陆，这通常是香港、日本或新加坡的节点。</p><p>这就是为什么 Cloudflare 的 DNS 在全球范围内都能提供很低的延迟——不是因为某一台服务器特别快，而是因为在你附近总有一台服务器在响应。</p><h3 id="Anycast-的优势"><a href="#Anycast-的优势" class="headerlink" title="Anycast 的优势"></a>Anycast 的优势</h3><ol><li><strong>低延迟</strong>：用户总是连接到最近的服务器</li><li><strong>高可用</strong>：某个数据中心故障时，流量自动切换到下一个最近的位置</li><li><strong>DDoS 防护</strong>：攻击流量会被分散到全球各个位置，不会集中打击单一服务器</li><li><strong>简单部署</strong>：客户端不需要做任何特殊配置，IP 地址始终不变</li></ol><h3 id="Anycast-的局限"><a href="#Anycast-的局限" class="headerlink" title="Anycast 的局限"></a>Anycast 的局限</h3><ol><li><strong>TCP 长连接不友好</strong>：如果 BGP 路由发生变化，可能导致已建立的 TCP 连接断开（因为流量被路由到了不同的服务器）</li><li><strong>无法精确控制</strong>：你不能选择连接到哪个位置，完全由 BGP 路由决定</li><li><strong>部署成本高</strong>：需要在全球多个位置部署服务器，且需要自己的 AS 和 IP 段</li></ol><h2 id="代理服务如何利用-BGP-和-Anycast"><a href="#代理服务如何利用-BGP-和-Anycast" class="headerlink" title="代理服务如何利用 BGP 和 Anycast"></a>代理服务如何利用 BGP 和 Anycast</h2><p>理解了 BGP 和 Anycast 之后，让我们看看代理服务是如何利用这些概念的。</p><h3 id="BGP-优化：选择更好的上游"><a href="#BGP-优化：选择更好的上游" class="headerlink" title="BGP 优化：选择更好的上游"></a>BGP 优化：选择更好的上游</h3><p>高质量的 VPS 提供商会通过 BGP 优化来提供更好的网络路径。具体做法包括：</p><p><strong>多线接入（Multi-homed）</strong>：VPS 连接多个上游网络提供商，通过 BGP 选择最优路径。例如，一台位于洛杉矶的 VPS 可能同时接入了 Cogent、NTT 和 PCCW 三家上游，对于来自中国的流量，BGP 会选择经过 PCCW（太平洋方向优化）的路径。</p><p><strong>BGP 社区（BGP Communities）</strong>：运营商通过 BGP 社区属性来标记和控制路由策略。高端 VPS 提供商可能提供 BGP 社区控制功能，允许用户自定义路由策略。</p><p><strong>直接互联（Peering）</strong>：在互联网交换点（IXP）直接互联，减少中间跳转。这是为什么某些 VPS 在特定地区表现特别好的原因——它们与当地的运营商有直接互联关系。</p><h3 id="中转-IPLC-的-BGP-原理"><a href="#中转-IPLC-的-BGP-原理" class="headerlink" title="中转&#x2F;IPLC 的 BGP 原理"></a>中转&#x2F;IPLC 的 BGP 原理</h3><p>中转节点（relay）的核心思路是利用 BGP 路由优化来改善整体路径。一般的工作方式是：</p><ol><li>在中国境内部署一台服务器（入口节点），连接到优质骨干网</li><li>入口节点通过优化的线路（如 CN2 GIA、IPLC 专线等）连接到海外服务器（出口节点）</li><li>用户连接入口节点，流量通过优化路径到达出口节点，再访问目标网站</li></ol><p>这实际上是在 BGP 无法优化的路径上，通过额外的网络跳转来”绕开”拥塞。</p><h3 id="CDN-与-Anycast-的结合"><a href="#CDN-与-Anycast-的结合" class="headerlink" title="CDN 与 Anycast 的结合"></a>CDN 与 Anycast 的结合</h3><p>一些高端机场服务使用类似 CDN 的架构——在全球多个位置部署入口节点，使用 Anycast 或智能 DNS 将用户引导到最近的入口。这种架构能提供更一致的用户体验，但成本也相应更高。</p><h2 id="如何利用这些知识选择更好的节点"><a href="#如何利用这些知识选择更好的节点" class="headerlink" title="如何利用这些知识选择更好的节点"></a>如何利用这些知识选择更好的节点</h2><h3 id="查看路由路径"><a href="#查看路由路径" class="headerlink" title="查看路由路径"></a>查看路由路径</h3><p>使用 traceroute 或 mtr 查看从你到代理服务器的路由路径。关注以下几点：</p><ol><li><strong>经过的 AS 数量</strong>：越少通常越好</li><li><strong>是否走优质线路</strong>：查看是否经过 CN2（59.43.x.x）等优质骨干网</li><li><strong>是否有明显绕路</strong>：比如从北京到东京，如果路由先绕到美国再回来，那就是绕路了</li><li><strong>高延迟跳</strong>：如果某一跳的延迟突然增加了 100ms 以上，说明那里是瓶颈</li></ol><h3 id="选择合适的机房位置"><a href="#选择合适的机房位置" class="headerlink" title="选择合适的机房位置"></a>选择合适的机房位置</h3><p>对于中国大陆用户，以下机房位置通常有较好的网络表现：</p><ul><li><strong>香港</strong>：物理距离近，延迟低，是最受欢迎的节点位置</li><li><strong>日本东京</strong>：延迟适中，与中国运营商的互联质量通常不错</li><li><strong>新加坡</strong>：对南方用户较友好</li><li><strong>美国西海岸（洛杉矶&#x2F;圣何塞）</strong>：CN2 GIA 线路表现优秀</li><li><strong>韩国首尔</strong>：延迟低，但带宽通常较小</li></ul><h3 id="关注线路标识"><a href="#关注线路标识" class="headerlink" title="关注线路标识"></a>关注线路标识</h3><p>机场和 VPS 提供商通常会标注线路类型：</p><ul><li><strong>CN2 GIA</strong>：最优质的电信国际线路，三网优化</li><li><strong>CN2 GT</strong>：CN2 的普通版，去程走 CN2 但回程可能走 163</li><li><strong>BGP 优化</strong>：多线接入，自动选择最优路径</li><li><strong>IPLC&#x2F;IEPL</strong>：国际专线，不经过公共互联网，最稳定但最贵</li><li><strong>普通线路</strong>：走运营商默认的 BGP 路由，高峰期可能拥塞</li></ul><h3 id="理解”三网优化”"><a href="#理解”三网优化”" class="headerlink" title="理解”三网优化”"></a>理解”三网优化”</h3><p>“三网优化”指的是对中国电信、联通、移动三大运营商都进行了路由优化。普通的 VPS 可能只对某一家运营商的路由较好，而三网优化的节点通过 BGP 多线接入，保证三家运营商的用户都有不错的体验。</p><h2 id="用-traceroute-读懂路由"><a href="#用-traceroute-读懂路由" class="headerlink" title="用 traceroute 读懂路由"></a>用 traceroute 读懂路由</h2><p>traceroute 是诊断网络路径最重要的工具。以下是一个简化的阅读指南。</p><h3 id="基本用法"><a href="#基本用法" class="headerlink" title="基本用法"></a>基本用法</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Linux / macOS</span></span><br><span class="line">traceroute -I your-server-ip</span><br><span class="line"></span><br><span class="line"><span class="comment"># Windows</span></span><br><span class="line">tracert your-server-ip</span><br><span class="line"></span><br><span class="line"><span class="comment"># 更好的选择：mtr（需要安装）</span></span><br><span class="line">mtr your-server-ip</span><br></pre></td></tr></table></figure><h3 id="解读输出"><a href="#解读输出" class="headerlink" title="解读输出"></a>解读输出</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">1  192.168.1.1     1.2ms   ← 你的路由器</span><br><span class="line">2  100.64.0.1      5.3ms   ← 运营商接入网</span><br><span class="line">3  202.97.33.1    10.2ms   ← 163 骨干网（电信）</span><br><span class="line">4  202.97.90.1    35.6ms   ← 163 骨干网国际出口</span><br><span class="line">5  218.30.54.1   160.2ms   ← 跨太平洋海底光缆</span><br><span class="line">6  69.174.14.1   155.8ms   ← 美国骨干网</span><br><span class="line">7  104.16.88.1   158.3ms   ← 目标服务器</span><br></pre></td></tr></table></figure><p>关注点：</p><ul><li><strong>第 3-4 跳</strong>：如果 IP 是 59.43.x.x 说明走的 CN2，202.97.x.x 说明走的 163 普通骨干</li><li><strong>延迟突增的位置</strong>：第 4→5 跳延迟从 35ms 跳到 160ms，这是跨洋传输造成的，属于正常</li><li><strong>星号（*）</strong>：表示该跳未响应 ICMP，不一定是问题——很多路由器配置为不回应 traceroute</li><li><strong>延迟波动</strong>：如果某一跳的延迟在多次测试中波动很大，说明该节点可能拥塞</li></ul><h2 id="常见问题（FAQ）"><a href="#常见问题（FAQ）" class="headerlink" title="常见问题（FAQ）"></a>常见问题（FAQ）</h2><h3 id="Q1：BGP-优化对普通用户有多大影响？"><a href="#Q1：BGP-优化对普通用户有多大影响？" class="headerlink" title="Q1：BGP 优化对普通用户有多大影响？"></a>Q1：BGP 优化对普通用户有多大影响？</h3><p>影响很大。同一台服务器，走 CN2 GIA 和走 163 普通线路的体验可能完全不同。好的 BGP 路由能将延迟降低 30-50%，高峰期丢包率降低 90% 以上。对于代理用户来说，选择 BGP 优化的线路是提升体验最有效的方式之一。</p><h3 id="Q2：为什么我-traceroute-时某些跳显示星号？"><a href="#Q2：为什么我-traceroute-时某些跳显示星号？" class="headerlink" title="Q2：为什么我 traceroute 时某些跳显示星号？"></a>Q2：为什么我 traceroute 时某些跳显示星号？</h3><p>很多路由器配置为不回应 ICMP traceroute 请求（出于安全考虑），这不代表网络有问题。关注起点和终点的延迟即可。</p><h3 id="Q3：Anycast-会导致代理连接不稳定吗？"><a href="#Q3：Anycast-会导致代理连接不稳定吗？" class="headerlink" title="Q3：Anycast 会导致代理连接不稳定吗？"></a>Q3：Anycast 会导致代理连接不稳定吗？</h3><p>理论上存在这种可能——如果 BGP 路由在连接过程中发生变化，TCP 连接可能被路由到不同的服务器导致断开。但在实际使用中，BGP 路由变化不会非常频繁，这种情况比较少见。</p><h3 id="Q4：CN2-GIA-和-IPLC-哪个更好？"><a href="#Q4：CN2-GIA-和-IPLC-哪个更好？" class="headerlink" title="Q4：CN2 GIA 和 IPLC 哪个更好？"></a>Q4：CN2 GIA 和 IPLC 哪个更好？</h3><p>IPLC（国际私有租用线路）是专线，不走公共互联网，理论上最稳定。CN2 GIA 走的仍然是公共网络，但路径经过优化。在大多数情况下 CN2 GIA 已经够用，IPLC 价格贵很多但边际收益有限，适合对延迟和稳定性要求极高的场景。</p><h3 id="Q5：如何知道我当前走的是什么线路？"><a href="#Q5：如何知道我当前走的是什么线路？" class="headerlink" title="Q5：如何知道我当前走的是什么线路？"></a>Q5：如何知道我当前走的是什么线路？</h3><p>使用 mtr 或 traceroute 查看路由路径，根据中间节点的 IP 地址判断走的是哪个运营商的哪条线路。也可以使用 <a href="https://tools.ipip.net/traceroute.php">ipip.net</a> 等在线 traceroute 工具。</p><h3 id="Q6：BGP-路由会随时间变化吗？"><a href="#Q6：BGP-路由会随时间变化吗？" class="headerlink" title="Q6：BGP 路由会随时间变化吗？"></a>Q6：BGP 路由会随时间变化吗？</h3><p>会。BGP 路由受到网络状况、运营商策略等多种因素影响，可能在不同时段走不同的路径。这也是为什么同一个节点在白天和晚上高峰期的速度可能差别很大。</p><h2 id="外部链接"><a href="#外部链接" class="headerlink" title="外部链接"></a>外部链接</h2><ul><li><a href="https://bgp.tools/">bgp.tools</a> — BGP 和 ASN 信息查询</li><li><a href="https://tools.ipip.net/traceroute.php">ipip.net 路由追踪</a> — 在线 traceroute 工具</li><li><a href="https://bgp.he.net/">Hurricane Electric BGP Toolkit</a> — 详细的 BGP 数据</li><li><a href="https://www.peeringdb.com/">PeeringDB</a> — 互联网交换点和对等互联信息</li><li><a href="https://www.cloudflare.com/network/">Cloudflare 网络地图</a> — Anycast 部署示例</li></ul><hr><p><em>理解 BGP 和 Anycast 不需要成为网络工程师，但掌握这些基础知识能帮助你做出更好的节点选择，并理解为什么某些线路的价格差异如此之大。</em></p>]]>
    </content>
    <id>https://blog.e.show/posts/bgp-anycast/</id>
    <link href="https://blog.e.show/posts/bgp-anycast/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>BGP 决定了互联网流量的路径，Anycast 让同一个 IP 在全球多个位置响应。理解这些概念有助于理解为什么某些节点特别快。</summary>
    <title>BGP 与 Anycast：为什么有些节点全球都快</title>
    <updated>2026-05-09T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="选择与评估" scheme="https://blog.e.show/categories/%E9%80%89%E6%8B%A9%E4%B8%8E%E8%AF%84%E4%BC%B0/"/>
    <category term="倍率" scheme="https://blog.e.show/tags/%E5%80%8D%E7%8E%87/"/>
    <category term="流量" scheme="https://blog.e.show/tags/%E6%B5%81%E9%87%8F/"/>
    <category term="限速" scheme="https://blog.e.show/tags/%E9%99%90%E9%80%9F/"/>
    <category term="设备数" scheme="https://blog.e.show/tags/%E8%AE%BE%E5%A4%87%E6%95%B0/"/>
    <category term="机场" scheme="https://blog.e.show/tags/%E6%9C%BA%E5%9C%BA/"/>
    <category term="套餐" scheme="https://blog.e.show/tags/%E5%A5%97%E9%A4%90/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：选择机场套餐时，你会看到”月流量 500G”、”倍率 0.5x”、”限速 300Mbps”、”同时在线 3 设备”等参数。这些数字直接影响你的使用体验和实际成本。本文逐一解释每个参数的含义和选择要点。</p></blockquote><hr><h2 id="流量（Traffic-Bandwidth-Quota）"><a href="#流量（Traffic-Bandwidth-Quota）" class="headerlink" title="流量（Traffic &#x2F; Bandwidth Quota）"></a>流量（Traffic &#x2F; Bandwidth Quota）</h2><h3 id="什么是月流量"><a href="#什么是月流量" class="headerlink" title="什么是月流量"></a>什么是月流量</h3><p>月流量是你每个月可以通过代理传输的数据总量，通常以 GB 或 TB 为单位。它在每个计费周期（通常是订阅日当天）重置。</p><p>需要明确的一点：<strong>月流量只计算经过代理的流量</strong>。你的直连流量（比如访问国内网站）走的是你自己的宽带，不消耗机场的配额。代理客户端的分流规则决定了哪些流量走代理、哪些直连——这也是为什么合理的分流配置不仅影响速度，还直接影响流量消耗。</p><p>大部分机场的流量计算方式是<strong>上传+下载合并计算</strong>。也就是说，你从 YouTube 下载了 1GB 的视频数据，实际消耗的流量就是 1GB 左右（上传请求的数据量很小，可以忽略）。少数机场会将上传和下载分开计算，这种情况下实际消耗会略高，但差异不大。</p><h3 id="多少流量够用"><a href="#多少流量够用" class="headerlink" title="多少流量够用"></a>多少流量够用</h3><p>不同使用场景下的月流量消耗差异很大。以下是实际估算值：</p><p><strong>轻度使用（30-50 GB&#x2F;月）</strong>：日常浏览网页、收发邮件、使用社交媒体（Twitter、Telegram、Instagram）。文字和图片为主的内容消耗流量很少，刷一天 Twitter 大概消耗 1-2GB。</p><p><strong>中度使用（100-200 GB&#x2F;月）</strong>：经常观看 YouTube 视频，以 1080p 为主。YouTube 1080p 视频的码率大约在 4-8 Mbps，一小时消耗约 2-4GB。每天看两小时视频，一个月就是 120-240GB。</p><p><strong>重度使用（300-500 GB&#x2F;月）</strong>：高频观看 4K 流媒体内容（Netflix、Disney+等）。4K 视频的码率约 15-25 Mbps，一小时消耗约 7-10GB。如果你是影视重度用户，这个范围是起步。</p><p><strong>远程办公（200-400 GB&#x2F;月）</strong>：全天通过代理进行远程工作，包括视频会议（Zoom&#x2F;Google Meet）、代码仓库同步、云文档协作。视频会议一小时约消耗 1-2GB，加上其他工作流量，全天大约 8-15GB。</p><p><strong>极重度使用（500GB-1TB+&#x2F;月）</strong>：大量下载文件、高频使用 AI 服务（ChatGPT、Claude 等生成大量图片或长上下文对话）、做种或下载大型资源。如果你属于这个级别，通常需要 1TB 以上的套餐或不限量套餐。</p><h3 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h3><p><strong>“不限量”套餐的真相</strong>。号称不限量的套餐往往附带隐性限制：可能有公平使用政策（Fair Use Policy），超过某个阈值后自动降速；可能高峰时段优先级低于限量套餐用户；也可能只是把限速设得很低，让你物理上用不了太多。购买前务必看清条款。</p><p><strong>闲时流量不计费</strong>。部分机场会在非高峰时段（通常是凌晨到早上）不计算流量消耗。如果你有大文件需要下载，可以安排在这个时间段进行，可以省下不少配额。</p><p><strong>流量用完后的处理</strong>。大多数机场在流量耗尽后会直接断开代理连接，或者将速度限制到极低（如 128Kbps 或 1Mbps），直到下个计费周期重置。部分机场提供额外购买流量包的选项。需要注意的是，与手机流量超额计费不同，机场通常<strong>不会产生额外费用</strong>——用完就是用完了。</p><hr><h2 id="倍率（Rate-Multiplier）"><a href="#倍率（Rate-Multiplier）" class="headerlink" title="倍率（Rate &#x2F; Multiplier）"></a>倍率（Rate &#x2F; Multiplier）</h2><h3 id="什么是倍率"><a href="#什么是倍率" class="headerlink" title="什么是倍率"></a>什么是倍率</h3><p>倍率是机场对不同节点设置的流量计算系数。它改变的不是你实际传输的数据量，而是从你套餐配额中扣除的量。</p><p>具体来说：</p><ul><li><strong>1x（一倍率）</strong>：标准计费。使用 1GB 实际数据，扣除 1GB 配额。</li><li><strong>0.5x（半倍率）</strong>：半价计费。使用 1GB 实际数据，只扣除 0.5GB 配额。</li><li><strong>0.1x（低倍率）</strong>：近乎免费。使用 1GB 实际数据，只扣除 0.1GB 配额。</li><li><strong>2x（双倍率）</strong>：加倍计费。使用 1GB 实际数据，扣除 2GB 配额。</li><li><strong>3x 或更高</strong>：高倍率，通常出现在最高品质的专线节点上。</li></ul><p>举个实际的例子：你有一个 300GB 的月套餐。如果你只使用 0.5x 倍率的节点，你实际可以传输 600GB 的数据。反过来，如果你只使用 2x 倍率的节点，你的实际可用流量只有 150GB。</p><h3 id="为什么存在倍率"><a href="#为什么存在倍率" class="headerlink" title="为什么存在倍率"></a>为什么存在倍率</h3><p>倍率本质上是机场运营者的成本管理工具。不同类型的线路成本差异巨大：</p><p><strong>低倍率节点（0.1x-0.5x）</strong> 通常是直连线路或普通中转线路。这些线路的带宽成本低，但可能在高峰期拥堵、延迟较高、稳定性一般。机场用低倍率鼓励用户使用这些线路，分担高端线路的负载压力。</p><p><strong>标准倍率节点（1x）</strong> 是最常见的配置，使用的是普通中转线路，品质和成本都处于中间水平。</p><p><strong>高倍率节点（1.5x-3x+）</strong> 通常是 IPLC&#x2F;IEPL 专线或优质 BGP 中转线路。IPLC 专线的带宽成本可以是普通线路的 5-10 倍，质量也确实更好——延迟低、稳定、不受国际出口拥堵影响。机场用高倍率来覆盖这些成本，同时防止所有用户都涌向这些节点。</p><p>倍率机制实现了一种经济层面的分流：对速度和稳定性要求不高的日常浏览被引导到低成本线路，而高品质线路被保留给真正需要的场景。</p><h3 id="选择策略"><a href="#选择策略" class="headerlink" title="选择策略"></a>选择策略</h3><p><strong>日常浏览：优先选择低倍率节点</strong>。刷 Twitter、看新闻、浏览网页这类操作对延迟和速度要求不高，使用 0.1x-0.5x 的节点完全够用，还能大幅节省配额。</p><p><strong>流媒体和远程办公：根据实际需求选择</strong>。如果低倍率节点能流畅播放 YouTube 1080p，就没必要切到高倍率节点。但如果你需要稳定的 4K 播放或者不能断线的视频会议，高倍率的专线节点值得消耗。</p><p><strong>计算有效流量</strong>。在比较不同机场的套餐时，不要只看标称流量，要考虑倍率的影响。一个 500GB 套餐如果大部分节点是 0.5x 倍率，实际可用流量约 1TB；而另一个 800GB 套餐如果节点全是 1x 倍率，实际可用就是 800GB。前者反而更划算。</p><p><strong>不要过度纠结倍率</strong>。如果你的套餐流量本身很充裕（比如 1TB 以上），倍率的影响就不大了。优先选择速度和稳定性最好的节点，不必为了省流量而忍受差的体验。</p><hr><h2 id="限速（Speed-Limit）"><a href="#限速（Speed-Limit）" class="headerlink" title="限速（Speed Limit）"></a>限速（Speed Limit）</h2><h3 id="限速的类型"><a href="#限速的类型" class="headerlink" title="限速的类型"></a>限速的类型</h3><p>限速分为多个层面，理解它们的区别很重要：</p><p><strong>套餐限速（Plan Speed Limit）</strong>：这是你购买的套餐所允许的最大速度，适用于你通过代理传输的所有数据。不同价位的套餐通常有不同的速度上限：</p><ul><li>入门套餐：50-100 Mbps</li><li>标准套餐：100-300 Mbps</li><li>高级套餐：300-1000 Mbps</li><li>旗舰套餐：不限速（通常标注为”Unlimited”或”不限速”）</li></ul><p><strong>节点限速（Node Speed Limit）</strong>：单个节点本身的带宽上限。即使你的套餐不限速，如果某个节点只有 500Mbps 的带宽上限，你在这个节点上就跑不到更高。节点限速通常不在套餐说明中体现，需要实际测试才能知道。</p><p><strong>共享带宽 vs 独享带宽</strong>：这是一个经常被忽略的概念。</p><ul><li><strong>共享带宽</strong>：一个节点的总带宽由所有使用该节点的用户共享。如果一个节点有 1Gbps 带宽，100 个用户同时使用，平均每人只有 10Mbps。高峰期速度会明显下降。</li><li><strong>独享带宽</strong>：你的速度不受其他用户影响。这种模式成本极高，通常只出现在高端套餐或自建服务器中。</li></ul><p>绝大多数机场采用的是共享带宽模式。这意味着标称速度只是理论最大值，实际速度取决于同时在线的用户数量和他们的使用情况。</p><h3 id="实际速度需求"><a href="#实际速度需求" class="headerlink" title="实际速度需求"></a>实际速度需求</h3><p>很多用户高估了自己对带宽的需求。以下是各场景的实际需求：</p><ul><li><strong>网页浏览</strong>：10 Mbps 绰绰有余。网页加载速度更多取决于延迟而非带宽。</li><li><strong>1080p 视频流</strong>：10-20 Mbps。YouTube 和 Netflix 的 1080p 流需要约 5-8 Mbps 的持续带宽，留一些余量就够了。</li><li><strong>4K 视频流</strong>：25-50 Mbps。Netflix 4K 需要约 25 Mbps，YouTube 4K 可能更高一些。</li><li><strong>游戏</strong>：5-10 Mbps 的带宽就够了，但<strong>延迟（Ping）比带宽重要得多</strong>。一个延迟 30ms 但速度只有 10Mbps 的节点，游戏体验远好于延迟 200ms 但速度 500Mbps 的节点。</li><li><strong>远程办公（视频会议）</strong>：10-30 Mbps。Zoom 高清视频通话需要约 3-5 Mbps 上下行，多人会议需要更多。</li><li><strong>大文件下载</strong>：越快越好，但这不是常态需求。</li></ul><p>结论是：<strong>对大多数用户来说，100 Mbps 的套餐限速已经远超日常需求</strong>。除非你有持续的大文件下载需求或者同时进行多个高带宽活动，否则为不限速套餐额外付费通常不划算。</p><h3 id="注意事项-1"><a href="#注意事项-1" class="headerlink" title="注意事项"></a>注意事项</h3><p><strong>标称速度不等于实际速度</strong>。机场标称的速度是理论最大值。实际速度受多种因素影响：当前使用该节点的用户数量、国际出口的拥堵程度、你本地的网络环境、目标服务器的响应速度等。高峰时段（晚上 8-11 点）速度下降是普遍现象。</p><p><strong>ISP 带宽是天花板</strong>。你的本地宽带速度是一切的前提。如果你的家庭宽带是 100Mbps，那么花钱买 500Mbps 限速的代理套餐就是浪费——你的速度永远不会超过 100Mbps。购买代理套餐前，先用 <a href="https://www.speedtest.net/">Speedtest</a> 测一下你的裸连速度。</p><p><strong>测速结果仅供参考</strong>。很多用户热衷于跑测速截图，但测速和实际使用是两回事。测速时服务器负载可能较低，且测速工具会尽力拉满带宽。日常使用中的体验更取决于延迟、丢包率和稳定性，而不是峰值带宽。一个速度中等但全天稳定的节点，体验远好于时快时慢的节点。</p><hr><h2 id="在线设备数（Device-Limit）"><a href="#在线设备数（Device-Limit）" class="headerlink" title="在线设备数（Device Limit）"></a>在线设备数（Device Limit）</h2><h3 id="什么是设备限制"><a href="#什么是设备限制" class="headerlink" title="什么是设备限制"></a>什么是设备限制</h3><p>设备限制是指你的订阅允许<strong>同时</strong>使用代理服务的设备数量。关键词是”同时”——不是你总共可以在多少设备上安装客户端，而是同一时间有多少设备在活跃使用。</p><p>常见的设备限制从 1 到 5 台不等，取决于套餐等级。</p><h3 id="怎么计算"><a href="#怎么计算" class="headerlink" title="怎么计算"></a>怎么计算</h3><p><strong>基本计算方式</strong>：每个运行代理客户端并连接到节点的设备算一台。你的手机开着 Shadowrocket 连接代理、笔记本开着 <a href="https://github.com/clash-verge-rev/clash-verge-rev">Clash Verge Rev</a> 连接代理、台式机开着 v2rayN 连接代理——这就是 3 台设备。</p><p><strong>超出限制的后果</strong>：如果你的套餐限制 3 台设备，尝试连接第 4 台时，通常会出现以下情况之一：</p><ul><li>第 4 台设备无法连接（最常见）</li><li>最早连接的设备被踢下线</li><li>所有设备的速度被平均分配（限速惩罚）</li></ul><p><strong>不同的计算方式</strong>：不同机场计算”设备”的方式可能不同：</p><ul><li><strong>按客户端连接数</strong>：最常见。每个建立连接的客户端算一台设备。</li><li><strong>按 IP 地址</strong>：所有使用同一个公网 IP 的设备算一台。如果你的手机和电脑都在家里使用同一个 Wi-Fi，它们共享同一个公网 IP，可能只算一台设备。但这种计算方式在你切换网络（比如手机从 Wi-Fi 切到蜂窝数据）时可能出问题。</li><li><strong>按活跃连接</strong>：只计算正在活跃传输数据的设备，而不是所有已连接的设备。这种方式最宽松。</li></ul><h3 id="选择建议"><a href="#选择建议" class="headerlink" title="选择建议"></a>选择建议</h3><p><strong>个人用户：2-3 台就够了</strong>。手机一台、电脑一台，偶尔需要平板或备用设备算一台。大部分时间你不会同时在所有设备上使用代理。</p><p><strong>家庭用户：3-5 台</strong>。夫妻或家庭成员各有手机和电脑，需要的设备数更多。</p><p><strong>路由器方案：突破设备限制的最佳方式</strong>。如果你把代理配置在路由器上（通过 OpenWrt + <a href="https://github.com/vernesong/OpenClash">OpenClash</a>&#x2F;<a href="https://github.com/Openwrt-Passwall/openwrt-passwall2">PassWall</a> 等方案），所有通过这个路由器上网的设备都走代理，但机场只会看到一台设备（路由器本身）。这是在设备限制较低时服务多台设备的最有效方案。一台路由器可以覆盖全家所有设备。</p><p><strong>注意</strong>：路由器方案虽然在设备数上有优势，但所有设备的流量都会叠加。一家人同时使用代理时，流量消耗速度会成倍增长。</p><hr><h2 id="其他常见参数"><a href="#其他常见参数" class="headerlink" title="其他常见参数"></a>其他常见参数</h2><h3 id="重置日期"><a href="#重置日期" class="headerlink" title="重置日期"></a>重置日期</h3><p>月流量的重置日期通常有两种模式：</p><ul><li><strong>订阅日重置</strong>：从你购买或续费的那天起算。比如你 3 月 15 日购买，流量在每个月 15 日重置。</li><li><strong>固定日期重置</strong>：不管你何时购买，统一在每月 1 号（或其他固定日期）重置。</li></ul><p>订阅日重置更公平，固定日期重置更便于机场管理。购买前了解清楚，避免月底买了套餐却发现几天后就重置浪费了。</p><h3 id="套餐周期"><a href="#套餐周期" class="headerlink" title="套餐周期"></a>套餐周期</h3><p>机场通常提供多种订阅周期：</p><ul><li><strong>月付</strong>：灵活，随时可以不续费。适合试用期或不确定是否长期使用的阶段。</li><li><strong>季付</strong>：通常打 9 折左右。在确认机场质量后可以考虑。</li><li><strong>半年付</strong>：通常打 8 折左右。适合已经使用 2-3 个月并确认满意的情况。</li><li><strong>年付</strong>：通常打 6-8 折，折扣最大。但风险也最大——如果机场跑路或质量下降，损失最大。</li></ul><p>建议的策略是：<strong>先月付使用 1-2 个月</strong>，确认速度、稳定性和客服都满意后，再考虑季付或半年付。年付需要对机场的运营稳定性有足够的信心。机场行业跑路事件并不罕见，年付要谨慎。</p><h3 id="节点数量与地区"><a href="#节点数量与地区" class="headerlink" title="节点数量与地区"></a>节点数量与地区</h3><p>节点数量不是越多越好——<strong>质量远比数量重要</strong>。100 个来自同一上游供应商的转售节点，不如 20 个分布在不同地区和运营商的自建节点。</p><p>对大多数中国大陆用户而言，关键地区是：</p><ul><li><strong>香港</strong>：延迟最低（通常 30-50ms），是日常使用的首选地区</li><li><strong>日本</strong>：延迟较低（50-80ms），节点选择多，流媒体解锁好</li><li><strong>新加坡</strong>：稳定性好，ChatGPT 等 AI 服务友好</li><li><strong>美国</strong>：延迟较高（150-200ms+），但很多服务的原生支持最好</li><li><strong>台湾</strong>：延迟低，中文内容友好</li><li><strong>小众地区</strong>：英国（BBC iPlayer）、韩国（韩国内容）、德国（特定需求）——按需选择</li></ul><h3 id="协议支持"><a href="#协议支持" class="headerlink" title="协议支持"></a>协议支持</h3><p>机场支持的代理协议直接关系到安全性和抗干扰能力。在 2026 年的当下：</p><ul><li><strong>最低要求</strong>：支持 VLESS + Reality。这是目前安全性和隐蔽性最高的主流组合。</li><li><strong>加分项</strong>：支持 Hysteria2（基于 QUIC 的协议，高丢包环境下表现优异）、AnyTLS（新兴的抗检测协议）。</li><li><strong>警告信号</strong>：仍在使用裸 VMess（无 TLS）——这类协议的流量特征已经可以被精准识别，说明机场的技术能力堪忧。</li></ul><hr><h2 id="一个实际案例"><a href="#一个实际案例" class="headerlink" title="一个实际案例"></a>一个实际案例</h2><p>以下是一个假设的机场套餐对比。通过这个例子，你可以直观地看到各参数如何影响实际使用体验和性价比。</p><table><thead><tr><th>参数</th><th>入门套餐</th><th>标准套餐</th><th>高级套餐</th></tr></thead><tbody><tr><td>价格</td><td>¥15&#x2F;月</td><td>¥30&#x2F;月</td><td>¥60&#x2F;月</td></tr><tr><td>月流量</td><td>100GB</td><td>300GB</td><td>800GB</td></tr><tr><td>限速</td><td>100Mbps</td><td>300Mbps</td><td>不限速</td></tr><tr><td>设备数</td><td>2</td><td>3</td><td>5</td></tr><tr><td>线路</td><td>直连</td><td>中转</td><td>中转+IPLC</td></tr><tr><td>节点倍率</td><td>1x</td><td>0.5x-1x</td><td>0.2x-1x</td></tr></tbody></table><p><strong>分析</strong>：</p><p><strong>入门套餐（¥15&#x2F;月）</strong>：100GB 流量 + 1x 倍率 &#x3D; 实际可用 100GB。配合 100Mbps 限速和直连线路，适合轻度使用——日常浏览、社交媒体、偶尔看看视频。2 台设备限制对个人用户足够。缺点是直连线路在敏感时期可能不稳定。</p><p><strong>标准套餐（¥30&#x2F;月）</strong>：300GB 流量 + 0.5x-1x 倍率。如果你主要使用 0.5x 倍率的节点，有效可用流量约 600GB。300Mbps 限速对绝大多数使用场景绰绰有余。中转线路意味着更好的稳定性。3 台设备满足个人多设备需求。<strong>这是大多数用户的最佳选择</strong>——性价比最高，流量充裕，速度和稳定性都有保障。</p><p><strong>高级套餐（¥60&#x2F;月）</strong>：800GB 流量 + 0.2x-1x 倍率。如果大量使用 0.2x 节点，有效流量可达 4TB，基本等同于不限量。不限速 + IPLC 专线是最好的体验。5 台设备适合家庭使用。但价格翻倍，适合重度用户或对品质有极高要求的用户。</p><p>对大多数用户来说，<strong>标准套餐是最均衡的选择</strong>。如果你发现标准套餐的流量每个月都用不完，说明你甚至可以降级到入门套餐。</p><hr><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="Q-流量用完了会怎样？"><a href="#Q-流量用完了会怎样？" class="headerlink" title="Q: 流量用完了会怎样？"></a>Q: 流量用完了会怎样？</h3><p>大多数机场会断开连接或限速到极低速度（如 1Mbps），直到下个周期重置。部分机场允许额外购买流量包补充当月配额。关键点是：<strong>不会像手机流量那样超额计费</strong>，你不用担心会产生意料之外的费用。如果代理突然断了而且离重置日还很远，优先检查一下是不是流量用完了。</p><h3 id="Q-倍率-0-1x-的节点值得用吗？"><a href="#Q-倍率-0-1x-的节点值得用吗？" class="headerlink" title="Q: 倍率 0.1x 的节点值得用吗？"></a>Q: 倍率 0.1x 的节点值得用吗？</h3><p>值得用，但要看场景。0.1x 倍率的节点几乎不消耗配额，非常省流量。但这些节点通常是直连线路或低优先级线路，速度和稳定性会差一些。</p><p><strong>适合使用 0.1x 节点的场景</strong>：日常浏览网页、收发消息、查阅文档——这些对速度和延迟要求不高的轻度活动。</p><p><strong>不适合使用 0.1x 节点的场景</strong>：看视频（可能卡顿）、视频会议（容易断线）、在线游戏（延迟高）、任何对稳定性有要求的工作。</p><p>实际操作中，可以在代理客户端中设置策略：轻度流量走低倍率节点，视频和重要应用走高品质节点。这样既省流量，又不牺牲关键场景的体验。</p><h3 id="Q-限速-300Mbps-和不限速差别大吗？"><a href="#Q-限速-300Mbps-和不限速差别大吗？" class="headerlink" title="Q: 限速 300Mbps 和不限速差别大吗？"></a>Q: 限速 300Mbps 和不限速差别大吗？</h3><p>对大多数用户来说，<strong>没有实质性差别</strong>。日常使用中你很少能持续跑满 300Mbps，除非你在做以下事情：</p><ul><li>持续下载大文件（几十 GB 级别的游戏、数据集等）</li><li>跑测速工具验证线路质量</li><li>多线程 BT&#x2F;PT 下载</li></ul><p>300Mbps 已经可以同时流畅播放多路 4K 视频，支持多个设备同时高强度使用。为”不限速”额外付费，性价比通常不高。</p><h3 id="Q-可以多人共享一个账号吗？"><a href="#Q-可以多人共享一个账号吗？" class="headerlink" title="Q: 可以多人共享一个账号吗？"></a>Q: 可以多人共享一个账号吗？</h3><p>技术上可以——在设备数限制内，多人可以同时使用同一个订阅。但需要注意几点：</p><p><strong>服务条款</strong>：大多数机场在用户协议中明确禁止账号共享。虽然技术上很难检测，但一旦被发现可能导致封号。</p><p><strong>流量分摊</strong>：多人共享意味着流量消耗速度成倍增长。300GB 的月流量一个人用可能绰绰有余，两个人分就变紧张了。</p><p><strong>隐私风险</strong>：共享账号意味着你的代理使用和对方的代理使用混在一起。虽然代理内容本身是加密的，但使用记录是共享的。</p><p><strong>更好的方案</strong>：如果是家庭使用，把代理配置在路由器上（算一台设备），全家共用。如果是朋友之间，各买各的套餐更省心——很多机场有便宜的入门套餐，人均成本可能和分摊差不多。</p><h3 id="Q-买年付划算吗？"><a href="#Q-买年付划算吗？" class="headerlink" title="Q: 买年付划算吗？"></a>Q: 买年付划算吗？</h3><p>价格上确实划算——年付通常是月付价格的 6-8 折。但”划算”不能只看价格，还要考虑风险。</p><p><strong>风险一：机场跑路</strong>。机场行业不受监管，运营者随时可能关停服务。年付意味着一旦跑路，你损失的是一整年的费用。</p><p><strong>风险二：质量下降</strong>。有些机场在早期为了吸引用户提供高品质服务，用户基数增长后开始超售（卖出的带宽总量超过实际带宽），导致速度和稳定性下降。如果你是月付，可以随时走人；年付就只能忍受。</p><p><strong>建议</strong>：先月付试用 1-2 个月，确认机场的速度、稳定性、客服响应都满意后，再考虑季付或半年付。年付只推荐给已经使用超过半年且运营稳定的机场。不要被首次年付的大幅折扣冲昏头脑。</p>]]>
    </content>
    <id>https://blog.e.show/posts/airport-parameters/</id>
    <link href="https://blog.e.show/posts/airport-parameters/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>看懂机场套餐参数——倍率、流量、限速、在线设备数各自的含义和选择要点。</summary>
    <title>看懂机场参数：倍率、流量、限速、在线设备数</title>
    <updated>2026-05-11T21:40:36.947Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="协议与原理" scheme="https://blog.e.show/categories/%E5%8D%8F%E8%AE%AE%E4%B8%8E%E5%8E%9F%E7%90%86/"/>
    <category term="AnyTLS" scheme="https://blog.e.show/tags/AnyTLS/"/>
    <category term="协议" scheme="https://blog.e.show/tags/%E5%8D%8F%E8%AE%AE/"/>
    <category term="TLS" scheme="https://blog.e.show/tags/TLS/"/>
    <category term="抗检测" scheme="https://blog.e.show/tags/%E6%8A%97%E6%A3%80%E6%B5%8B/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：AnyTLS 是一种针对 TLS-in-TLS 检测问题提出的代理传输方案。与 Reality 在握手阶段借用目标站证书不同，AnyTLS 的思路是与目标网站建立一条真实的 TLS 连接，然后在这条已建立的 TLS 会话中混入代理数据。两者代表了两种截然不同的抗检测哲学。本文深入解析 AnyTLS 的工作原理、技术优劣势、与 Reality 的对比，以及实际部署中的选择建议。</p></blockquote><h2 id="TLS-in-TLS-问题回顾"><a href="#TLS-in-TLS-问题回顾" class="headerlink" title="TLS-in-TLS 问题回顾"></a>TLS-in-TLS 问题回顾</h2><p>在讨论 AnyTLS 之前，需要先理解它试图解决的核心问题。</p><p>当代理客户端通过 TLS 隧道访问一个 HTTPS 网站时，会出现一个结构性问题：外层是客户端与代理服务器之间的 TLS 连接，内层是客户端通过代理访问目标网站时产生的 TLS 连接。这就是所谓的 <strong>TLS-in-TLS</strong>——加密隧道内部嵌套了另一层加密隧道。</p><p>问题在于，内层 TLS 握手的数据包有非常明显的长度和时序特征。GFW 的深度包检测（DPI）系统虽然无法解密外层 TLS 的内容，但可以通过分析加密数据包的长度序列来推断内部是否嵌套了另一个 TLS 会话。如果一条”普通的 HTTPS 连接”内部持续出现符合 TLS 握手模式的数据包长度分布，审查者就有理由怀疑这是一条代理连接。</p><p>现有的应对方案包括 Xray 的 <code>xtls-rprx-vision</code>（通过对内层握手包进行 padding 来打破长度特征）和 Reality（在握手阶段借用真实证书）。而 <a href="https://github.com/anytls/anytls">AnyTLS</a> 提供了第三种思路：既然 TLS-in-TLS 的特征难以完全消除，那就直接建立一条真实的 TLS 连接，让代理数据在真实 TLS 会话的掩护下传输。</p><h2 id="AnyTLS-是什么"><a href="#AnyTLS-是什么" class="headerlink" title="AnyTLS 是什么"></a>AnyTLS 是什么</h2><p>AnyTLS 是由 <a href="https://github.com/anytls/anytls">anytls 项目</a>开发的一种代理传输技术。它的核心目标是让代理流量与真实的 HTTPS 流量在网络层面上难以区分，但采用的方法与 Reality 截然不同。</p><p><strong>Reality 的思路</strong>是在 TLS 握手阶段做文章——借用目标站的真实证书完成握手伪装，握手成功后再切换到代理数据传输模式。整个过程中，代理服务器实际上并没有与目标站建立持续的数据连接，证书只是”借来用一下”。</p><p><strong>AnyTLS 的思路</strong>则是在数据传输阶段做文章——代理服务器与目标网站之间建立一条真实的、完整的 TLS 连接，然后在这条真实连接的数据流中混入代理数据。从外部观察者的角度看，这条连接不仅握手是真实的，数据传输也是真实的，因为它确实在与目标网站进行通信。</p><p>简单来说：Reality 是”借皮”，AnyTLS 是”寄生”。</p><h2 id="核心工作原理"><a href="#核心工作原理" class="headerlink" title="核心工作原理"></a>核心工作原理</h2><p>AnyTLS 的运作过程可以分为以下几个阶段。</p><h3 id="第一阶段：建立真实连接"><a href="#第一阶段：建立真实连接" class="headerlink" title="第一阶段：建立真实连接"></a>第一阶段：建立真实连接</h3><p>代理服务器首先与一个预配置的目标网站（如一个高流量的 HTTPS 站点）建立一条标准的 TLS 连接。这条连接是完全真实的——使用目标站的真实证书、完成完整的 TLS 握手、可以正常交换 HTTP 数据。从网络层面看，这就是一台服务器在正常访问一个网站。</p><h3 id="第二阶段：会话复用"><a href="#第二阶段：会话复用" class="headerlink" title="第二阶段：会话复用"></a>第二阶段：会话复用</h3><p>当代理客户端需要传输数据时，AnyTLS 将代理数据编码并嵌入到这条已建立的真实 TLS 会话中。具体的混入方式涉及到数据的分片、编码和调度，目标是让混合后的流量在统计特征上尽可能接近正常的 HTTPS 数据交换。</p><h3 id="第三阶段：数据分离与转发"><a href="#第三阶段：数据分离与转发" class="headerlink" title="第三阶段：数据分离与转发"></a>第三阶段：数据分离与转发</h3><p>代理服务器接收到混合数据后，将代理数据与正常网站数据分离，代理数据被转发到实际的目标地址，而与目标站的正常通信则继续维持，保持连接的”真实性”。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">sequenceDiagram</span><br><span class="line">    participant C as 代理客户端</span><br><span class="line">    participant S as AnyTLS 代理服务器</span><br><span class="line">    participant T as 目标站(example.com)</span><br><span class="line">    participant D as 实际访问目标</span><br><span class="line">    participant G as GFW</span><br><span class="line"></span><br><span class="line">    S-&gt;&gt;T: 建立真实 TLS 连接</span><br><span class="line">    T-&gt;&gt;S: 完成 TLS 握手 + 正常数据交换</span><br><span class="line">    Note over G: 看到: 正常的 HTTPS 连接 ✓</span><br><span class="line"></span><br><span class="line">    C-&gt;&gt;S: 发送代理请求(加密)</span><br><span class="line">    S-&gt;&gt;S: 将代理数据混入真实 TLS 会话</span><br><span class="line">    S-&gt;&gt;T: 混合数据流(外观为正常 HTTPS)</span><br><span class="line">    Note over G: 看到: 持续的正常 HTTPS 数据交换 ✓</span><br><span class="line"></span><br><span class="line">    S-&gt;&gt;D: 分离并转发代理数据</span><br><span class="line">    D-&gt;&gt;S: 返回响应</span><br><span class="line">    S-&gt;&gt;S: 将响应混入 TLS 会话</span><br><span class="line">    S-&gt;&gt;C: 返回代理响应(加密)</span><br></pre></td></tr></table></figure><h3 id="与传统代理的关键区别"><a href="#与传统代理的关键区别" class="headerlink" title="与传统代理的关键区别"></a>与传统代理的关键区别</h3><p>传统的 TLS 代理（包括使用 Reality 的方案）在握手完成后，数据传输阶段的流量内容完全是代理数据。虽然外层 TLS 加密使内容不可见，但流量的统计特征（包大小分布、时序模式、持续时间等）可能与真实的 HTTPS 流量有所不同。</p><p>AnyTLS 的不同之处在于，它维持了一条真实的 HTTPS 数据流作为”载体”，代理数据嵌入其中。这意味着即使审查者对加密流量进行统计分析，也会看到真实的 HTTPS 数据交换模式——因为确实存在真实的数据交换。</p><h2 id="AnyTLS-与-Reality-的深度对比"><a href="#AnyTLS-与-Reality-的深度对比" class="headerlink" title="AnyTLS 与 Reality 的深度对比"></a>AnyTLS 与 Reality 的深度对比</h2><p>AnyTLS 和 Reality 都是为了让代理流量不被 GFW 识别，但它们的技术哲学有着根本性的差异。理解这些差异，才能在实际部署中做出正确的选择。</p><h3 id="伪装层次不同"><a href="#伪装层次不同" class="headerlink" title="伪装层次不同"></a>伪装层次不同</h3><table><thead><tr><th>维度</th><th>Reality</th><th>AnyTLS</th></tr></thead><tbody><tr><td><strong>伪装阶段</strong></td><td>TLS 握手阶段</td><td>TLS 数据传输阶段</td></tr><tr><td><strong>证书使用</strong></td><td>借用目标站证书，握手后切换</td><td>建立真实连接，持续使用</td></tr><tr><td><strong>与目标站的关系</strong></td><td>获取证书后断开</td><td>维持持续连接</td></tr><tr><td><strong>数据传输阶段</strong></td><td>纯代理数据（加密）</td><td>代理数据混入真实流量</td></tr><tr><td><strong>连接真实性</strong></td><td>握手真实，传输阶段无真实数据</td><td>全程真实</td></tr></tbody></table><h3 id="抗检测能力对比"><a href="#抗检测能力对比" class="headerlink" title="抗检测能力对比"></a>抗检测能力对比</h3><p><strong>Reality 的检测风险</strong>：</p><p>Reality 在 TLS 握手阶段几乎无懈可击——证书是真的、指纹是真的、SNI 是真的。但握手完成后，连接进入数据传输阶段时，流量内容完全是代理数据。如果 GFW 在握手后对流量进行深度统计分析（比如比较与同一目标站正常流量的差异），理论上存在被识别的可能性。此外，长时间保持连接但几乎不与 dest 站点进行 HTTP 数据交换，这种行为模式本身也可能引起关注。</p><p><strong>AnyTLS 的检测风险</strong>：</p><p>AnyTLS 的优势在于数据传输阶段的流量中混合了真实的 HTTPS 数据。审查者在分析加密流量的统计特征时，会看到真实的数据交换模式。但它也有自身的风险：如果代理数据量远大于正常网站数据量，混合后的流量在数据量上可能与该目标站的典型访问模式不符。</p><h3 id="设计哲学的差异"><a href="#设计哲学的差异" class="headerlink" title="设计哲学的差异"></a>设计哲学的差异</h3><p>可以用一个比喻来理解两者的区别：</p><ul><li><p><strong>Reality</strong> 像是拿着别人的身份证进入一栋大楼。门卫（GFW）检查身份证时发现是真的，于是放行。但进入大楼后，你的行为与身份证上的身份无关。如果有人跟踪你在大楼内的活动，可能会发现异常。</p></li><li><p><strong>AnyTLS</strong> 像是和一个有合法身份的人一起进入大楼，并且一直跟着这个人活动。门卫看到的是两个人正常出入，跟踪者看到的也是正常的访客行为。但维持这种”同行”关系需要额外的协调成本。</p></li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">flowchart TB</span><br><span class="line">    subgraph Reality[&quot;Reality 的伪装策略&quot;]</span><br><span class="line">        R1[借用目标站 TLS 证书] --&gt; R2[完成握手伪装]</span><br><span class="line">        R2 --&gt; R3[切换到代理模式]</span><br><span class="line">        R3 --&gt; R4[纯代理数据传输]</span><br><span class="line">        style R4 fill:#fff3cd</span><br><span class="line">    end</span><br><span class="line"></span><br><span class="line">    subgraph AnyTLS[&quot;AnyTLS 的伪装策略&quot;]</span><br><span class="line">        A1[与目标站建立真实连接] --&gt; A2[维持真实 TLS 会话]</span><br><span class="line">        A2 --&gt; A3[代理数据混入会话]</span><br><span class="line">        A3 --&gt; A4[真实数据 + 代理数据混合传输]</span><br><span class="line">        style A4 fill:#d4edda</span><br><span class="line">    end</span><br></pre></td></tr></table></figure><h2 id="优势分析"><a href="#优势分析" class="headerlink" title="优势分析"></a>优势分析</h2><h3 id="真实的-TLS-连接"><a href="#真实的-TLS-连接" class="headerlink" title="真实的 TLS 连接"></a>真实的 TLS 连接</h3><p>AnyTLS 最大的优势是连接的真实性。与目标站的 TLS 连接从始至终都是真实的——真实的证书、真实的数据交换、真实的会话维持。这意味着任何试图验证连接真实性的检测手段（包括主动探测）都会得到”这是一条正常连接”的结论。</p><h3 id="更强的抗统计分析能力"><a href="#更强的抗统计分析能力" class="headerlink" title="更强的抗统计分析能力"></a>更强的抗统计分析能力</h3><p>由于数据传输阶段存在真实的 HTTPS 数据流，加密流量的统计特征（包大小分布、传输间隔等）更接近正常的网站访问。对于依赖流量统计特征进行检测的 DPI 系统来说，这种混合流量更难被识别。</p><h3 id="无-TLS-in-TLS-特征"><a href="#无-TLS-in-TLS-特征" class="headerlink" title="无 TLS-in-TLS 特征"></a>无 TLS-in-TLS 特征</h3><p>传统的 TLS 代理在加密隧道内传输的数据可能包含内层 TLS 握手的特征性包长度序列。AnyTLS 由于复用了真实的 TLS 会话，代理数据被融入到真实的 HTTPS 数据流中，内层 TLS 握手的特征被有效稀释。</p><h2 id="劣势与局限"><a href="#劣势与局限" class="headerlink" title="劣势与局限"></a>劣势与局限</h2><h3 id="需要目标站配合"><a href="#需要目标站配合" class="headerlink" title="需要目标站配合"></a>需要目标站配合</h3><p>AnyTLS 要求代理服务器能够与目标站建立并维持稳定的 TLS 连接。这意味着目标站必须始终可达，且不能对来自代理服务器的连接进行限制（如频率限制、IP 封锁等）。如果目标站的服务出现波动，代理连接也会受到直接影响。</p><p>与 Reality 只需在握手阶段获取一次证书不同，AnyTLS 需要持续维护与目标站的连接，对目标站的可用性有着更强的依赖。</p><h3 id="性能开销"><a href="#性能开销" class="headerlink" title="性能开销"></a>性能开销</h3><p>维护与目标站的真实连接意味着额外的网络开销。每一次代理数据传输都需要同时处理与目标站的数据交换，数据的混入和分离也需要额外的计算资源。在高并发场景下，这种开销可能会变得显著。</p><p>相比之下，Reality 在握手完成后就不再与 dest 站点通信，数据传输阶段的开销与普通 TLS 代理几乎一致。</p><h3 id="部署复杂度"><a href="#部署复杂度" class="headerlink" title="部署复杂度"></a>部署复杂度</h3><p>AnyTLS 的配置比 Reality 更复杂。除了基本的代理参数外，还需要配置和维护与目标站的连接参数、数据混入策略等。目标站的选择也更加讲究——不仅要满足 TLS 版本和证书要求，还要考虑数据交换模式是否适合混入代理数据。</p><h3 id="成熟度与生态"><a href="#成熟度与生态" class="headerlink" title="成熟度与生态"></a>成熟度与生态</h3><p>作为一个相对较新的项目，AnyTLS 的生态系统远不如 Reality 成熟。Reality 已经集成在 <a href="https://github.com/XTLS/Xray-core">Xray-core</a> 中，被大量面板和管理工具支持，社区经验丰富，故障排查资料也相对充足。AnyTLS 在这些方面还处于早期阶段，遇到问题时可参考的资源有限。</p><h2 id="客户端支持"><a href="#客户端支持" class="headerlink" title="客户端支持"></a>客户端支持</h2><p>目前 AnyTLS 的客户端支持情况如下：</p><table><thead><tr><th>客户端</th><th>支持状态</th><th>备注</th></tr></thead><tbody><tr><td><a href="https://github.com/SagerNet/sing-box">sing-box</a></td><td>已支持</td><td>主要的客户端支持</td></tr><tr><td>Clash.Meta &#x2F; mihomo</td><td>待确认</td><td>关注项目更新</td></tr><tr><td>Xray-core</td><td>不支持</td><td>Xray 使用自己的 Reality 方案</td></tr><tr><td>V2Ray</td><td>不支持</td><td>无集成计划</td></tr></tbody></table><p>需要注意的是，AnyTLS 的客户端支持范围远小于 Reality。如果你使用的客户端不支持 AnyTLS，那么 Reality 仍然是更务实的选择。</p><h2 id="AnyTLS-与-Reality：如何选择"><a href="#AnyTLS-与-Reality：如何选择" class="headerlink" title="AnyTLS 与 Reality：如何选择"></a>AnyTLS 与 Reality：如何选择</h2><p>这两种方案并不是简单的”谁更好”的关系，而是适用于不同场景和需求。</p><h3 id="推荐使用-Reality-的场景"><a href="#推荐使用-Reality-的场景" class="headerlink" title="推荐使用 Reality 的场景"></a>推荐使用 Reality 的场景</h3><ul><li><strong>多数用户的默认选择</strong>：如果你没有特殊的抗检测需求，Reality 已经足够安全，且部署运维成本远低于 AnyTLS。</li><li><strong>需要广泛客户端兼容的场景</strong>：Reality 被几乎所有主流客户端支持，不用担心兼容性问题。</li><li><strong>追求稳定性和性能的场景</strong>：Reality 在握手后不依赖目标站，数据传输阶段的稳定性和性能与普通 TLS 代理一致。</li><li><strong>运维资源有限的场景</strong>：Reality 的配置和维护相对简单，社区经验丰富，遇到问题容易找到解决方案。</li></ul><h3 id="可以考虑-AnyTLS-的场景"><a href="#可以考虑-AnyTLS-的场景" class="headerlink" title="可以考虑 AnyTLS 的场景"></a>可以考虑 AnyTLS 的场景</h3><ul><li><strong>对抗高强度流量分析</strong>：如果你的网络环境中 DPI 系统已经开始对 TLS 代理的数据传输阶段进行统计分析，AnyTLS 的混合流量策略可能提供额外的保护。</li><li><strong>技术探索和研究</strong>：如果你对代理技术的前沿发展感兴趣，AnyTLS 代表了一种值得关注的新方向。</li><li><strong>愿意承担额外运维成本</strong>：部署 AnyTLS 需要更多的配置工作和持续维护，确保你有足够的技术能力和时间。</li></ul><h3 id="决策参考"><a href="#决策参考" class="headerlink" title="决策参考"></a>决策参考</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">flowchart TD</span><br><span class="line">    Start([选择传输方案]) --&gt; Q1&#123;是否需要对抗&lt;br/&gt;数据传输阶段的统计分析?&#125;</span><br><span class="line">    Q1 --&gt;|否| Q2&#123;客户端是否支持 AnyTLS?&#125;</span><br><span class="line">    Q1 --&gt;|是| Q3&#123;是否有足够的&lt;br/&gt;技术能力和运维资源?&#125;</span><br><span class="line">    Q2 --&gt;|否| Reality[推荐 Reality]</span><br><span class="line">    Q2 --&gt;|是| Q4&#123;是否愿意承担&lt;br/&gt;额外的性能开销?&#125;</span><br><span class="line">    Q3 --&gt;|否| Reality</span><br><span class="line">    Q3 --&gt;|是| Q4</span><br><span class="line">    Q4 --&gt;|否| Reality</span><br><span class="line">    Q4 --&gt;|是| AnyTLS[可以尝试 AnyTLS]</span><br><span class="line"></span><br><span class="line">    style Reality fill:#d4edda,stroke:#28a745</span><br><span class="line">    style AnyTLS fill:#cce5ff,stroke:#007bff</span><br></pre></td></tr></table></figure><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="Q-AnyTLS-是否已经经过实战验证？"><a href="#Q-AnyTLS-是否已经经过实战验证？" class="headerlink" title="Q: AnyTLS 是否已经经过实战验证？"></a>Q: AnyTLS 是否已经经过实战验证？</h3><p>AnyTLS 作为一个相对较新的项目，其实战经验远不如 Reality 丰富。Reality 自发布以来已经经历了多轮 GFW 升级的考验，社区积累了大量的部署和调优经验。AnyTLS 的长期抗检测表现还需要时间和更多用户的实际使用来验证。在生产环境中，建议将 AnyTLS 作为备选方案而非唯一方案。</p><h3 id="Q-AnyTLS-能和-VLESS-搭配使用吗？"><a href="#Q-AnyTLS-能和-VLESS-搭配使用吗？" class="headerlink" title="Q: AnyTLS 能和 VLESS 搭配使用吗？"></a>Q: AnyTLS 能和 VLESS 搭配使用吗？</h3><p>AnyTLS 是一种传输层技术，理论上可以与不同的代理协议搭配。但具体的协议兼容性取决于实现方式和客户端支持。目前在 <a href="https://github.com/SagerNet/sing-box">sing-box</a> 中的集成是最为成熟的实现。关于具体的协议搭配方式，建议参考 <a href="https://github.com/anytls/anytls">AnyTLS 项目</a>的官方文档。</p><h3 id="Q-目标站被封了怎么办？"><a href="#Q-目标站被封了怎么办？" class="headerlink" title="Q: 目标站被封了怎么办？"></a>Q: 目标站被封了怎么办？</h3><p>与 Reality 类似，当 AnyTLS 使用的目标站被封锁或不可达时，代理连接也会受到影响。但 AnyTLS 对目标站的依赖更强——Reality 只在握手阶段需要目标站，而 AnyTLS 在整个连接生命周期内都需要维持与目标站的通信。因此，AnyTLS 需要更加仔细地选择目标站，建议选择极不可能被封锁的大型站点，并且准备多个备选目标站。</p><h3 id="Q-AnyTLS-和-NaiveProxy-有什么区别？"><a href="#Q-AnyTLS-和-NaiveProxy-有什么区别？" class="headerlink" title="Q: AnyTLS 和 NaiveProxy 有什么区别？"></a>Q: AnyTLS 和 NaiveProxy 有什么区别？</h3><p>两者都追求更高程度的流量真实性，但实现路径不同。NaiveProxy 使用 Chromium 的网络栈来生成流量，从协议栈层面确保流量特征与真实浏览器一致。AnyTLS 则通过在真实 TLS 连接中混入代理数据来实现伪装。NaiveProxy 的方案更”彻底”但部署更复杂（需要编译 Chromium 组件），AnyTLS 的方案相对轻量但在流量混合的精细度上面临更多挑战。</p><h2 id="相关链接"><a href="#相关链接" class="headerlink" title="相关链接"></a>相关链接</h2><ul><li><a href="https://github.com/anytls/anytls">AnyTLS GitHub</a> - AnyTLS 项目仓库</li><li><a href="https://github.com/SagerNet/sing-box">sing-box</a> - 支持 AnyTLS 的代理客户端</li><li><a href="https://github.com/XTLS/Xray-core">Xray-core</a> - VLESS + Reality 的主要实现</li><li><a href="https://github.com/XTLS/REALITY">REALITY</a> - Reality 协议项目</li></ul>]]>
    </content>
    <id>https://blog.e.show/posts/anytls-explained/</id>
    <link href="https://blog.e.show/posts/anytls-explained/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>AnyTLS 通过在真实 TLS 会话中复用代理流量来实现抗检测。本文解析其原理以及与 Reality 的区别。</summary>
    <title>AnyTLS 技术原理与适用场景</title>
    <updated>2026-05-09T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="网络知识" scheme="https://blog.e.show/categories/%E7%BD%91%E7%BB%9C%E7%9F%A5%E8%AF%86/"/>
    <category term="BGP" scheme="https://blog.e.show/tags/BGP/"/>
    <category term="ASN" scheme="https://blog.e.show/tags/ASN/"/>
    <category term="IP" scheme="https://blog.e.show/tags/IP/"/>
    <category term="查询" scheme="https://blog.e.show/tags/%E6%9F%A5%E8%AF%A2/"/>
    <category term="工具" scheme="https://blog.e.show/tags/%E5%B7%A5%E5%85%B7/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：每一个公网 IP 地址都属于一个自治系统（AS），每个 AS 都有一个唯一编号（ASN）。通过查询 ASN，你可以知道一个 IP 的所有者是谁——是大型云服务商的数据中心，还是面向普通用户的 ISP。这个信息直接关系到节点的流媒体解锁能力、被封锁风险和长期稳定性。本文介绍 ASN 的基础概念、查询方法和实际应用。</p></blockquote><hr><h2 id="什么是-AS-和-ASN"><a href="#什么是-AS-和-ASN" class="headerlink" title="什么是 AS 和 ASN"></a>什么是 AS 和 ASN</h2><h3 id="互联网的组织方式"><a href="#互联网的组织方式" class="headerlink" title="互联网的组织方式"></a>互联网的组织方式</h3><p>互联网不是一台超级路由器连接着全球所有的电脑。它是由数万个独立管理的网络拼接在一起的——就像全球的铁路系统由各国的铁路公司分别运营，但列车可以在它们之间跨越和换乘。</p><p>每一个独立管理的网络被称为一个 <strong>自治系统（Autonomous System，AS）</strong>。一个 AS 由一个组织运营，拥有一组 IP 地址和一套统一的路由策略。这个组织可以是一家电信运营商（如中国电信）、一家云服务商（如 AWS）、一所大学、一个政府机构，甚至一家大型企业。</p><p>每个 AS 都有一个全球唯一的编号，叫做 <strong>ASN（Autonomous System Number）</strong>。ASN 由 IANA 统一分配，再通过五大 RIR（地区互联网注册机构）分发给各组织。</p><h3 id="常见的-ASN-示例"><a href="#常见的-ASN-示例" class="headerlink" title="常见的 ASN 示例"></a>常见的 ASN 示例</h3><p>一些你可能经常遇到的 ASN：</p><table><thead><tr><th>ASN</th><th>组织</th><th>类型</th></tr></thead><tbody><tr><td>AS13335</td><td>Cloudflare, Inc.</td><td>CDN &#x2F; 云服务</td></tr><tr><td>AS15169</td><td>Google LLC</td><td>云服务 &#x2F; ISP</td></tr><tr><td>AS16509</td><td>Amazon.com (AWS)</td><td>云服务</td></tr><tr><td>AS14061</td><td>DigitalOcean, LLC</td><td>云服务</td></tr><tr><td>AS20473</td><td>The Constant Company (Vultr)</td><td>云服务</td></tr><tr><td>AS24940</td><td>Hetzner Online GmbH</td><td>云服务</td></tr><tr><td>AS16276</td><td>OVH SAS</td><td>云服务</td></tr><tr><td>AS4134</td><td>中国电信骨干网 (CHINANET)</td><td>ISP</td></tr><tr><td>AS4837</td><td>中国联通骨干网 (China169)</td><td>ISP</td></tr><tr><td>AS9808</td><td>中国移动</td><td>ISP</td></tr><tr><td>AS2516</td><td>KDDI Corporation</td><td>ISP（日本）</td></tr><tr><td>AS4713</td><td>NTT Communications (OCN)</td><td>ISP（日本）</td></tr><tr><td>AS7922</td><td>Comcast Cable Communications</td><td>ISP（美国）</td></tr><tr><td>AS7018</td><td>AT&amp;T Services, Inc.</td><td>ISP（美国）</td></tr><tr><td>AS3462</td><td>中华电信 (Chunghwa Telecom &#x2F; HiNet)</td><td>ISP（台湾）</td></tr><tr><td>AS4515</td><td>PCCW Limited</td><td>ISP（香港）</td></tr><tr><td>AS9269</td><td>Hong Kong Broadband Network</td><td>ISP（香港）</td></tr></tbody></table><h3 id="AS-之间如何通信"><a href="#AS-之间如何通信" class="headerlink" title="AS 之间如何通信"></a>AS 之间如何通信</h3><p>不同的 AS 之间通过 <strong>BGP（Border Gateway Protocol，边界网关协议）</strong> 交换路由信息。你可以把 BGP 理解为”AS 之间的通讯协议”——每个 AS 通过 BGP 告诉邻居”我有哪些 IP 段，你如果要到达这些 IP，可以把流量发给我”。</p><p>当你从中国访问一个美国网站时，数据包可能经过多个 AS 的”接力”：中国电信（AS4134）→ 某个过境 AS → 美国某 ISP → 目标服务器所在的 AS。BGP 协议负责在这些 AS 之间找到最优路径。</p><p>这些 BGP 路由信息是公开可查的，这也是各种 ASN 查询工具能够工作的基础。</p><hr><h2 id="ASN-能告诉你什么"><a href="#ASN-能告诉你什么" class="headerlink" title="ASN 能告诉你什么"></a>ASN 能告诉你什么</h2><p>查到一个 IP 的 ASN 之后，你能获得以下关键信息：</p><h3 id="IP-的所有者"><a href="#IP-的所有者" class="headerlink" title="IP 的所有者"></a>IP 的所有者</h3><p>ASN 直接对应一个注册组织的名称。通过组织名称，你可以快速判断这个 IP 属于谁。比如看到 AS16509，你立刻知道这个 IP 来自 AWS；看到 AS7922，你知道这是 Comcast 的 IP。</p><h3 id="IP-的类型：数据中心还是-ISP"><a href="#IP-的类型：数据中心还是-ISP" class="headerlink" title="IP 的类型：数据中心还是 ISP"></a>IP 的类型：数据中心还是 ISP</h3><p>这是代理场景中最关键的一个判断。</p><p><strong>数据中心（Hosting）IP</strong> 属于云服务商或托管服务商的 AS。它们的特征是：大量 IP 被用于服务器托管，而非终端用户上网。流媒体平台和 AI 服务会将数据中心 IP 标记为高风险，因为从数据中心发出的请求大概率来自代理&#x2F;VPN 而非真实用户。</p><p><strong>ISP（互联网服务提供商）IP</strong> 属于面向终端用户提供接入服务的运营商的 AS。ISP 的 IP 被认为更”干净”，因为它们通常分配给家庭或企业用户使用。当流媒体平台看到来自 Comcast 或 NTT 的 IP 时，它会倾向于认为这是一个正常用户。</p><p>关于 IP 类型对解锁的影响，可以参考 <a href="/posts/ip-types/">什么是原生 IP、广播 IP、住宅 IP</a>。</p><h3 id="IP-的地理归属"><a href="#IP-的地理归属" class="headerlink" title="IP 的地理归属"></a>IP 的地理归属</h3><p>ASN 信息通常包含注册组织的所在国家&#x2F;地区。结合 GeoIP 数据库的查询结果，你可以判断一个 IP 是否是”原生 IP”——即 IP 的 ASN 归属国家与服务器的物理位置一致。</p><h3 id="IP-的网络规模和声誉"><a href="#IP-的网络规模和声誉" class="headerlink" title="IP 的网络规模和声誉"></a>IP 的网络规模和声誉</h3><p>一个 AS 管理的 IP 数量、它与多少其他 AS 有 BGP 连接（peer）、它的上游 AS 是谁——这些信息可以帮助你判断这个网络的规模和可靠性。一个大型 ISP 的 AS 通常有大量的 peer 连接，网络覆盖广泛；一个小型 VPS 提供商的 AS 可能只有几个上游连接。</p><hr><h2 id="如何查询-ASN"><a href="#如何查询-ASN" class="headerlink" title="如何查询 ASN"></a>如何查询 ASN</h2><h3 id="ipinfo-io"><a href="#ipinfo-io" class="headerlink" title="ipinfo.io"></a>ipinfo.io</h3><p><strong>网址</strong>：<a href="https://ipinfo.io/">https://ipinfo.io/</a></p><p>ipinfo.io 是最常用的 IP 信息查询工具之一。它不仅提供 ASN 信息，还标注 IP 的使用类型（ISP &#x2F; Hosting &#x2F; Business &#x2F; Education）、地理位置、隐私相关标记（是否为 VPN&#x2F;代理&#x2F;Tor 出口）等。</p><p>使用方法非常简单。在浏览器中直接访问 <code>https://ipinfo.io/IP地址</code> 即可查看结果：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://ipinfo.io/203.0.113.1</span><br></pre></td></tr></table></figure><p>你也可以在命令行中使用：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl ipinfo.io/203.0.113.1</span><br></pre></td></tr></table></figure><p>返回的 JSON 数据中，关键字段包括：</p><ul><li><code>org</code>：所属组织和 ASN（如 “AS16509 Amazon.com, Inc.”）</li><li><code>city</code> &#x2F; <code>region</code> &#x2F; <code>country</code>：地理位置</li><li><code>company.type</code>：组织类型（isp &#x2F; hosting &#x2F; business &#x2F; education）</li></ul><p>ipinfo.io 的免费版本每月有查询次数限制，但对于偶尔查几个 IP 来说完全够用。</p><h3 id="bgp-tools"><a href="#bgp-tools" class="headerlink" title="bgp.tools"></a>bgp.tools</h3><p><strong>网址</strong>：<a href="https://bgp.tools/">https://bgp.tools/</a></p><p>bgp.tools 是一个专注于 BGP 和 ASN 分析的工具，信息深度超过 ipinfo.io。它特别适合需要了解 AS 的路由关系、上下游连接、前缀公告等技术细节的用户。</p><p>在首页的搜索框中输入 IP 地址或 ASN 编号，你可以看到：</p><ul><li>AS 的基本信息（名称、国家、注册日期）</li><li>该 AS 公告的所有 IP 前缀列表</li><li>该 AS 的上游 &#x2F; 下游 &#x2F; peer AS 列表</li><li>前缀的路由路径和历史变化</li></ul><p>对于代理用户来说，bgp.tools 的价值在于：你可以查看一个 AS 的所有前缀，判断它是一个大型 ISP（拥有大量前缀和 peer）还是一个小型托管商（只有几个前缀和有限的上游）。</p><h3 id="bgpview-io"><a href="#bgpview-io" class="headerlink" title="bgpview.io"></a>bgpview.io</h3><p><strong>网址</strong>：<a href="https://bgpview.io/">https://bgpview.io/</a></p><p>bgpview.io 和 bgp.tools 功能类似，但界面更加直观友好。它提供了 AS 关系的可视化图表，可以帮助你更直观地理解一个 AS 在互联网拓扑中的位置。</p><p>搜索方式同样简单——输入 IP 地址、ASN 编号或组织名称即可。返回结果包括：</p><ul><li>AS 的详细注册信息</li><li>前缀列表和路由状态</li><li>AS 之间的连接关系图</li><li>Whois 原始数据</li></ul><h3 id="其他工具"><a href="#其他工具" class="headerlink" title="其他工具"></a>其他工具</h3><ul><li><strong><a href="https://ipapi.is/">ipapi.is</a></strong>：提供 IP 类型检测（datacenter&#x2F;residential&#x2F;VPN&#x2F;proxy），对代理用户非常实用</li><li><strong><a href="https://whoer.net/">whoer.net</a></strong>：综合隐私检测，可以查看你当前的出口 IP、DNS 泄漏、WebRTC 泄漏等</li><li><strong><a href="https://ipleak.net/">ipleak.net</a></strong>：专注于隐私泄漏检测</li></ul><hr><h2 id="如何解读查询结果"><a href="#如何解读查询结果" class="headerlink" title="如何解读查询结果"></a>如何解读查询结果</h2><h3 id="判断-IP-是数据中心还是-ISP"><a href="#判断-IP-是数据中心还是-ISP" class="headerlink" title="判断 IP 是数据中心还是 ISP"></a>判断 IP 是数据中心还是 ISP</h3><p>拿到 ASN 查询结果后，核心判断逻辑很简单：<strong>看组织名称和类型。</strong></p><p><strong>如果组织名称中包含以下关键词，大概率是数据中心 &#x2F; 云服务商：</strong></p><ul><li>Amazon &#x2F; AWS &#x2F; EC2</li><li>Google Cloud &#x2F; GCP</li><li>Microsoft Azure</li><li>DigitalOcean</li><li>Vultr &#x2F; Choopa &#x2F; The Constant Company</li><li>OVH &#x2F; OVHcloud</li><li>Hetzner</li><li>Linode &#x2F; Akamai Connected Cloud</li><li>Bandwagon Host &#x2F; IT7 Networks（搬瓦工）</li><li>CloudInnovation（DMIT）</li></ul><p><strong>如果组织名称中包含以下关键词，通常是 ISP：</strong></p><ul><li>Telecom &#x2F; 电信 &#x2F; Telekom</li><li>Broadband &#x2F; 宽带</li><li>Communications</li><li>Cable</li><li>Mobile &#x2F; 移动</li><li>特定国家的知名 ISP 名称（Comcast、NTT、KDDI、PCCW、SingTel 等）</li></ul><p>ipinfo.io 等工具通常会直接在结果中标注 <code>type: isp</code> 或 <code>type: hosting</code>，省去了你自己判断的步骤。</p><h3 id="数据中心-IP-意味着什么"><a href="#数据中心-IP-意味着什么" class="headerlink" title="数据中心 IP 意味着什么"></a>数据中心 IP 意味着什么</h3><p>如果你的代理节点使用的是数据中心 IP（比如来自 AWS、Vultr、Hetzner 的 IP），这意味着：</p><p><strong>流媒体解锁大概率受限。</strong> Netflix、Disney+、HBO Max 等主流平台都会将数据中心 IP 列入黑名单。即使这个 IP 目前还没被封，由于数据中心 IP 段已经被系统性标记，解锁能力本身就很脆弱。</p><p><strong>AI 服务可能受限。</strong> ChatGPT、Claude 等 AI 服务也会检测数据中心 IP。从数据中心 IP 访问可能触发验证、限制功能或直接拒绝服务。</p><p><strong>IP 更容易被”连坐”。</strong> 数据中心的 IP 段被大量代理和 VPN 服务共用，一个 IP 被平台标记后，同段的其他 IP 也可能受到牵连。</p><h3 id="ISP-IP-意味着什么"><a href="#ISP-IP-意味着什么" class="headerlink" title="ISP IP 意味着什么"></a>ISP IP 意味着什么</h3><p>如果节点使用的是 ISP 的 IP（如 Comcast、NTT、PCCW 的 IP），情况通常好得多：</p><p><strong>流媒体解锁成功率高。</strong> 平台倾向于将 ISP IP 视为正常用户，除非该特定 IP 有大量异常使用记录。</p><p><strong>AI 服务限制少。</strong> ISP IP 通常不会触发数据中心检测。</p><p><strong>但成本更高。</strong> ISP IP 获取难度大，价格远高于数据中心 IP。这也是为什么提供”原生 IP”或”住宅 IP”节点的机场价格往往更贵。</p><hr><h2 id="什么是”干净-IP”"><a href="#什么是”干净-IP”" class="headerlink" title="什么是”干净 IP”"></a>什么是”干净 IP”</h2><p>在代理社区中，”干净 IP”是一个非常常见的术语。它的含义是：</p><p><strong>一个没有被流媒体平台、AI 服务或 IP 信誉数据库标记为代理&#x2F;VPN 的 IP 地址。</strong></p><p>“干净”的反面是”脏”——一个”脏 IP”已经被一个或多个平台列入黑名单，无法用于解锁服务。</p><p>判断一个 IP 是否”干净”的方法：</p><ol><li><strong>用上述工具查询 ASN 和类型。</strong> 如果是数据中心 IP，先天就不太”干净”。</li><li><strong>直接测试解锁。</strong> 连接该节点后访问 Netflix&#x2F;Disney+&#x2F;ChatGPT 等服务，看是否被拦截。</li><li><strong>使用专门的检测工具。</strong> 如 <a href="https://ipapi.is/">ipapi.is</a> 可以检测一个 IP 是否被标记为 VPN&#x2F;代理。</li><li><strong>查看 IP 信誉评分。</strong> ipinfo.io 的 privacy 检测可以显示一个 IP 是否被标记为 VPN、代理或 Tor 出口。</li></ol><p>需要注意的是，”干净”是一个相对和动态的概念：</p><ul><li>一个 IP 可能在 Netflix 上”干净”但在 Disney+ 上”脏”——不同平台使用不同的黑名单。</li><li>一个 IP 今天”干净”，明天可能被封——因为被大量用户共用或被扫描检测到。</li><li>一个曾经”脏”的 IP 也可能随时间推移逐渐”变干净”——如果长期没有被代理使用，平台可能会解除标记。</li></ul><hr><h2 id="实际应用示例"><a href="#实际应用示例" class="headerlink" title="实际应用示例"></a>实际应用示例</h2><h3 id="场景一：评估一个新机场"><a href="#场景一：评估一个新机场" class="headerlink" title="场景一：评估一个新机场"></a>场景一：评估一个新机场</h3><p>你订阅了一个新机场，想知道它的节点质量。连上一个日本节点后，先查一下出口 IP：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl ipinfo.io</span><br></pre></td></tr></table></figure><p>如果返回结果显示：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">org: AS20473 The Constant Company, LLC</span><br></pre></td></tr></table></figure><p>你就知道这是 Vultr 的数据中心 IP。解锁能力一般，Netflix 日本大概率不行（除非这个特定 IP 碰巧还没被封）。</p><p>如果返回结果显示：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">org: AS2516 KDDI Corporation</span><br></pre></td></tr></table></figure><p>这是日本 KDDI 的 ISP IP——原生日本 IP，解锁能力强，品质相对较高。</p><h3 id="场景二：排查解锁失败"><a href="#场景二：排查解锁失败" class="headerlink" title="场景二：排查解锁失败"></a>场景二：排查解锁失败</h3><p>你的美国节点之前能看 Netflix，突然不行了。查一下出口 IP 的 ASN：</p><p>如果 ASN 属于某个云服务商，大概率是这个 IP 段被 Netflix 新加入了黑名单。你可以尝试切换到同机场的其他美国节点（可能使用不同 IP 段），或者联系机场客服反馈。</p><p>如果 ASN 属于 ISP，那可能是特定 IP 因为被过多用户共用而被标记。这种情况下，机场运营者可能需要轮换 IP 地址。</p><h3 id="场景三：选择机场时的参考"><a href="#场景三：选择机场时的参考" class="headerlink" title="场景三：选择机场时的参考"></a>场景三：选择机场时的参考</h3><p>当你对比多个机场时，可以分别试用后检查它们的节点 IP 归属。一个使用 ISP IP（特别是本地 ISP IP）的机场，在解锁能力和稳定性上通常优于使用便宜云服务商 IP 的机场——虽然价格也会更高。</p><p>这并不意味着数据中心 IP 的节点完全没有价值。对于单纯的翻墙上网（不需要解锁流媒体或 AI 服务），数据中心 IP 完全够用。但如果你的核心需求是流媒体解锁或 AI 服务访问，IP 质量就是一个需要重点关注的因素。</p><hr><h2 id="常见的数据中心-ASN"><a href="#常见的数据中心-ASN" class="headerlink" title="常见的数据中心 ASN"></a>常见的数据中心 ASN</h2><p>以下是代理场景中最常遇到的数据中心 ASN。如果你查询到节点 IP 属于这些 AS，说明它是数据中心 IP：</p><table><thead><tr><th>ASN</th><th>组织</th><th>说明</th></tr></thead><tbody><tr><td>AS16509</td><td>Amazon (AWS)</td><td>全球最大的云平台</td></tr><tr><td>AS14061</td><td>DigitalOcean</td><td>中等价位 VPS</td></tr><tr><td>AS20473</td><td>Vultr &#x2F; The Constant Company</td><td>热门 VPS</td></tr><tr><td>AS24940</td><td>Hetzner</td><td>欧洲热门廉价 VPS</td></tr><tr><td>AS16276</td><td>OVH</td><td>欧洲大型云服务商</td></tr><tr><td>AS63949</td><td>Linode (Akamai)</td><td>知名 VPS</td></tr><tr><td>AS13335</td><td>Cloudflare</td><td>CDN &#x2F; 网络服务</td></tr><tr><td>AS396982</td><td>Google Cloud</td><td>GCP</td></tr><tr><td>AS8075</td><td>Microsoft Azure</td><td>微软云</td></tr><tr><td>AS25820</td><td>IT7 Networks (搬瓦工)</td><td>华人用户常用</td></tr><tr><td>AS906</td><td>DMIT</td><td>面向亚洲优化的 VPS</td></tr><tr><td>AS51847</td><td>Nearoute (IPLC 提供商)</td><td>专线服务</td></tr></tbody></table><hr><h2 id="常见的-ISP-ASN"><a href="#常见的-ISP-ASN" class="headerlink" title="常见的 ISP ASN"></a>常见的 ISP ASN</h2><p>以下是各地区常见的 ISP ASN。节点使用这些 AS 的 IP 通常意味着更好的解锁能力：</p><table><thead><tr><th>地区</th><th>ASN</th><th>组织</th></tr></thead><tbody><tr><td>日本</td><td>AS2516</td><td>KDDI Corporation</td></tr><tr><td>日本</td><td>AS4713</td><td>NTT Communications (OCN)</td></tr><tr><td>日本</td><td>AS17676</td><td>SoftBank (BBTEC)</td></tr><tr><td>美国</td><td>AS7922</td><td>Comcast</td></tr><tr><td>美国</td><td>AS7018</td><td>AT&amp;T</td></tr><tr><td>美国</td><td>AS701</td><td>Verizon</td></tr><tr><td>香港</td><td>AS4515</td><td>PCCW</td></tr><tr><td>香港</td><td>AS9269</td><td>HKBN (Hong Kong Broadband)</td></tr><tr><td>台湾</td><td>AS3462</td><td>中华电信 (HiNet)</td></tr><tr><td>新加坡</td><td>AS4657</td><td>StarHub</td></tr><tr><td>新加坡</td><td>AS9506</td><td>SingTel</td></tr><tr><td>韩国</td><td>AS4766</td><td>Korea Telecom (KT)</td></tr><tr><td>韩国</td><td>AS3786</td><td>LG Uplus</td></tr><tr><td>英国</td><td>AS5089</td><td>Virgin Media</td></tr><tr><td>德国</td><td>AS3320</td><td>Deutsche Telekom</td></tr></tbody></table><hr><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="一个-IP-可以属于多个-AS-吗？"><a href="#一个-IP-可以属于多个-AS-吗？" class="headerlink" title="一个 IP 可以属于多个 AS 吗？"></a>一个 IP 可以属于多个 AS 吗？</h3><p>通常不会。一个 IP 前缀在某一时刻只由一个 AS 公告。但在特殊情况下（如 anycast 服务），同一个 IP 前缀可能从多个物理位置的路由器公告，不过它们仍然属于同一个 AS。</p><h3 id="ASN-查询的结果会变化吗？"><a href="#ASN-查询的结果会变化吗？" class="headerlink" title="ASN 查询的结果会变化吗？"></a>ASN 查询的结果会变化吗？</h3><p>会。IP 地址可以在不同组织之间转让，AS 也可以变更自己公告的前缀。一个 IP 今天属于 AS-A，几个月后可能被转让给 AS-B。但在代理场景中，这种变化通常不会频繁发生。</p><h3 id="为什么有些节点的-IP-查不到-ASN？"><a href="#为什么有些节点的-IP-查不到-ASN？" class="headerlink" title="为什么有些节点的 IP 查不到 ASN？"></a>为什么有些节点的 IP 查不到 ASN？</h3><p>极少数情况下，某些 IP 可能没有被任何 AS 公告（属于未使用或保留的地址段），或者查询工具的数据库更新有延迟。这种情况下，可以换一个查询工具试试。</p><h3 id="数据中心-IP-完全没法解锁吗？"><a href="#数据中心-IP-完全没法解锁吗？" class="headerlink" title="数据中心 IP 完全没法解锁吗？"></a>数据中心 IP 完全没法解锁吗？</h3><p>不是绝对的。某些数据中心的特定 IP 段可能尚未被平台标记，仍然可以解锁。但这种”可用”状态通常不稳定——随时可能被封。相比之下，ISP IP 的解锁持久性要好得多。此外，一些机场运营者通过技术手段（如 DNS 解锁）配合数据中心 IP 实现解锁，具体原理可以参考 <a href="/posts/dns-vs-native-unlock/">DNS 解锁与原生解锁的区别</a>。</p><h3 id="查-ASN-对普通用户有用吗？"><a href="#查-ASN-对普通用户有用吗？" class="headerlink" title="查 ASN 对普通用户有用吗？"></a>查 ASN 对普通用户有用吗？</h3><p>如果你只是日常翻墙浏览网页，不需要关心 ASN。但如果你重视流媒体解锁、AI 服务访问或节点稳定性，了解 ASN 的基础知识可以帮助你更理性地选择机场和评估节点质量——不被宣传话术迷惑，用数据说话。</p>]]>
    </content>
    <id>https://blog.e.show/posts/as-number-lookup/</id>
    <link href="https://blog.e.show/posts/as-number-lookup/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>每个 IP 地址都属于一个 AS（自治系统）。通过 AS 号可以判断 IP 是数据中心还是 ISP，进而评估节点的解锁能力和稳定性。</summary>
    <title>AS 号与 IP 归属查询：怎么看一个节点的 IP 质量</title>
    <updated>2026-05-09T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="代理软件" scheme="https://blog.e.show/categories/%E4%BB%A3%E7%90%86%E8%BD%AF%E4%BB%B6/"/>
    <category term="Clash" scheme="https://blog.e.show/tags/Clash/"/>
    <category term="mihomo" scheme="https://blog.e.show/tags/mihomo/"/>
    <category term="Clash Verge" scheme="https://blog.e.show/tags/Clash-Verge/"/>
    <category term="OpenClash" scheme="https://blog.e.show/tags/OpenClash/"/>
    <category term="客户端" scheme="https://blog.e.show/tags/%E5%AE%A2%E6%88%B7%E7%AB%AF/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：Clash 生态经历了开源、闭源、删库、fork 等戏剧性事件。本文梳理 Clash 系列的演变历史，解释各个分支的关系，帮助你理解当前应该使用哪个版本。</p></blockquote><h2 id="Clash-的诞生与繁荣"><a href="#Clash-的诞生与繁荣" class="headerlink" title="Clash 的诞生与繁荣"></a>Clash 的诞生与繁荣</h2><p>2018 至 2019 年间，开发者 Dreamacro 用 Go 语言创建了 Clash——一个基于规则的代理客户端。它的出现彻底改变了中文代理社区的格局。</p><p>在 Clash 之前，代理客户端的配置方式大多是图形界面点选或 JSON 手写，灵活性和可读性都有限。Clash 引入了 <strong>YAML 配置文件</strong>这一设计，让配置变得既直观又强大。一份 YAML 文件就能定义所有的代理节点、分流规则、DNS 设置和策略组——而且可读、可版本控制、可复用。</p><p>Clash 带来的核心创新包括：</p><ul><li><strong>YAML 配置格式</strong>：结构清晰、易于维护，对比 JSON 大幅降低了配置门槛。</li><li><strong>代理组（Proxy Groups）</strong>：支持自动选择、负载均衡、故障转移等策略，节点管理从”选一个用”变成了”设好策略自动选”。</li><li><strong>规则分流系统</strong>：通过 DOMAIN、GEOIP、IP-CIDR 等规则类型，精确控制每一条连接走代理还是直连。</li><li><strong>混合代理模式</strong>：同时支持 HTTP 代理、SOCKS5 代理和透明代理，一个客户端满足所有场景。</li><li><strong>rule-provider</strong>：将规则集独立托管，客户端自动拉取更新，不需要每次手动修改配置文件。</li><li><strong>RESTful API</strong>：提供外部控制接口，让 Web UI 和第三方工具能远程管理 Clash。</li></ul><p>凭借这些设计，Clash 迅速成为中文代理社区最主流的框架。它的成功不仅在于自身，还在于催生了一整个生态——基于 Clash 的图形化客户端、规则集、配置模板、订阅转换服务遍地开花。</p><h3 id="两个版本：Clash-与-Clash-Premium"><a href="#两个版本：Clash-与-Clash-Premium" class="headerlink" title="两个版本：Clash 与 Clash Premium"></a>两个版本：Clash 与 Clash Premium</h3><p>Clash 在早期就分化为两个版本：</p><ul><li><strong>Clash（开源版）</strong>：核心功能完整，代码开源在 GitHub，社区可以审计和贡献。</li><li><strong>Clash Premium（闭源版）</strong>：在开源版基础上增加了高级功能，以二进制形式分发，不开放源码。</li></ul><p>Clash Premium 增加的关键特性包括 <strong>TUN 模式</strong>（在系统层面接管所有流量，不仅限于配置了代理的应用）、<strong>rule-provider</strong>（早期只有 Premium 版支持）、<strong>Script 脚本支持</strong>（用 Python&#x2F;JS 编写自定义分流逻辑）。</p><p>这种”核心开源 + 高级功能闭源”的模式在当时并不罕见，Clash Premium 的功能确实强大，但闭源也为后来的变故埋下了隐患：一旦作者停止维护，社区无法接手闭源部分的代码。</p><h2 id="2023-年-11-月：大删库事件"><a href="#2023-年-11-月：大删库事件" class="headerlink" title="2023 年 11 月：大删库事件"></a>2023 年 11 月：大删库事件</h2><p>2023 年 11 月，Dreamacro 突然删除了 GitHub 上的 Clash 仓库。不仅仅是 Clash 核心——几乎在同一时间，基于 Clash 的多个重要项目也纷纷下线：</p><ul><li><strong>Clash for Windows</strong>（最流行的 Windows 端图形化客户端）宣布停止维护。</li><li><strong>Clash for Android</strong> 归档。</li><li>一系列相关工具和文档也被清理。</li></ul><p>这在中文代理社区引发了强烈震动。Clash 彼时已经是事实上的”基础设施”级项目，无数用户的日常上网依赖它，无数机场的配置格式围绕它构建。</p><p>关于删库的原因，Dreamacro 本人没有做详细公开说明。社区的普遍推测包括：</p><ul><li><strong>监管压力</strong>：Clash for Windows 的开发者据传受到了约谈或警告，引发连锁反应。</li><li><strong>个人决定</strong>：长期维护开源项目的压力和风险积累。</li><li><strong>法律风险规避</strong>：主动下架以避免潜在的法律责任。</li></ul><p>无论真实原因是什么，这次事件产生了两个关键结果：</p><ol><li><strong>原版 Clash 和 Clash Premium 彻底停止了更新。</strong> 没有新功能、没有 bug 修复、没有协议适配。</li><li><strong>社区 fork 成为唯一的延续路径。</strong> 幸运的是，Clash 的开源版本在删库前就已经被大量 fork，而且最重要的 fork——Clash Meta——在删库之前就已经是一个成熟的、独立发展的项目。</li></ol><h2 id="当前的-Clash-家族"><a href="#当前的-Clash-家族" class="headerlink" title="当前的 Clash 家族"></a>当前的 Clash 家族</h2><h3 id="Clash-Premium：已停止维护"><a href="#Clash-Premium：已停止维护" class="headerlink" title="Clash Premium：已停止维护"></a>Clash Premium：已停止维护</h3><p>Clash Premium 作为原版闭源增强版，曾是功能最完整的 Clash 内核。它支持 TUN 模式、rule-provider、Script 脚本等高级功能，在很长一段时间内是高级用户和机场配置的首选内核。</p><p>但由于闭源且已停更，Clash Premium 存在以下问题：</p><ul><li><strong>不再有安全更新</strong>：已知的漏洞不会被修复。</li><li><strong>不支持新协议</strong>：VLESS、Reality、Hysteria2 等 2023 年后成为主流的协议完全不被支持。</li><li><strong>无法获取新版本</strong>：官方分发渠道已关闭，网上流传的版本来源不明，存在安全隐患。</li></ul><p><strong>如果你还在使用 Clash Premium，强烈建议尽快迁移到 mihomo。</strong> 迁移成本几乎为零——mihomo 完全兼容 Clash Premium 的配置格式。</p><h3 id="Clash-Meta-到-mihomo：核心继承者"><a href="#Clash-Meta-到-mihomo：核心继承者" class="headerlink" title="Clash Meta 到 mihomo：核心继承者"></a>Clash Meta 到 mihomo：核心继承者</h3><p><strong>mihomo</strong>（原名 Clash.Meta）是当前 Clash 生态最重要的项目，也是事实上的”Clash 正统继承者”。</p><p>这个项目由 MetaCubeX 团队维护，创建时间早于删库事件。最初，它作为 Clash 的一个增强 fork 存在，目标是添加原版 Clash 和 Clash Premium 都不支持的新协议和新功能。</p><p>在删库事件后，Clash.Meta 更名为 <strong>mihomo</strong>——这个看似随意的名字背后是出于法律和安全考量的慎重决定。与”Clash”品牌脱钩，可以降低项目因名称关联而受到波及的风险。</p><p>mihomo 的定位非常明确：<strong>在完全兼容 Clash 配置格式的前提下，持续跟进最新的代理协议和技术。</strong></p><p>目前 mihomo 活跃维护，更新频率高，新协议的支持通常在协议发布后很快跟进。它已经取代了原版 Clash 和 Clash Premium 的位置，成为绝大多数 Clash 系客户端的底层内核。</p><p><strong>GitHub 地址</strong>：<a href="https://github.com/MetaCubeX/mihomo">MetaCubeX&#x2F;mihomo</a></p><h3 id="其他值得关注的分支"><a href="#其他值得关注的分支" class="headerlink" title="其他值得关注的分支"></a>其他值得关注的分支</h3><p>除了 mihomo，Clash 删库后还出现了一些其他 fork 和衍生项目。但从活跃度、功能完整度和社区采用度来看，mihomo 是压倒性的主流选择，其他项目的影响力相对有限。MetaCubeX 团队同时还维护 <strong>metacubexd</strong>（一个现代化的 Clash Web Dashboard）等配套工具，形成了完整的生态。</p><h2 id="基于-mihomo-的客户端"><a href="#基于-mihomo-的客户端" class="headerlink" title="基于 mihomo 的客户端"></a>基于 mihomo 的客户端</h2><p>mihomo 本身是一个命令行内核。大多数用户通过图形化客户端来使用它——这些客户端内置或调用 mihomo 核心，提供界面操作。</p><h3 id="Clash-Verge-Rev（桌面端首选）"><a href="#Clash-Verge-Rev（桌面端首选）" class="headerlink" title="Clash Verge Rev（桌面端首选）"></a>Clash Verge Rev（桌面端首选）</h3><ul><li><strong>平台</strong>：Windows &#x2F; macOS &#x2F; Linux</li><li><strong>技术栈</strong>：Tauri（Rust + Web 前端）</li><li><strong>定位</strong>：当前桌面端最推荐的 Clash 系客户端</li></ul><p>Clash Verge Rev 是原 Clash Verge 项目的社区继承版本。原版 Clash Verge 在大删库事件后也停止了更新，社区随后 fork 并继续维护，命名为 Clash Verge Rev（Rev 即 Revival&#x2F;Revised 之意）。</p><p>它的优势在于：</p><ul><li><strong>界面现代</strong>：比起老旧的 Clash for Windows，UI 设计更加清爽。</li><li><strong>内存占用低</strong>：得益于 Tauri 框架（Rust 后端），相比 Electron 方案内存占用显著更小。</li><li><strong>功能完整</strong>：支持 mihomo 的全部功能，包括 TUN 模式、规则集管理、节点测速等。</li><li><strong>更新活跃</strong>：社区持续维护，跟进 mihomo 的新版本。</li></ul><p><strong>GitHub 地址</strong>：<a href="https://github.com/clash-verge-rev/clash-verge-rev">clash-verge-rev&#x2F;clash-verge-rev</a></p><h3 id="OpenClash（路由器端首选）"><a href="#OpenClash（路由器端首选）" class="headerlink" title="OpenClash（路由器端首选）"></a>OpenClash（路由器端首选）</h3><ul><li><strong>平台</strong>：OpenWrt</li><li><strong>定位</strong>：路由器级别的代理解决方案，全家设备无需单独安装客户端</li></ul><p><a href="https://github.com/vernesong/OpenClash">OpenClash</a> 是 OpenWrt 路由器上最流行的代理插件。它通过 LuCI Web 界面提供管理能力，支持 mihomo 内核，可以在路由器层面为整个局域网提供透明代理。</p><p>对于家庭用户来说，在路由器上运行 OpenClash 意味着所有连接到这个路由器的设备——手机、平板、电视、游戏机——都自动通过代理上网，无需逐一安装和配置客户端。</p><h3 id="Clash-Meta-for-Android（Android-端）"><a href="#Clash-Meta-for-Android（Android-端）" class="headerlink" title="Clash Meta for Android（Android 端）"></a>Clash Meta for Android（Android 端）</h3><ul><li><strong>平台</strong>：Android</li><li><strong>定位</strong>：Android 上的 mihomo 图形化客户端</li></ul><p>采用 Material Design 界面风格，功能覆盖 mihomo 的主要特性。支持导入订阅链接、管理规则集、切换节点和代理模式。对于 Android 用户来说，是比较直接的 Clash 系选择。</p><p>不过需要注意，Android 端目前也有 sing-box 等替代方案正在快速发展。</p><h3 id="Stash（iOS-端）"><a href="#Stash（iOS-端）" class="headerlink" title="Stash（iOS 端）"></a>Stash（iOS 端）</h3><ul><li><strong>平台</strong>：iOS &#x2F; macOS</li><li><strong>定位</strong>：兼容 Clash 配置格式的商业客户端</li></ul><p><a href="https://apps.apple.com/app/stash-rule-based-proxy/id1596063349">Stash</a> 是一款付费应用（App Store 上架），<strong>不直接使用 mihomo 内核</strong>，而是使用自己的实现。但它兼容 Clash YAML 配置格式，这意味着你为 Clash&#x2F;mihomo 编写的配置文件可以直接导入 Stash 使用。</p><p>对于 iOS 用户来说，Stash 和 Shadowrocket 是两个主要选择。Stash 更偏向”Clash 生态”，Shadowrocket 则更通用。</p><h2 id="mihomo-相比原版-Clash-的改进"><a href="#mihomo-相比原版-Clash-的改进" class="headerlink" title="mihomo 相比原版 Clash 的改进"></a>mihomo 相比原版 Clash 的改进</h2><p>mihomo 不仅仅是”接手维护”，它在功能上已经远远超越了原版 Clash Premium。以下是关键差异：</p><table><thead><tr><th>特性</th><th>原版 Clash Premium</th><th>mihomo</th></tr></thead><tbody><tr><td>VLESS 协议</td><td>❌ 不支持</td><td>✅ 完整支持</td></tr><tr><td>Reality 协议</td><td>❌ 不支持</td><td>✅ 完整支持</td></tr><tr><td>Hysteria2</td><td>❌ 不支持</td><td>✅ 完整支持</td></tr><tr><td>TUIC 协议</td><td>❌ 不支持</td><td>✅ 完整支持</td></tr><tr><td>TCP Brutal</td><td>❌ 不支持</td><td>✅ 支持</td></tr><tr><td>Sub-Rule</td><td>❌ 不支持</td><td>✅ 支持嵌套规则</td></tr><tr><td>GeoSite 数据库</td><td>有限支持</td><td>✅ 完整支持</td></tr><tr><td>XHTTP 传输</td><td>❌ 不支持</td><td>✅ 支持</td></tr><tr><td>SSH 协议代理</td><td>❌ 不支持</td><td>✅ 支持</td></tr><tr><td>维护状态</td><td>已停止（2023 年 11 月）</td><td>活跃开发中</td></tr></tbody></table><p>几个特别值得说明的改进：</p><ul><li><strong>VLESS + Reality</strong>：这是目前抗检测能力最强的协议组合之一。mihomo 对其的支持意味着你可以在 Clash 配置体系下直接使用最先进的协议，不需要切换到其他内核。详见 <a href="../protocols/vless-reality-deep-dive.md">VLESS + Reality 深度解析</a>。</li><li><strong>Hysteria2 和 TUIC</strong>：这两个基于 QUIC（UDP）的协议在高延迟、高丢包网络下有显著优势。原版 Clash 完全没有 UDP 代理协议的支持，mihomo 填补了这个空白。</li><li><strong>Sub-Rule（子规则）</strong>：允许在规则匹配后进一步细分处理逻辑，配置灵活度大幅提升。</li></ul><h2 id="配置兼容性"><a href="#配置兼容性" class="headerlink" title="配置兼容性"></a>配置兼容性</h2><p>从 Clash Premium 迁移到 mihomo，配置兼容性是大多数用户最关心的问题。好消息是：<strong>mihomo 对 Clash Premium 配置格式保持了高度向后兼容</strong>。</p><p>具体来说：</p><ul><li><strong>标准 Clash YAML 配置文件</strong>可以直接被 mihomo 解析和使用，几乎不需要任何修改。</li><li><strong>rule-provider、proxy-provider</strong> 等 Clash Premium 引入的功能在 mihomo 中完全支持。</li><li><strong>代理组策略</strong>（url-test、fallback、load-balance 等）的语法和行为与原版一致。</li><li><strong>DNS 配置</strong>的格式和逻辑兼容。</li></ul><p>新功能方面，mihomo 使用了扩展的 YAML 语法来支持原版 Clash 不存在的协议和特性。例如，添加一个 VLESS + Reality 节点的写法：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">proxies:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">&quot;vless-reality&quot;</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">vless</span></span><br><span class="line">    <span class="attr">server:</span> <span class="string">your.server.com</span></span><br><span class="line">    <span class="attr">port:</span> <span class="number">443</span></span><br><span class="line">    <span class="attr">uuid:</span> <span class="string">your-uuid</span></span><br><span class="line">    <span class="attr">network:</span> <span class="string">tcp</span></span><br><span class="line">    <span class="attr">tls:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">udp:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">flow:</span> <span class="string">xtls-rprx-vision</span></span><br><span class="line">    <span class="attr">servername:</span> <span class="string">www.microsoft.com</span></span><br><span class="line">    <span class="attr">reality-opts:</span></span><br><span class="line">      <span class="attr">public-key:</span> <span class="string">your-public-key</span></span><br><span class="line">      <span class="attr">short-id:</span> <span class="string">your-short-id</span></span><br></pre></td></tr></table></figure><p>这些扩展语法不会影响已有的 Clash 配置——你的旧配置依然正常工作，只是在需要使用新协议时才会用到新语法。</p><p><strong>订阅转换</strong>方面，主流的订阅转换服务（如 <a href="https://github.com/tindy2013/subconverter">subconverter</a>）都已支持输出 mihomo 兼容格式。大多数机场的订阅链接也已经默认适配 mihomo。如果你的机场订阅链接直接能用，不需要做任何转换。</p><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="Q：现在搜”Clash”搜到的是什么版本？"><a href="#Q：现在搜”Clash”搜到的是什么版本？" class="headerlink" title="Q：现在搜”Clash”搜到的是什么版本？"></a>Q：现在搜”Clash”搜到的是什么版本？</h3><p>如果你在搜索引擎中搜索”Clash 代理”或”Clash 下载”，搜到的几乎都是基于 mihomo 的产品——Clash Verge Rev、OpenClash、Clash Meta for Android 等。原版 Clash 和 Clash Premium 的下载链接已经不存在了。在 2024 年之后的语境下，”Clash”这个词实际上已经等同于”mihomo 生态”。</p><h3 id="Q：我的-Clash-配置文件还能用吗？"><a href="#Q：我的-Clash-配置文件还能用吗？" class="headerlink" title="Q：我的 Clash 配置文件还能用吗？"></a>Q：我的 Clash 配置文件还能用吗？</h3><p>如果你的配置是标准的 Clash YAML 格式，几乎 100% 可以直接在 mihomo 下使用。直接导入即可。唯一可能需要调整的情况是：你的配置中使用了 Clash Premium 的 Script 功能（用 Python 脚本自定义分流逻辑），这个功能在 mihomo 中的实现方式有所不同。</p><h3 id="Q：Clash-Verge-和-Clash-Verge-Rev-什么关系？"><a href="#Q：Clash-Verge-和-Clash-Verge-Rev-什么关系？" class="headerlink" title="Q：Clash Verge 和 Clash Verge Rev 什么关系？"></a>Q：Clash Verge 和 Clash Verge Rev 什么关系？</h3><p>Clash Verge 是原版客户端，由 zzzgydi 开发。在删库事件后，原版 Clash Verge 也停止了更新。Clash Verge Rev 是社区基于原版的 fork，由新的维护团队继续开发。两者的界面和交互非常相似，但 Rev 版本修复了旧版的 bug、跟进了 mihomo 的新功能、改善了性能和稳定性。<strong>推荐使用 Rev 版本</strong>。</p><h3 id="Q：还有必要用-Clash-系吗？Sing-box-不是更新？"><a href="#Q：还有必要用-Clash-系吗？Sing-box-不是更新？" class="headerlink" title="Q：还有必要用 Clash 系吗？Sing-box 不是更新？"></a>Q：还有必要用 Clash 系吗？Sing-box 不是更新？</h3><p>这是一个好问题。sing-box 确实是更新的代理框架，架构设计更现代，性能也有一定优势。但 Clash 系（mihomo）的核心优势在两个方面：</p><ol><li><strong>规则系统的成熟度</strong>：Clash 的 rule-provider 生态已经非常完善，社区维护着大量成熟的规则集（Loyalsoldier、MetaCubeX、ACL4SSR 等），覆盖了绝大多数分流场景。这些规则集经过多年迭代，准确性高、维护频繁。</li><li><strong>社区生态的庞大</strong>：配置模板、教程文档、问题解答——围绕 Clash&#x2F;mihomo 的社区资源极其丰富。遇到问题时，搜索到解决方案的概率远高于 sing-box。</li></ol><p>对于大多数用户来说，Clash Verge Rev（mihomo 内核）仍然是<strong>上手最快、维护成本最低</strong>的选择。如果你对 sing-box 有兴趣，可以参考 <a href="./singbox-guide.md">Sing-box 使用指南</a> 和 <a href="./singbox-vs-clash-tun.md">Sing-box TUN vs Clash Verge TUN：实际体验对比</a>。</p><h3 id="Q：mihomo-的名字为什么这么奇怪？"><a href="#Q：mihomo-的名字为什么这么奇怪？" class="headerlink" title="Q：mihomo 的名字为什么这么奇怪？"></a>Q：mihomo 的名字为什么这么奇怪？</h3><p>mihomo 这个名字并没有特别深的含义。项目更名的主要目的是与”Clash”品牌脱钩，降低因品牌名称关联而带来的法律和安全风险。名字本身不重要——重要的是它是目前最活跃、功能最完整的 Clash 兼容内核。</p><h3 id="Q：我是新用户，应该从哪个客户端开始？"><a href="#Q：我是新用户，应该从哪个客户端开始？" class="headerlink" title="Q：我是新用户，应该从哪个客户端开始？"></a>Q：我是新用户，应该从哪个客户端开始？</h3><p>根据你的平台选择：</p><ul><li><strong>Windows &#x2F; macOS &#x2F; Linux</strong>：Clash Verge Rev。下载安装后导入订阅链接即可使用。</li><li><strong>Android</strong>：Clash Meta for Android 或 v2rayNG。</li><li><strong>iOS</strong>：Stash（付费，兼容 Clash 配置）或 Shadowrocket（付费，更通用）。</li><li><strong>路由器（OpenWrt）</strong>：OpenClash。</li></ul><p>如果你是第一次使用代理，建议先阅读 <a href="../beginner/first-time-setup.md">第一次使用代理：从零开始的配置指南</a>。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>Clash 的故事是开源社区韧性的一个缩影。原始项目虽然消失了，但它的设计理念和配置生态通过 mihomo 延续了下来，并且在功能上走得更远。</p><p>当前的 Clash 生态简单明了：</p><ul><li><strong>内核</strong>：mihomo（MetaCubeX&#x2F;mihomo）——唯一活跃维护的 Clash 兼容内核。</li><li><strong>桌面客户端</strong>：Clash Verge Rev——最推荐的跨平台图形化客户端。</li><li><strong>路由器</strong>：OpenClash——OpenWrt 上的首选方案。</li><li><strong>配置格式</strong>：Clash YAML——经过 mihomo 扩展，支持所有现代协议。</li></ul><p>如果你曾经用过 Clash，你的知识和配置仍然有效。如果你是新用户，直接从 mihomo 生态开始即可。无论哪种情况，Clash 的规则系统和配置哲学在代理工具领域仍然是最成熟、最易用的方案之一。</p>]]>
    </content>
    <id>https://blog.e.show/posts/clash-family/</id>
    <link href="https://blog.e.show/posts/clash-family/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>Clash 生态经历了开源、闭源、删库、fork 等戏剧性事件。梳理 Clash 系列的演变历史和当前应该使用的版本。</summary>
    <title>Clash 系列全解：Clash Premium / Clash Meta / mihomo 的关系</title>
    <updated>2026-05-09T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="规则与分流" scheme="https://blog.e.show/categories/%E8%A7%84%E5%88%99%E4%B8%8E%E5%88%86%E6%B5%81/"/>
    <category term="Clash" scheme="https://blog.e.show/tags/Clash/"/>
    <category term="mihomo" scheme="https://blog.e.show/tags/mihomo/"/>
    <category term="rule-provider" scheme="https://blog.e.show/tags/rule-provider/"/>
    <category term="规则集" scheme="https://blog.e.show/tags/%E8%A7%84%E5%88%99%E9%9B%86/"/>
    <category term="配置" scheme="https://blog.e.show/tags/%E9%85%8D%E7%BD%AE/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：rule-provider 是 Clash（mihomo）中管理分流规则的核心机制。它允许你从外部加载和自动更新规则列表，而不用在配置文件中手写成百上千条规则。本文详解 rule-provider 的工作原理、配置方法和常用规则集推荐。</p></blockquote><h2 id="为什么需要-rule-provider"><a href="#为什么需要-rule-provider" class="headerlink" title="为什么需要 rule-provider"></a>为什么需要 rule-provider</h2><p>一个能用的代理配置，分流规则是核心。你需要告诉客户端：哪些流量走代理、哪些直连、哪些应该屏蔽。</p><p>如果不使用 rule-provider，你的配置文件里会写满这样的内容：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">rules:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,google.com,Proxy</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,googleapis.com,Proxy</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,youtube.com,Proxy</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,twitter.com,Proxy</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,facebook.com,Proxy</span></span><br><span class="line">  <span class="comment"># ... 还有几千条</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">IP-CIDR,91.108.0.0/16,Proxy</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">IP-CIDR,149.154.0.0/16,Proxy</span></span><br><span class="line">  <span class="comment"># ... 还有几百条 IP 段</span></span><br></pre></td></tr></table></figure><p>这种做法有三个严重问题：</p><ol><li><p><strong>配置文件膨胀</strong>。一套完整的分流规则通常包含数千条记录——GFW 屏蔽的域名、国内直连的域名和 IP 段、广告域名、各种流媒体的域名。全部写在主配置文件中，文件大小动辄几百 KB，打开编辑都很困难。</p></li><li><p><strong>无法自动更新</strong>。GFW 的屏蔽列表不是固定的，新的域名不断被封锁，旧的 IP 段可能被释放。广告域名的变化更加频繁。如果规则写死在配置文件里，你需要手动追踪这些变化并逐条更新，这在实际操作中几乎不可能做到。</p></li><li><p><strong>维护成本极高</strong>。当你想调整分流策略时——比如把 Netflix 从通用代理组移到专门的流媒体组——你需要在几千条规则中找到所有相关条目并逐一修改。</p></li></ol><p>rule-provider 的思路和浏览器的广告拦截器完全一样：<strong>你不用自己编写拦截规则，只需要订阅别人维护的规则列表。</strong> 列表的维护者会持续更新内容，你的客户端定期拉取最新版本，始终保持规则的时效性。</p><h2 id="rule-provider-的工作原理"><a href="#rule-provider-的工作原理" class="headerlink" title="rule-provider 的工作原理"></a>rule-provider 的工作原理</h2><p>rule-provider 的运行逻辑分为三个阶段：</p><p><strong>加载阶段</strong>：Clash 启动时，读取配置文件中 <code>rule-providers</code> 段的定义。对于每个 provider，根据 <code>type</code> 字段决定加载方式——<code>http</code> 类型会从指定 URL 下载规则文件，<code>file</code> 类型会从本地路径读取文件。下载的文件会缓存到 <code>path</code> 指定的本地路径。</p><p><strong>更新阶段</strong>：对于 <code>http</code> 类型的 provider，Clash 会按照 <code>interval</code> 字段设定的时间间隔（单位为秒）重新下载规则文件。如果下载失败（比如网络不可用），Clash 会继续使用上一次成功下载的缓存文件，不会中断服务。</p><p><strong>匹配阶段</strong>：当有流量进入时，Clash 按照 <code>rules</code> 段的顺序逐条匹配。遇到 <code>RULE-SET</code> 类型的规则时，Clash 会在对应的 rule-provider 加载的规则列表中查找匹配项。如果找到匹配，按照 <code>RULE-SET</code> 指定的策略组处理；如果没有匹配，继续检查下一条规则。</p><p><strong>规则文件格式</strong>：rule-provider 支持三种格式：</p><ul><li><strong>text</strong>：纯文本格式，每行一条规则，最直观也最通用</li><li><strong>yaml</strong>：YAML 格式，规则包裹在 <code>payload</code> 字段中</li><li><strong>mrs</strong>：mihomo 专有的二进制格式，加载速度最快，但只有 mihomo 内核支持</li></ul><h2 id="配置方法"><a href="#配置方法" class="headerlink" title="配置方法"></a>配置方法</h2><h3 id="基本语法"><a href="#基本语法" class="headerlink" title="基本语法"></a>基本语法</h3><p>rule-provider 的配置分为两部分：先在 <code>rule-providers</code> 段定义规则集，再在 <code>rules</code> 段中引用它们。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">rule-providers:</span></span><br><span class="line">  <span class="attr">google:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/google.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">cn-cidr:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">ipcidr</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/cncidr.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line"><span class="attr">rules:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,google,Proxy</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,cn-cidr,DIRECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">MATCH,Proxy</span></span><br></pre></td></tr></table></figure><h3 id="参数详解"><a href="#参数详解" class="headerlink" title="参数详解"></a>参数详解</h3><p>每个 rule-provider 包含以下参数：</p><p><strong>type</strong> – 加载方式</p><ul><li><code>http</code>：从远程 URL 下载规则文件。适合使用公共维护的规则集。</li><li><code>file</code>：从本地文件路径读取。适合自定义规则或网络受限环境。</li></ul><p><strong>behavior</strong> – 规则行为类型</p><p>这是最容易混淆的参数，决定了规则文件内容的解析方式。三种取值对应三种不同的文件格式要求：</p><ul><li><code>domain</code>：文件中每一行是一个域名，Clash 自动按 DOMAIN-SUFFIX 逻辑匹配。</li><li><code>ipcidr</code>：文件中每一行是一个 IP CIDR 段。</li><li><code>classical</code>：文件中每一行是完整的规则语法（包含规则类型前缀）。</li></ul><p><strong>url</strong> – 远程下载地址</p><p>规则文件的 URL。仅在 <code>type: http</code> 时需要。建议使用 CDN 加速地址（如 jsdelivr）以提高下载成功率。</p><p><strong>path</strong> – 本地缓存路径</p><p>下载的规则文件在本地的存储路径。即使是 <code>http</code> 类型也需要指定，用于缓存下载的文件。路径相对于 Clash 的配置目录。</p><p><strong>interval</strong> – 更新间隔</p><p>自动更新的时间间隔，单位为秒。<code>86400</code> 表示每 24 小时更新一次。设为 <code>0</code> 则不自动更新。</p><p><strong>format</strong> – 文件格式</p><ul><li><code>text</code>：纯文本，每行一条规则，最常用。</li><li><code>yaml</code>：YAML 格式，规则在 <code>payload</code> 列表中。</li><li><code>mrs</code>：mihomo 的二进制格式，解析速度最快。</li></ul><h3 id="behavior-类型详细说明"><a href="#behavior-类型详细说明" class="headerlink" title="behavior 类型详细说明"></a>behavior 类型详细说明</h3><p>三种 behavior 的区别是新手最容易踩坑的地方。文件内容格式必须和 behavior 声明严格对应，否则 Clash 无法正确解析。</p><p><strong>domain behavior</strong>：</p><p>文件内容只包含域名，不需要规则类型前缀：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">google.com</span><br><span class="line">googleapis.com</span><br><span class="line">youtube.com</span><br><span class="line">gstatic.com</span><br></pre></td></tr></table></figure><p>Clash 会自动将这些域名按 DOMAIN-SUFFIX 逻辑匹配。也就是说，<code>google.com</code> 会匹配 <code>google.com</code> 本身以及 <code>mail.google.com</code>、<code>docs.google.com</code> 等所有子域名。</p><p>在 <code>rules</code> 中引用时直接写 <code>RULE-SET,google,Proxy</code>，不需要再指定匹配类型。</p><p><strong>ipcidr behavior</strong>：</p><p>文件内容只包含 IP CIDR 段：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">91.108.0.0/16</span><br><span class="line">149.154.0.0/16</span><br></pre></td></tr></table></figure><p>引用方式与 domain 相同。当流量的目标 IP 落在这些 CIDR 范围内时，规则命中。</p><p><strong>classical behavior</strong>：</p><p>文件内容包含完整的规则语法，支持混合多种规则类型：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">DOMAIN-SUFFIX,google.com</span><br><span class="line">DOMAIN-KEYWORD,youtube</span><br><span class="line">IP-CIDR,91.108.0.0/16,no-resolve</span><br><span class="line">DOMAIN,api.openai.com</span><br></pre></td></tr></table></figure><p>classical 是最灵活的 behavior，因为一个文件中可以同时包含域名规则、IP 规则、关键词规则等。代价是解析速度略慢于 domain 和 ipcidr，因为 Clash 需要逐行解析规则类型前缀。</p><p><strong>选择建议</strong>：如果规则文件只包含域名，用 <code>domain</code>；只包含 IP 段，用 <code>ipcidr</code>；包含混合类型，用 <code>classical</code>。公共规则集的文档通常会标明应该使用哪种 behavior。</p><h3 id="在规则中引用-rule-provider"><a href="#在规则中引用-rule-provider" class="headerlink" title="在规则中引用 rule-provider"></a>在规则中引用 rule-provider</h3><p>定义好 rule-provider 后，在 <code>rules</code> 段中通过 <code>RULE-SET</code> 关键字引用：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">rules:</span></span><br><span class="line">  <span class="comment"># 广告拦截</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,reject,REJECT</span></span><br><span class="line">  <span class="comment"># 私有地址直连</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,private,DIRECT</span></span><br><span class="line">  <span class="comment"># 具体服务 → 专用策略组</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,openai,AI</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,google,Proxy</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,apple,Apple</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,netflix,Streaming</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,telegram,Telegram</span></span><br><span class="line">  <span class="comment"># 国内流量直连</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,cn-domain,DIRECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,cn-cidr,DIRECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">GEOIP,CN,DIRECT</span></span><br><span class="line">  <span class="comment"># 兜底</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">MATCH,Proxy</span></span><br></pre></td></tr></table></figure><p>规则的匹配顺序至关重要：<strong>Clash 从上到下逐条匹配，第一条命中的规则生效。</strong> 因此：</p><ul><li>把 REJECT（广告拦截）放在最前面，确保广告域名不会被后面的规则放行</li><li>具体服务的规则放在通用规则前面，避免被更宽泛的规则覆盖</li><li>GEOIP 和 MATCH 放在最后作为兜底</li></ul><h2 id="常用规则集推荐"><a href="#常用规则集推荐" class="headerlink" title="常用规则集推荐"></a>常用规则集推荐</h2><h3 id="Loyalsoldier-clash-rules"><a href="#Loyalsoldier-clash-rules" class="headerlink" title="Loyalsoldier&#x2F;clash-rules"></a><a href="https://github.com/Loyalsoldier/clash-rules">Loyalsoldier&#x2F;clash-rules</a></h3><p>目前最流行的 Clash 规则集项目，社区维护活跃，覆盖全面。</p><p><strong>规则分类</strong>：</p><table><thead><tr><th>文件名</th><th>内容</th><th>behavior</th></tr></thead><tbody><tr><td><code>reject.txt</code></td><td>广告、追踪器域名</td><td>domain</td></tr><tr><td><code>direct.txt</code></td><td>国内直连域名</td><td>domain</td></tr><tr><td><code>proxy.txt</code></td><td>需要代理的域名</td><td>domain</td></tr><tr><td><code>google.txt</code></td><td>Google 服务域名</td><td>domain</td></tr><tr><td><code>apple.txt</code></td><td>Apple 服务域名</td><td>domain</td></tr><tr><td><code>icloud.txt</code></td><td>iCloud 域名</td><td>domain</td></tr><tr><td><code>private.txt</code></td><td>私有网络域名</td><td>domain</td></tr><tr><td><code>gfw.txt</code></td><td>GFW 屏蔽域名</td><td>domain</td></tr><tr><td><code>cncidr.txt</code></td><td>中国大陆 IP 段</td><td>ipcidr</td></tr><tr><td><code>telegramcidr.txt</code></td><td>Telegram IP 段</td><td>ipcidr</td></tr><tr><td><code>lancidr.txt</code></td><td>局域网 IP 段</td><td>ipcidr</td></tr></tbody></table><p><strong>URL 基础路径</strong>：<code>https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/</code></p><p><strong>格式</strong>：text</p><p><strong>适合人群</strong>：大多数用户。规则分类清晰，文件格式统一，文档完善。</p><h3 id="MetaCubeX-meta-rules-dat"><a href="#MetaCubeX-meta-rules-dat" class="headerlink" title="MetaCubeX&#x2F;meta-rules-dat"></a><a href="https://github.com/MetaCubeX/meta-rules-dat">MetaCubeX&#x2F;meta-rules-dat</a></h3><p>mihomo（Clash Meta）官方维护的规则数据集，提供 MRS 二进制格式。</p><p><strong>特点</strong>：</p><ul><li>提供 MRS 格式的规则文件，加载速度显著快于文本格式。在规则数量较大时（数万条），MRS 格式的解析时间可以比 text 格式快数倍。</li><li>规则数据来源于 v2fly&#x2F;domain-list-community 和 Loyalsoldier&#x2F;geoip 等上游项目，覆盖全面。</li><li>同时提供 GeoSite 和 GeoIP 数据，可以搭配 <code>GEOSITE</code> 和 <code>GEOIP</code> 规则使用。</li></ul><p><strong>适合人群</strong>：使用 mihomo 内核的用户。如果你的客户端是 Clash Verge Rev、Clash Nyanpasu 等基于 mihomo 的软件，优先考虑这个项目以获得最佳加载性能。</p><h3 id="ACL4SSR"><a href="#ACL4SSR" class="headerlink" title="ACL4SSR"></a><a href="https://github.com/ACL4SSR/ACL4SSR">ACL4SSR</a></h3><p>历史悠久的规则项目，最大的特点是提供了<strong>预制的完整配置文件</strong>，包括 rule-provider 定义和 rules 段，开箱即用。</p><p><strong>特点</strong>：</p><ul><li>规则分类非常细致，对流媒体服务有详细拆分：Netflix、Disney+、HBO、Amazon Prime Video、Spotify 等各有独立规则文件。</li><li>提供适用于不同机场订阅转换服务的配置模板。</li><li>社区讨论活跃，遇到问题容易找到解决方案。</li></ul><p><strong>适合人群</strong>：需要对每个流媒体服务单独配置路由策略的用户。比如你想让 Netflix 走美国节点、Disney+ 走新加坡节点，ACL4SSR 的细粒度分类会很方便。</p><h2 id="完整配置示例"><a href="#完整配置示例" class="headerlink" title="完整配置示例"></a>完整配置示例</h2><p>以下是一套可以直接使用或在此基础上修改的完整配置。包含广告拦截、国内直连、常用海外服务分组、流媒体、AI 服务和 Telegram 的独立路由。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># ==================== 规则集定义 ====================</span></span><br><span class="line"><span class="attr">rule-providers:</span></span><br><span class="line">  <span class="comment"># 广告拦截</span></span><br><span class="line">  <span class="attr">reject:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/reject.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">43200</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 私有网络</span></span><br><span class="line">  <span class="attr">private:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/private.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 国内直连域名</span></span><br><span class="line">  <span class="attr">cn-domain:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/direct.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 国内 IP 段</span></span><br><span class="line">  <span class="attr">cn-cidr:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">ipcidr</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/cncidr.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># Google 服务</span></span><br><span class="line">  <span class="attr">google:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/google.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># Apple 服务</span></span><br><span class="line">  <span class="attr">apple:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/apple.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># iCloud</span></span><br><span class="line">  <span class="attr">icloud:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/icloud.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># Telegram IP 段</span></span><br><span class="line">  <span class="attr">telegram-cidr:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">ipcidr</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/telegramcidr.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 流媒体 - Netflix</span></span><br><span class="line">  <span class="attr">netflix:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">classical</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Providers/Ruleset/Netflix.yaml&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/netflix.yaml</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 流媒体 - Disney+</span></span><br><span class="line">  <span class="attr">disney:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">classical</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Providers/Ruleset/DisneyPlus.yaml&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/disney.yaml</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># AI 服务 (OpenAI, Claude 等)</span></span><br><span class="line">  <span class="attr">ai-services:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">file</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">classical</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/ai-services.txt</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># GFW 列表</span></span><br><span class="line">  <span class="attr">gfw:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/gfw.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 需要代理的域名</span></span><br><span class="line">  <span class="attr">proxy-domain:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/proxy.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># ==================== 分流规则 ====================</span></span><br><span class="line"><span class="attr">rules:</span></span><br><span class="line">  <span class="comment"># 1. 广告拦截 - 最高优先级</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,reject,REJECT</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 2. 私有地址和局域网 - 必须直连</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,private,DIRECT</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 3. AI 服务 - 单独分组，方便切换节点地区</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,ai-services,AI</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 4. 流媒体 - 单独分组，走专用解锁节点</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,netflix,Streaming</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,disney,Streaming</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 5. Telegram - 基于 IP 段匹配</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,telegram-cidr,Telegram</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 6. Google 服务</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,google,Proxy</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 7. Apple 服务 - 国内 CDN 可直连，部分服务需要代理</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,apple,Apple</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,icloud,Apple</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 8. 国内域名和 IP - 直连</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,cn-domain,DIRECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,cn-cidr,DIRECT</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 9. GFW 列表和通用代理域名</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,gfw,Proxy</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,proxy-domain,Proxy</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 10. GeoIP 兜底 - 中国 IP 直连</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">GEOIP,CN,DIRECT</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 11. 最终兜底 - 未匹配的流量走代理</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">MATCH,Proxy</span></span><br></pre></td></tr></table></figure><p>上面的配置中，<code>ai-services</code> 使用了 <code>type: file</code>，你需要手动创建这个文件。示例内容如下（保存为 <code>./ruleset/ai-services.txt</code>）：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">DOMAIN-SUFFIX,openai.com</span><br><span class="line">DOMAIN-SUFFIX,ai.com</span><br><span class="line">DOMAIN-SUFFIX,chatgpt.com</span><br><span class="line">DOMAIN-SUFFIX,oaistatic.com</span><br><span class="line">DOMAIN-SUFFIX,oaiusercontent.com</span><br><span class="line">DOMAIN-SUFFIX,anthropic.com</span><br><span class="line">DOMAIN-SUFFIX,claude.ai</span><br><span class="line">DOMAIN-SUFFIX,googleapis.com</span><br><span class="line">DOMAIN-SUFFIX,gemini.google.com</span><br><span class="line">DOMAIN-SUFFIX,bard.google.com</span><br><span class="line">DOMAIN-SUFFIX,deepmind.google</span><br><span class="line">DOMAIN-SUFFIX,copilot.microsoft.com</span><br><span class="line">DOMAIN-SUFFIX,perplexity.ai</span><br></pre></td></tr></table></figure><p>配置中引用了 <code>AI</code>、<code>Streaming</code>、<code>Telegram</code>、<code>Apple</code> 等策略组名称，你需要在 <code>proxy-groups</code> 段中定义这些组。这些组的具体节点配置取决于你的代理服务提供商。</p><h2 id="自定义规则集"><a href="#自定义规则集" class="headerlink" title="自定义规则集"></a>自定义规则集</h2><p>公共规则集覆盖了绝大多数场景，但总有一些个性化需求需要自定义规则。</p><h3 id="创建自定义规则文件"><a href="#创建自定义规则文件" class="headerlink" title="创建自定义规则文件"></a>创建自定义规则文件</h3><p>以公司内网域名直连为例，创建一个文本文件 <code>company.txt</code>：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">internal.mycompany.com</span><br><span class="line">gitlab.mycompany.com</span><br><span class="line">jira.mycompany.com</span><br><span class="line">wiki.mycompany.com</span><br><span class="line">vpn.mycompany.com</span><br></pre></td></tr></table></figure><h3 id="在配置中引用"><a href="#在配置中引用" class="headerlink" title="在配置中引用"></a>在配置中引用</h3><p>如果是本地文件：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">rule-providers:</span></span><br><span class="line">  <span class="attr">company:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">file</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/company.txt</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line"><span class="attr">rules:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,company,DIRECT</span></span><br><span class="line">  <span class="comment"># ... 其他规则</span></span><br></pre></td></tr></table></figure><p>如果你把文件托管到 GitHub 或自己的服务器：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">rule-providers:</span></span><br><span class="line">  <span class="attr">company:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">http</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://raw.githubusercontent.com/yourname/rules/main/company.txt&quot;</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./ruleset/company.txt</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">86400</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br></pre></td></tr></table></figure><h3 id="实际应用场景"><a href="#实际应用场景" class="headerlink" title="实际应用场景"></a>实际应用场景</h3><p><strong>游戏加速</strong>：某些游戏的服务器 IP 需要走特定节点以获得最低延迟。创建一个 <code>gaming.txt</code>，使用 ipcidr behavior，将游戏服务器 IP 段路由到延迟最低的节点组。</p><p><strong>开发工具</strong>：GitHub、npm、Docker Hub 等开发相关服务的域名，集中到一个规则文件中，路由到稳定性最好的节点。</p><p><strong>内容过滤</strong>：除了使用公共的广告拦截规则，你可以创建自己的屏蔽列表，把不想看到的域名加入其中，使用 REJECT 策略。</p><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="Q-rule-provider-下载失败怎么办？"><a href="#Q-rule-provider-下载失败怎么办？" class="headerlink" title="Q: rule-provider 下载失败怎么办？"></a>Q: rule-provider 下载失败怎么办？</h3><p>这是最常见的”先有鸡还是先有蛋”问题：你需要代理才能下载规则文件，但规则文件还没下载完成时代理无法正常工作。</p><p><strong>解决方法</strong>：</p><ol><li><strong>使用 CDN 地址</strong>：jsdelivr（<code>cdn.jsdelivr.net</code>）、ghproxy（<code>ghproxy.com</code>）等 CDN 在国内通常可以直接访问，避免直接访问 GitHub raw 域名。</li><li><strong>手动下载</strong>：先通过其他方式（比如已经能翻墙的手机）下载规则文件，放到 <code>path</code> 指定的本地路径，并将 <code>type</code> 改为 <code>file</code>。</li><li><strong>初始启动配置</strong>：第一次使用时，先用一个精简的配置（不包含 rule-provider，只有几条基本规则）连上代理，然后再切换到包含 rule-provider 的完整配置。</li><li><strong>机场提供的配置</strong>：很多机场的订阅链接已经内置了 rule-provider 配置，且使用可达的 CDN 地址，直接导入即可。</li></ol><h3 id="Q-规则集多久更新一次合适？"><a href="#Q-规则集多久更新一次合适？" class="headerlink" title="Q: 规则集多久更新一次合适？"></a>Q: 规则集多久更新一次合适？</h3><p>取决于规则集的类型：</p><ul><li><strong>广告拦截规则</strong>（reject）：建议 12 小时（<code>43200</code> 秒）。广告域名变化较快，更频繁的更新可以保持更好的拦截效果。</li><li><strong>常规分流规则</strong>（direct、proxy、gfw 等）：24 小时（<code>86400</code> 秒）足够。这类规则的变化频率较低。</li><li><strong>IP 段规则</strong>（cncidr、telegramcidr 等）：24-72 小时都可以。IP 段的分配变化很慢。</li><li><strong>自定义规则</strong>（本地文件）：设为 <code>0</code> 即可，由你手动维护。</li></ul><p>不建议将 interval 设得过小（比如每小时更新一次）。频繁下载不仅浪费带宽，还可能触发 CDN 的速率限制，导致下载失败。</p><h3 id="Q-domain-和-classical-behavior-选哪个？"><a href="#Q-domain-和-classical-behavior-选哪个？" class="headerlink" title="Q: domain 和 classical behavior 选哪个？"></a>Q: domain 和 classical behavior 选哪个？</h3><p><strong>优先用 domain 或 ipcidr</strong>，原因是：</p><ol><li><strong>解析速度更快</strong>：domain 和 ipcidr behavior 的规则文件格式简单，Clash 可以将它们高效地加载到内存中的哈希表或前缀树结构中，查询复杂度接近 O(1)。而 classical behavior 包含多种规则类型，需要逐条线性匹配，效率较低。</li><li><strong>文件更小</strong>：domain 文件每行只有一个域名，不需要 <code>DOMAIN-SUFFIX,</code> 前缀，文件体积更小，下载更快。</li><li><strong>不容易出错</strong>：格式简单意味着手动编辑时不容易写错。</li></ol><p><strong>必须用 classical 的场景</strong>：规则文件中混合了不同类型的规则（域名 + IP + 关键字），或者规则来源只提供 classical 格式。ACL4SSR 项目的部分规则文件就是 classical 格式。</p><h3 id="Q-规则集之间冲突了怎么办？"><a href="#Q-规则集之间冲突了怎么办？" class="headerlink" title="Q: 规则集之间冲突了怎么办？"></a>Q: 规则集之间冲突了怎么办？</h3><p>规则冲突的本质是：同一个域名或 IP 出现在多个 rule-provider 的规则列表中，而这些 rule-provider 对应不同的策略组。</p><p>Clash 的处理方式是 <strong>先匹配先生效</strong>（first match wins）。<code>rules</code> 段中排在前面的 <code>RULE-SET</code> 优先级更高。</p><p><strong>典型冲突场景和解决方法</strong>：</p><ul><li><code>youtube.com</code> 同时出现在 <code>google.txt</code> 和 <code>proxy.txt</code> 中。如果你在 <code>rules</code> 里先写了 <code>RULE-SET,google,Proxy</code>，再写 <code>RULE-SET,proxy-domain,Proxy</code>，YouTube 会命中 Google 的规则。两者策略相同时没有实际影响；如果策略不同，调整 <code>rules</code> 中的顺序即可。</li><li>Netflix 域名同时出现在 <code>netflix</code> 规则集和通用 <code>proxy-domain</code> 规则集中。把 <code>RULE-SET,netflix,Streaming</code> 放在 <code>RULE-SET,proxy-domain,Proxy</code> 前面，Netflix 就会走 Streaming 组而非通用 Proxy 组。</li></ul><p><strong>排查方法</strong>：在 Clash 的日志或连接面板中查看特定域名命中了哪条规则。<a href="https://github.com/clash-verge-rev/clash-verge-rev">Clash Verge Rev</a> 的”连接”页面会显示每个连接匹配的规则名称和策略组，方便排查冲突。更多配置细节可以参考 <a href="https://wiki.metacubex.one/">Clash Wiki</a>。</p><h3 id="Q-使用-MRS-格式有什么注意事项？"><a href="#Q-使用-MRS-格式有什么注意事项？" class="headerlink" title="Q: 使用 MRS 格式有什么注意事项？"></a>Q: 使用 MRS 格式有什么注意事项？</h3><p>MRS（Meta Rule Set）是 mihomo 引入的二进制规则格式，加载速度最快，但有以下限制：</p><ul><li>只有 mihomo 内核支持，原版 Clash Premium 和其他内核无法使用。</li><li>无法直接用文本编辑器查看或编辑文件内容。</li><li>需要使用 mihomo 提供的工具将文本规则编译为 MRS 格式。</li></ul><p>如果你使用的客户端基于 mihomo 内核（Clash Verge Rev、Clash Nyanpasu 等），且规则集数量较多、总条目数达到数万条级别，切换到 MRS 格式可以显著减少启动时的规则加载时间。对于规则条目较少的情况，text 格式已经足够快，差异可以忽略。</p><h3 id="Q-能同时使用-GEOSITE-GEOIP-和-rule-provider-吗？"><a href="#Q-能同时使用-GEOSITE-GEOIP-和-rule-provider-吗？" class="headerlink" title="Q: 能同时使用 GEOSITE&#x2F;GEOIP 和 rule-provider 吗？"></a>Q: 能同时使用 GEOSITE&#x2F;GEOIP 和 rule-provider 吗？</h3><p>可以，两者并不冲突。<code>GEOSITE</code> 和 <code>GEOIP</code> 是 Clash 内置的规则类型，使用预编译的数据库进行匹配；<code>RULE-SET</code> 则引用外部的 rule-provider 文件。</p><p>实际配置中，常见的搭配方式是：用 rule-provider 处理需要精细控制的服务（Netflix、Telegram、AI 等），用 <code>GEOIP,CN,DIRECT</code> 作为中国 IP 的兜底规则。两者各司其职，互相补充。</p>]]>
    </content>
    <id>https://blog.e.show/posts/clash-rule-providers/</id>
    <link href="https://blog.e.show/posts/clash-rule-providers/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>rule-provider 允许从外部加载和自动更新规则列表。详解工作原理、配置方法和常用规则集推荐。</summary>
    <title>Clash 规则集详解：rule-provider 是什么、怎么用</title>
    <updated>2026-05-09T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="代理软件" scheme="https://blog.e.show/categories/%E4%BB%A3%E7%90%86%E8%BD%AF%E4%BB%B6/"/>
    <category term="V2Ray" scheme="https://blog.e.show/tags/V2Ray/"/>
    <category term="Xray" scheme="https://blog.e.show/tags/Xray/"/>
    <category term="Sing-box" scheme="https://blog.e.show/tags/Sing-box/"/>
    <category term="内核" scheme="https://blog.e.show/tags/%E5%86%85%E6%A0%B8/"/>
    <category term="对比" scheme="https://blog.e.show/tags/%E5%AF%B9%E6%AF%94/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>: V2Ray、Xray、Sing-box 是当前最主流的三个代理内核。它们之间存在继承和分化关系——Xray 从 V2Ray 分裂而来，Sing-box 则是受其启发后从零构建的新生代。本文梳理它们的历史渊源、技术架构差异和各自的适用场景，帮助你理解”内核”这一层在整个代理体系中扮演的角色。</p></blockquote><hr><h2 id="什么是”代理内核”"><a href="#什么是”代理内核”" class="headerlink" title="什么是”代理内核”"></a>什么是”代理内核”</h2><p>在讨论 V2Ray、Xray、Sing-box 之前，有必要澄清一个基础概念：<strong>内核（core）是代理软件的底层引擎</strong>，负责协议解析、流量路由、加解密等核心功能。你在手机或电脑上使用的 v2rayN、NekoBox、Clash Verge 等工具，它们本身只是图形界面（GUI），真正干活的是背后集成的内核。</p><p>换句话说，选择客户端时你其实在间接选择内核。理解内核之间的差异，有助于判断一个客户端的协议支持范围、性能上限和未来的可持续性。</p><hr><h2 id="一段简短的历史"><a href="#一段简短的历史" class="headerlink" title="一段简短的历史"></a>一段简短的历史</h2><h3 id="V2Ray-的诞生"><a href="#V2Ray-的诞生" class="headerlink" title="V2Ray 的诞生"></a>V2Ray 的诞生</h3><p>V2Ray 项目诞生于 2015-2016 年前后，创建者使用化名”Victoria Raymond”（V2Ray 之名即源于此）。项目的初始目标并非发明某个单一协议，而是构建一个<strong>通用的代理平台</strong>——一个可以承载多种协议的框架。</p><p>V2Ray 引入了 VMess 协议，这是它的原生协议，采用 UUID 认证和自定义加密方案。在当时的环境下，VMess 相比传统的 SOCKS&#x2F;HTTP 代理和早期 Shadowsocks 提供了更强的安全性保障。V2Ray 还设计了灵活的路由系统、多种传输方式（WebSocket、gRPC、HTTP&#x2F;2 等），这些架构理念深刻影响了后来的所有代理项目。</p><p>2019 年左右，Victoria Raymond 逐步淡出项目。此后，V2Ray 由社区组织 <strong>V2Fly</strong> 接手维护，仓库名为 <code>v2fly/v2ray-core</code>。<a href="https://www.v2fly.org/">V2Fly</a> 团队在维护期间保持了项目的基本稳定，但开发节奏明显放缓，新功能的推进速度远不及审查技术的演进速度。</p><h3 id="Xray-的分裂"><a href="#Xray-的分裂" class="headerlink" title="Xray 的分裂"></a>Xray 的分裂</h3><p>2020 年末，开发者 <strong>RPRX</strong> 围绕 XTLS 技术与 V2Fly 团队产生了许可证分歧。XTLS 是一项重要的性能优化技术，能够在 TLS 代理场景下避免对 TLS 内层数据的重复加密，显著降低延迟和 CPU 开销。这一分歧最终导致 RPRX fork 了 v2ray-core，创建了 <strong><a href="https://github.com/XTLS/Xray-core">Xray-core</a></strong>（隶属 Project X 组织）。</p><p>Xray 并非简单的换皮分支。它在 V2Ray 的基础上带来了一系列关键技术突破：</p><ul><li><strong>VLESS 协议</strong>：比 VMess 更轻量的协议设计，去掉了 VMess 冗余的加密层（依赖外层 TLS 提供安全性），降低了协议头部开销</li><li><strong>XTLS（Vision）</strong>：避免 TLS-in-TLS 的双重加密问题，在保持安全性的前提下大幅提升转发性能</li><li><strong>Reality</strong>：2023 年推出的反检测技术，无需域名和证书即可实现 TLS 伪装，将代理流量伪装成访问真实网站的 TLS 1.3 连接，是目前抗主动探测能力最强的方案之一</li><li><strong>XHTTP 和 XMUX</strong>：基于 HTTP 的新传输方式及其多路复用扩展，为 CDN 中转等场景提供更灵活的选择</li></ul><p>截至 2026 年，Xray-core 的开发活跃度远超 v2ray-core，是协议创新的主要推动力量。在服务端部署领域，Xray 占据绝对主导地位。</p><h3 id="Sing-box-的崛起"><a href="#Sing-box-的崛起" class="headerlink" title="Sing-box 的崛起"></a>Sing-box 的崛起</h3><p><a href="https://github.com/SagerNet/sing-box">Sing-box</a> 走了一条完全不同的路。它的作者 <strong>nekohasekai</strong>（SagerNet 系列客户端的开发者）没有选择 fork V2Ray 或 Xray，而是从零开始用 Go 语言重新编写了一个全新的代理内核。</p><p>这个决策背后的逻辑是：V2Ray 的代码架构经过多年迭代已经变得臃肿，历史包袱沉重，模块间耦合度高，很难在其基础上做大规模的结构优化。与其在旧地基上修补，不如重新打地基。</p><p>Sing-box 的设计哲学是”<strong>通用代理平台</strong>“——不绑定某个特定协议阵营，而是尽可能广泛地支持各种协议。它同时支持 Xray 生态的 VLESS+Reality 和独立协议如 Hysteria2、TUIC，还提供了类似 Clash 的强大规则路由系统。</p><p>Sing-box 的增长势头很快。截至 2026 年，多个主流客户端（NekoBox、Hiddify、Clash Verge Rev 等）已将 sing-box 作为默认或可选内核。它在移动端（Android&#x2F;iOS）的表现尤为突出，因为其现代化的架构在资源受限的移动设备上有更好的内存管理和电池效率。</p><hr><h2 id="技术对比"><a href="#技术对比" class="headerlink" title="技术对比"></a>技术对比</h2><table><thead><tr><th>特性</th><th>v2ray-core</th><th>xray-core</th><th>sing-box</th></tr></thead><tbody><tr><td>开发语言</td><td>Go</td><td>Go</td><td>Go</td></tr><tr><td>协议支持</td><td>VMess, VLESS, Trojan, Shadowsocks</td><td>VMess, VLESS, Trojan, Shadowsocks, Reality, XTLS, XHTTP</td><td>VMess, VLESS, Trojan, Shadowsocks, Reality, Hysteria2, TUIC</td></tr><tr><td>独有能力</td><td>—</td><td>XTLS Vision, Reality, XHTTP, XMUX</td><td>Hysteria2&#x2F;TUIC 原生支持, 规则集路由</td></tr><tr><td>性能</td><td>中等</td><td>较高（XTLS 优化）</td><td>较高</td></tr><tr><td>配置格式</td><td>JSON</td><td>JSON（兼容 v2ray）</td><td>JSON（独立格式）</td></tr><tr><td>路由功能</td><td>基础规则匹配</td><td>基础规则匹配</td><td>强大（类 Clash 规则集、逻辑运算、规则提供器）</td></tr><tr><td>分流能力</td><td>域名&#x2F;IP 匹配</td><td>域名&#x2F;IP 匹配</td><td>域名&#x2F;IP&#x2F;进程&#x2F;规则集&#x2F;逻辑组合</td></tr><tr><td>维护活跃度</td><td>低（基本停滞）</td><td>高</td><td>高</td></tr><tr><td>文档质量</td><td>一般</td><td>较好</td><td>好</td></tr><tr><td>移动端适配</td><td>一般</td><td>一般</td><td>优秀（原生库支持）</td></tr></tbody></table><p>几个值得注意的要点：</p><ol><li><p><strong>v2ray-core 已基本停止实质性开发</strong>。最近的更新以依赖升级和小修复为主，没有新协议和新功能的推进。选择它等同于选择一个不再演进的平台。</p></li><li><p><strong>Xray 和 Sing-box 在协议覆盖上高度重叠</strong>，但侧重点不同。Xray 更专注于自有协议栈的创新（Reality、XHTTP），Sing-box 更专注于跨协议兼容和路由功能。</p></li><li><p><strong>性能差异在实际使用中通常不是瓶颈</strong>。三个内核在同一协议下的吞吐量差异通常在 5-15% 以内，真正的性能瓶颈几乎总是在网络链路本身——你的线路质量、运营商的国际出口带宽、目标服务器的距离和负载，这些因素的影响远大于内核差异。</p></li></ol><hr><h2 id="配置格式差异"><a href="#配置格式差异" class="headerlink" title="配置格式差异"></a>配置格式差异</h2><p>三个内核都使用 JSON 作为配置文件格式，但结构完全不同。以下用”连接一个 VLESS+Reality 节点”为例，展示各自的出站（outbound）配置方式。</p><h3 id="v2ray-core-xray-core-格式"><a href="#v2ray-core-xray-core-格式" class="headerlink" title="v2ray-core &#x2F; xray-core 格式"></a>v2ray-core &#x2F; xray-core 格式</h3><p>v2ray-core 和 xray-core 共享相同的配置结构（Xray 在此基础上扩展了 Reality 等字段）：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;outbounds&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;protocol&quot;</span><span class="punctuation">:</span> <span class="string">&quot;vless&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;settings&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;vnext&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">          <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;address&quot;</span><span class="punctuation">:</span> <span class="string">&quot;example.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;port&quot;</span><span class="punctuation">:</span> <span class="number">443</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;users&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">              <span class="punctuation">&#123;</span></span><br><span class="line">                <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;uuid-here&quot;</span><span class="punctuation">,</span></span><br><span class="line">                <span class="attr">&quot;encryption&quot;</span><span class="punctuation">:</span> <span class="string">&quot;none&quot;</span><span class="punctuation">,</span></span><br><span class="line">                <span class="attr">&quot;flow&quot;</span><span class="punctuation">:</span> <span class="string">&quot;xtls-rprx-vision&quot;</span></span><br><span class="line">              <span class="punctuation">&#125;</span></span><br><span class="line">            <span class="punctuation">]</span></span><br><span class="line">          <span class="punctuation">&#125;</span></span><br><span class="line">        <span class="punctuation">]</span></span><br><span class="line">      <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;streamSettings&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;network&quot;</span><span class="punctuation">:</span> <span class="string">&quot;tcp&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;security&quot;</span><span class="punctuation">:</span> <span class="string">&quot;reality&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;realitySettings&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;serverName&quot;</span><span class="punctuation">:</span> <span class="string">&quot;www.microsoft.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;fingerprint&quot;</span><span class="punctuation">:</span> <span class="string">&quot;chrome&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;shortId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;abcd1234&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;publicKey&quot;</span><span class="punctuation">:</span> <span class="string">&quot;public-key-here&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>配置的核心逻辑是：<code>protocol</code> 指定协议类型，<code>settings</code> 定义服务器和用户信息，<code>streamSettings</code> 定义传输层和安全层参数。这种嵌套结构沿用了 V2Ray 早期的设计。</p><h3 id="sing-box-格式"><a href="#sing-box-格式" class="headerlink" title="sing-box 格式"></a>sing-box 格式</h3><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;outbounds&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;vless&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;tag&quot;</span><span class="punctuation">:</span> <span class="string">&quot;proxy&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;server&quot;</span><span class="punctuation">:</span> <span class="string">&quot;example.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;server_port&quot;</span><span class="punctuation">:</span> <span class="number">443</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;uuid&quot;</span><span class="punctuation">:</span> <span class="string">&quot;uuid-here&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;flow&quot;</span><span class="punctuation">:</span> <span class="string">&quot;xtls-rprx-vision&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;tls&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;enabled&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;server_name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;www.microsoft.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;utls&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;enabled&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;fingerprint&quot;</span><span class="punctuation">:</span> <span class="string">&quot;chrome&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;reality&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">          <span class="attr">&quot;enabled&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;public_key&quot;</span><span class="punctuation">:</span> <span class="string">&quot;public-key-here&quot;</span><span class="punctuation">,</span></span><br><span class="line">          <span class="attr">&quot;short_id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;abcd1234&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>Sing-box 的配置结构更加扁平化：服务器地址、端口、UUID 直接作为出站对象的顶层字段，没有 v2ray 那种 <code>vnext &gt; users</code> 的多层嵌套。TLS 和 Reality 参数统一归入 <code>tls</code> 对象。整体可读性更好，编写出错的概率更低。</p><h3 id="关键区别总结"><a href="#关键区别总结" class="headerlink" title="关键区别总结"></a>关键区别总结</h3><ul><li><strong>v2ray&#x2F;xray</strong>：配置层级深（protocol &gt; settings &gt; vnext &gt; users），传输层参数独立在 <code>streamSettings</code> 中，历史兼容性好但结构冗余</li><li><strong>sing-box</strong>：配置扁平化，字段命名使用 snake_case 而非 camelCase，TLS&#x2F;传输参数整合在出站对象内部，语义更清晰</li></ul><p>对于普通用户来说，这些差异很少需要手动处理——现代客户端通过分享链接（URI）或订阅自动生成配置。但如果你需要手写或调试配置，sing-box 的格式显然对人类更友好。</p><hr><h2 id="我应该选哪个"><a href="#我应该选哪个" class="headerlink" title="我应该选哪个"></a>我应该选哪个</h2><h3 id="v2ray-core：已不推荐"><a href="#v2ray-core：已不推荐" class="headerlink" title="v2ray-core：已不推荐"></a>v2ray-core：已不推荐</h3><p>2026 年，基本没有选择 v2ray-core 的理由。它不支持 Reality、XTLS Vision、XHTTP 等现代协议特性，维护处于半停滞状态，安全更新也不及时。唯一合理的使用场景是你正在维护一个遗留系统，且迁移成本过高。</p><p>如果你还在使用基于 v2ray-core 的部署，强烈建议迁移到 Xray 或 Sing-box。Xray 的迁移路径最简单，因为它兼容 v2ray 的配置格式。</p><h3 id="xray-core：协议创新的前沿"><a href="#xray-core：协议创新的前沿" class="headerlink" title="xray-core：协议创新的前沿"></a>xray-core：协议创新的前沿</h3><p>选择 Xray 的理由：</p><ul><li>你需要 <strong>Reality</strong> 的完整实现和最新特性（Xray 是 Reality 的原生发源地）</li><li>你需要 <strong>XHTTP&#x2F;XMUX</strong> 传输方式来实现 CDN 中转等高级部署</li><li>你使用 <strong>v2rayN</strong>（Windows）、<strong>V2RayNG</strong>（Android）等以 Xray 为默认内核的客户端</li><li>你在<strong>服务端部署</strong>中需要最完整的协议选项</li><li>你已有 v2ray 格式的配置，希望无缝升级</li></ul><p>Xray 是目前服务端部署最成熟的选择，社区经验积累最丰富，配置教程和问题排查资源最多。</p><h3 id="sing-box：现代化的全能选手"><a href="#sing-box：现代化的全能选手" class="headerlink" title="sing-box：现代化的全能选手"></a>sing-box：现代化的全能选手</h3><p>选择 Sing-box 的理由：</p><ul><li>你想要<strong>强大的路由和分流功能</strong>（按域名、IP、进程、规则集灵活分流）</li><li>你使用 <strong>NekoBox</strong>、<strong>Hiddify</strong>、<strong>Clash Verge Rev</strong> 等以 sing-box 为内核的客户端</li><li>你需要在<strong>移动端</strong>获得更好的性能和电池表现</li><li>你需要 <strong>Hysteria2</strong> 或 <strong>TUIC</strong> 等基于 QUIC 的协议（sing-box 原生支持，Xray 不支持）</li><li>你希望配置文件更易读、更现代化</li></ul><h3 id="一个重要提醒"><a href="#一个重要提醒" class="headerlink" title="一个重要提醒"></a>一个重要提醒</h3><p><strong>大多数用户不需要直接选择内核。</strong> 你选择的是客户端，内核是客户端内置的。v2rayN 内置 Xray，NekoBox 内置 Sing-box，Clash Verge Rev 使用 Mihomo（另一个内核）——你只需要选一个好用的客户端，内核的事交给客户端开发者去处理。</p><p>只有当你需要在服务端部署代理服务、手动编写配置、或在客户端之间做深度技术对比时，理解内核差异才真正重要。</p><hr><h2 id="它们之间的关系图"><a href="#它们之间的关系图" class="headerlink" title="它们之间的关系图"></a>它们之间的关系图</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">v2ray-core (2015)</span><br><span class="line">    │</span><br><span class="line">    ├──fork──→ xray-core (2020)</span><br><span class="line">    │            ├── VLESS 协议优化</span><br><span class="line">    │            ├── XTLS Vision 性能加速</span><br><span class="line">    │            ├── Reality 反检测 (2023)</span><br><span class="line">    │            └── XHTTP / XMUX 传输方式</span><br><span class="line">    │</span><br><span class="line">    └──inspired──→ sing-box (2022)</span><br><span class="line">                    ├── 全新代码库，零历史包袱</span><br><span class="line">                    ├── 多协议兼容（含 Hysteria2、TUIC）</span><br><span class="line">                    └── 类 Clash 规则路由系统</span><br></pre></td></tr></table></figure><p>Xray 和 V2Ray 之间是代码级的继承关系（fork），配置格式保持兼容。Sing-box 和 V2Ray 之间是理念上的继承关系（inspired），代码和配置完全独立。</p><p>三者之间并非零和竞争。Xray 的协议创新（如 Reality）被 sing-box 跟进支持，sing-box 的路由设计也在影响其他项目的发展方向。这种良性的技术竞争推动了整个代理生态的进步。</p><hr><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="三者可以互相替换吗？"><a href="#三者可以互相替换吗？" class="headerlink" title="三者可以互相替换吗？"></a>三者可以互相替换吗？</h3><p>大部分场景下可以。如果你的服务端使用标准协议（比如 VLESS+Reality+Vision），无论客户端使用 Xray 还是 Sing-box 都能正常连接——协议是通用的，内核只是协议的不同实现。</p><p>差异出现在高级功能上：Xray 的 XHTTP&#x2F;XMUX 传输方式目前只有 Xray 客户端完整支持；sing-box 的 Hysteria2&#x2F;TUIC 协议 Xray 不支持。选择内核时需要确认你使用的协议和传输方式是否在目标内核的支持范围内。</p><h3 id="哪个性能最好？"><a href="#哪个性能最好？" class="headerlink" title="哪个性能最好？"></a>哪个性能最好？</h3><p>实际差异很小。Xray 的 XTLS Vision 在代理 TLS 流量时有理论优势，因为它避免了内层 TLS 数据的重复加密&#x2F;解密，CPU 开销更低。但在真实使用中，网络延迟、丢包率、带宽限制通常远大于内核层面的性能差异。对绝大多数用户来说，三个内核的性能表现在体感上没有区别。</p><p>如果你的场景对 CPU 开销极度敏感（比如在低性能 ARM 设备上跑高带宽代理），XTLS Vision 的优势会更明显。</p><h3 id="Sing-box-会取代-Xray-吗？"><a href="#Sing-box-会取代-Xray-吗？" class="headerlink" title="Sing-box 会取代 Xray 吗？"></a>Sing-box 会取代 Xray 吗？</h3><p>短期内不会，中长期两者更可能持续共存。原因是它们的定位有本质差异：</p><ul><li><strong>Xray</strong> 的核心竞争力在于<strong>协议创新</strong>——Reality、XHTTP 等技术都诞生于 Xray 社区。它更像是代理协议的”研发实验室”。</li><li><strong>Sing-box</strong> 的核心竞争力在于<strong>平台统一性</strong>——用一个内核覆盖尽可能多的协议和平台，提供一致的配置体验和路由功能。它更像是代理协议的”集成平台”。</li></ul><p>两者在生态位上互补而非对立。</p><h3 id="我在用-Clash，和这三个内核是什么关系？"><a href="#我在用-Clash，和这三个内核是什么关系？" class="headerlink" title="我在用 Clash，和这三个内核是什么关系？"></a>我在用 Clash，和这三个内核是什么关系？</h3><p>Clash（包括 Clash Meta &#x2F; Mihomo）是一个独立的内核体系，有自己的配置格式和协议实现。它和 V2Ray&#x2F;Xray&#x2F;Sing-box 是平行关系，不存在继承或依赖关系。不过，Clash 也支持 VMess、VLESS、Trojan 等协议——这些协议是通用标准，任何内核都可以独立实现。</p><p>值得注意的是，原版 Clash 已经停止维护。目前活跃的 <strong><a href="https://github.com/MetaCubeX/mihomo">mihomo</a></strong>（原 Clash Meta）和 <strong>Clash Verge Rev</strong> 等项目在继续推进 Clash 生态的发展。部分 Clash 衍生客户端（如 Clash Verge Rev 的某些版本）也开始支持使用 sing-box 作为可选内核。</p><hr><h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h2><p>V2Ray 开创了”通用代理平台”的理念，Xray 在此基础上推动了协议层面的重大突破，Sing-box 则以全新的工程实践重新诠释了这一理念。三者的关系是技术演进的自然脉络，而非简单的优劣之分。</p><p>对于普通用户，选一个好用的客户端，确保它支持你需要的协议，就足够了。内核的选择通常已经被客户端开发者做好了。</p><p>对于进阶用户和服务端运维者，理解这三个内核的差异有助于做出更合理的技术决策——比如服务端用 Xray 获得最完整的协议支持，客户端侧选择 sing-box 系客户端获得更好的路由和分流能力。</p><p>代理技术仍在快速迭代。本文反映的是 2026 年中的状态，半年后具体的功能对比可能已经发生变化。但核心逻辑不会变：<strong>理解工具的设计思路，比记住工具的功能列表更重要。</strong></p>]]>
    </content>
    <id>https://blog.e.show/posts/core-comparison/</id>
    <link href="https://blog.e.show/posts/core-comparison/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>V2Ray、Xray、Sing-box 三个代理内核的历史渊源、技术差异和各自适用场景。</summary>
    <title>V2Ray vs Xray vs Sing-box：核心（内核）的区别与演进</title>
    <updated>2026-05-09T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="排障手册" scheme="https://blog.e.show/categories/%E6%8E%92%E9%9A%9C%E6%89%8B%E5%86%8C/"/>
    <category term="排障" scheme="https://blog.e.show/tags/%E6%8E%92%E9%9A%9C/"/>
    <category term="连接" scheme="https://blog.e.show/tags/%E8%BF%9E%E6%8E%A5/"/>
    <category term="节点" scheme="https://blog.e.show/tags/%E8%8A%82%E7%82%B9/"/>
    <category term="诊断" scheme="https://blog.e.show/tags/%E8%AF%8A%E6%96%AD/"/>
    <category term="教程" scheme="https://blog.e.show/tags/%E6%95%99%E7%A8%8B/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>: 代理节点突然连不上是最常遇到的问题。原因可能是节点被封、本地网络问题、配置错误或客户端故障。本文提供一套系统化的排查流程，帮助你快速定位问题并解决。</p></blockquote><hr><h2 id="第一步：确认问题范围"><a href="#第一步：确认问题范围" class="headerlink" title="第一步：确认问题范围"></a>第一步：确认问题范围</h2><p>排查之前，先花一分钟判断问题的范围，避免盲目操作浪费时间。</p><h3 id="是所有节点还是部分节点？"><a href="#是所有节点还是部分节点？" class="headerlink" title="是所有节点还是部分节点？"></a>是所有节点还是部分节点？</h3><ul><li><strong>所有节点都连不上</strong> → 大概率是本地网络问题或客户端问题</li><li><strong>只有部分节点连不上</strong> → 这些节点可能已经被封或宕机</li><li><strong>只有某个地区的节点不行</strong>（如香港全挂但日本正常）→ 该地区线路可能被针对性封锁</li></ul><h3 id="之前能用吗？发生了什么变化？"><a href="#之前能用吗？发生了什么变化？" class="headerlink" title="之前能用吗？发生了什么变化？"></a>之前能用吗？发生了什么变化？</h3><ul><li><strong>之前正常，突然不行</strong> → 节点可能被封，或者本地网络环境变了（换了 WiFi、连了公司网络等）</li><li><strong>从来没成功过</strong> → 大概率是配置问题，从头检查配置</li><li><strong>更新客户端后不行了</strong> → 新版本可能有兼容性问题，尝试回退版本</li></ul><h3 id="其他用户是否受影响？"><a href="#其他用户是否受影响？" class="headerlink" title="其他用户是否受影响？"></a>其他用户是否受影响？</h3><ul><li>查看机场的 Telegram 群组或状态页面</li><li>如果大家都反映有问题 → 服务端问题，等待机场修复</li><li>如果只有你一个人有问题 → 本地问题，继续排查</li></ul><hr><h2 id="第二步：检查本地网络"><a href="#第二步：检查本地网络" class="headerlink" title="第二步：检查本地网络"></a>第二步：检查本地网络</h2><h3 id="基础连通性测试"><a href="#基础连通性测试" class="headerlink" title="基础连通性测试"></a>基础连通性测试</h3><p>首先确认你的基础网络是通的（不经过代理）：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 测试国内网站连通性</span></span><br><span class="line">ping baidu.com</span><br><span class="line"></span><br><span class="line"><span class="comment"># 测试 DNS 解析是否正常</span></span><br><span class="line">nslookup baidu.com</span><br></pre></td></tr></table></figure><p>如果 <code>ping baidu.com</code> 都不通，说明你的基础网络就有问题，先解决本地上网问题再说。</p><h3 id="防火墙和安全软件"><a href="#防火墙和安全软件" class="headerlink" title="防火墙和安全软件"></a>防火墙和安全软件</h3><p>防火墙和杀毒软件是导致代理客户端无法正常工作的常见原因：</p><ul><li><strong>Windows Defender &#x2F; 第三方杀毒软件</strong>：可能把代理客户端识别为可疑程序并拦截</li><li><strong>Windows 防火墙</strong>：可能阻止代理客户端监听的端口</li></ul><p><strong>排查方法</strong>：</p><ol><li>临时关闭防火墙和杀毒软件</li><li>重新测试代理是否正常</li><li>如果关闭后正常 → 将代理客户端添加到防火墙和杀毒软件的白名单&#x2F;例外列表中</li><li>重新开启防火墙和杀毒软件，确认白名单生效</li></ol><h3 id="网络环境限制"><a href="#网络环境限制" class="headerlink" title="网络环境限制"></a>网络环境限制</h3><p>某些网络环境会主动限制代理流量：</p><ul><li><strong>公司&#x2F;学校网络</strong>：通常有防火墙策略，会封锁非标准端口和协议</li><li><strong>公共 WiFi</strong>：酒店、咖啡厅的 WiFi 往往限制较多</li><li><strong>运营商限制</strong>：部分地区的运营商会对特定协议做 QoS 限速</li></ul><p><strong>排查方法</strong>：</p><ol><li>切换到手机移动数据（4G&#x2F;5G）热点测试</li><li>如果移动数据下正常 → 确认是当前网络环境的限制</li><li>尝试切换到 443 端口的节点（443 是 HTTPS 端口，通常不会被封）</li><li>尝试使用支持 UDP 的协议（如 Hysteria2），有些网络只封 TCP 不封 UDP</li></ol><hr><h2 id="第三步：检查客户端"><a href="#第三步：检查客户端" class="headerlink" title="第三步：检查客户端"></a>第三步：检查客户端</h2><h3 id="客户端是否正常运行"><a href="#客户端是否正常运行" class="headerlink" title="客户端是否正常运行"></a>客户端是否正常运行</h3><p>最基本的检查，但很多人会忽略：</p><ul><li><strong>客户端进程是否在运行？</strong> 检查系统托盘（Windows 右下角）是否有客户端图标</li><li><strong>代理模式是否开启？</strong> 确认已开启系统代理或 TUN 模式</li><li><strong>尝试重启客户端</strong>：关闭后等待几秒再重新启动</li></ul><h3 id="订阅是否过期或需要更新"><a href="#订阅是否过期或需要更新" class="headerlink" title="订阅是否过期或需要更新"></a>订阅是否过期或需要更新</h3><p>订阅问题是最常见的原因之一：</p><ul><li><strong>订阅到期</strong>：套餐到期后节点自然无法连接，检查机场账户的到期时间</li><li><strong>流量用完</strong>：月流量耗尽同样无法使用，查看剩余流量</li><li><strong>订阅未更新</strong>：机场更换或新增了节点，但你的本地订阅还是旧的</li></ul><p><strong>操作方法</strong>：</p><ol><li>在客户端中找到订阅管理</li><li>手动更新订阅（Clash Verge：右键订阅 → 更新；<a href="https://github.com/2dust/v2rayN">v2rayN</a>：订阅 → 更新全部）</li><li>如果更新失败 → 尝试在浏览器中直接打开订阅链接，看是否能访问</li><li>如果订阅链接打不开 → 登录机场面板检查是否更换了订阅地址</li></ol><h3 id="端口冲突"><a href="#端口冲突" class="headerlink" title="端口冲突"></a>端口冲突</h3><p>代理客户端需要监听本地端口（常见的有 7890、7891、1080 等），如果端口被其他程序占用就会启动失败。</p><p><strong>检查方法</strong>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Windows - 检查端口占用</span></span><br><span class="line">netstat -ano | findstr 7890</span><br><span class="line"></span><br><span class="line"><span class="comment"># macOS / Linux - 检查端口占用</span></span><br><span class="line">lsof -i :7890</span><br></pre></td></tr></table></figure><p>如果发现端口被占用：</p><ul><li>关闭占用端口的程序</li><li>或者在代理客户端的设置中更改本地监听端口</li></ul><h3 id="TUN-模式问题"><a href="#TUN-模式问题" class="headerlink" title="TUN 模式问题"></a>TUN 模式问题</h3><p>TUN 模式创建虚拟网卡来接管系统全部流量，功能更强但也更容易出问题：</p><ul><li><strong>需要管理员权限</strong>：客户端必须以管理员身份运行（Windows：右键 → 以管理员身份运行）</li><li><strong>与其他 VPN 冲突</strong>：如果同时安装了其他 VPN 软件或者有残留的虚拟网卡，可能产生冲突</li><li><strong>驱动问题</strong>：TUN 驱动安装不正确或版本不匹配</li></ul><p><strong>排查方法</strong>：</p><ol><li>先切换到<strong>系统代理模式</strong>测试，排除 TUN 特有的问题</li><li>如果系统代理模式正常 → 问题出在 TUN 模式</li><li>检查是否有其他 VPN 软件在运行，关闭它们</li><li>尝试重新安装 TUN 驱动（Clash Verge：设置 → Service Mode → Install）</li></ol><hr><h2 id="第四步：测试节点连通性"><a href="#第四步：测试节点连通性" class="headerlink" title="第四步：测试节点连通性"></a>第四步：测试节点连通性</h2><h3 id="TCPing-测试"><a href="#TCPing-测试" class="headerlink" title="TCPing 测试"></a>TCPing 测试</h3><p>TCPing 测试可以判断你的网络到节点服务器的 TCP 连通性：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 方法一：使用客户端内置的测试功能</span></span><br><span class="line"><span class="comment"># Clash Verge → 代理页面 → 点击测速按钮（闪电图标）</span></span><br><span class="line"><span class="comment"># v2rayN → 服务器列表 → 测试真连接延迟</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 方法二：命令行测试</span></span><br><span class="line"><span class="comment"># 需要先安装 tcping 工具</span></span><br><span class="line">tcping your-server-ip 443</span><br></pre></td></tr></table></figure><p><strong>结果判断</strong>：</p><ul><li><strong>超时（timeout）</strong> → 节点不可达，IP 可能被封或服务器宕机</li><li><strong>有延迟数值返回</strong> → 节点可达，问题可能出在其他环节</li><li><strong>延迟极高（&gt; 500ms）</strong> → 线路质量差，可能影响使用体验</li></ul><h3 id="切换节点测试"><a href="#切换节点测试" class="headerlink" title="切换节点测试"></a>切换节点测试</h3><p>不要在一个节点上死磕，多试几个：</p><ul><li>尝试不同地区的节点（香港、日本、新加坡、美国等）</li><li>如果<strong>某个地区全部不行</strong>但其他地区正常 → 该地区线路被封</li><li>如果<strong>所有节点全部不行</strong> → 不太可能所有节点同时被封，重点检查本地问题</li></ul><h3 id="切换协议测试"><a href="#切换协议测试" class="headerlink" title="切换协议测试"></a>切换协议测试</h3><p>如果你的机场提供多种协议的节点，切换协议是非常有效的排查手段：</p><ul><li>VLESS (TCP) 不行 → 尝试 Hysteria2 (UDP)</li><li>Shadowsocks 不行 → 尝试 VLESS + WebSocket</li><li>某个协议不行但另一个正常 → 说明是协议层面的封锁，使用可用的协议即可</li></ul><hr><h2 id="第五步：检查具体错误信息"><a href="#第五步：检查具体错误信息" class="headerlink" title="第五步：检查具体错误信息"></a>第五步：检查具体错误信息</h2><p>客户端日志中的错误信息是最直接的线索。以下是常见错误及其含义：</p><h3 id="connection-refused（连接被拒绝）"><a href="#connection-refused（连接被拒绝）" class="headerlink" title="connection refused（连接被拒绝）"></a>connection refused（连接被拒绝）</h3><ul><li><strong>含义</strong>：TCP 连接到达了服务器，但服务器拒绝了连接</li><li><strong>可能原因</strong>：服务器未运行、端口配置错误、服务器防火墙拦截</li><li><strong>处理</strong>：联系机场客服确认服务器状态；更新订阅获取最新配置</li></ul><h3 id="connection-timeout（连接超时）"><a href="#connection-timeout（连接超时）" class="headerlink" title="connection timeout（连接超时）"></a>connection timeout（连接超时）</h3><ul><li><strong>含义</strong>：TCP 连接请求发出后没有收到任何响应</li><li><strong>可能原因</strong>：IP 被 GFW 封锁、网络路由问题、服务器下线</li><li><strong>处理</strong>：切换到其他节点；切换网络环境（WiFi ↔ 移动数据）；等待机场更换 IP</li></ul><h3 id="TLS-handshake-failed（TLS-握手失败）"><a href="#TLS-handshake-failed（TLS-握手失败）" class="headerlink" title="TLS handshake failed（TLS 握手失败）"></a>TLS handshake failed（TLS 握手失败）</h3><ul><li><strong>含义</strong>：TCP 连接成功但 TLS 加密握手失败</li><li><strong>可能原因</strong>：系统时间不准确、TLS 证书过期、服务端 TLS 配置变更、SNI 被阻断</li><li><strong>处理</strong>：<ol><li>检查系统时间是否准确（TLS 握手对时间敏感，误差超过几分钟就可能失败）</li><li>更新订阅获取最新配置</li><li>如果使用了自定义 SNI，确认 SNI 域名未被封锁</li></ol></li></ul><h3 id="authentication-failed（认证失败）"><a href="#authentication-failed（认证失败）" class="headerlink" title="authentication failed（认证失败）"></a>authentication failed（认证失败）</h3><ul><li><strong>含义</strong>：连接到服务器了，但 UUID&#x2F;密码验证不通过</li><li><strong>可能原因</strong>：订阅配置过期，服务端已更换密钥但你本地还是旧的</li><li><strong>处理</strong>：更新订阅；如果更新后仍然失败，删除旧配置重新导入</li></ul><h3 id="DNS-resolution-failed（DNS-解析失败）"><a href="#DNS-resolution-failed（DNS-解析失败）" class="headerlink" title="DNS resolution failed（DNS 解析失败）"></a>DNS resolution failed（DNS 解析失败）</h3><ul><li><strong>含义</strong>：无法解析代理服务器的域名</li><li><strong>可能原因</strong>：DNS 服务器故障、DNS 被污染、域名过期</li><li><strong>处理</strong>：<ol><li>尝试更换 DNS 服务器（推荐 <code>223.5.5.5</code> 或 <code>119.29.29.29</code>）</li><li>如果知道服务器 IP，尝试直接用 IP 连接</li><li>清除本地 DNS 缓存：<code>ipconfig /flushdns</code>（Windows）</li></ol></li></ul><h3 id="EOF-或-connection-reset（连接重置）"><a href="#EOF-或-connection-reset（连接重置）" class="headerlink" title="EOF 或 connection reset（连接重置）"></a>EOF 或 connection reset（连接重置）</h3><ul><li><strong>含义</strong>：连接建立后被立即中断</li><li><strong>可能原因</strong>：GFW 发送 RST 包主动中断连接、协议特征被识别、服务端防火墙规则</li><li><strong>处理</strong>：<ol><li>切换协议（从 VMess 换到 VLESS，或使用 Hysteria2 等基于 UDP 的协议）</li><li>更换端口（尝试 443、8443、2053 等）</li><li>如果可用，启用 WebSocket 或 gRPC 传输层</li></ol></li></ul><hr><h2 id="第六步：高级排查"><a href="#第六步：高级排查" class="headerlink" title="第六步：高级排查"></a>第六步：高级排查</h2><p>如果前五步都没有解决问题，可以用以下方法做更深入的分析。</p><h3 id="抓包分析"><a href="#抓包分析" class="headerlink" title="抓包分析"></a>抓包分析</h3><p>使用 <a href="https://www.wireshark.org/">Wireshark</a> 抓包可以精确判断连接在哪个环节出了问题：</p><ol><li>打开 Wireshark，选择你的网络接口</li><li>设置过滤器：<code>ip.addr == 你的服务器IP</code></li><li>尝试连接代理，观察抓包结果</li></ol><p><strong>判断方法</strong>：</p><ul><li><strong>只有 SYN 包，没有 SYN-ACK</strong> → IP 被完全封锁，数据包被丢弃</li><li><strong>SYN-ACK 正常但之后收到 RST</strong> → 存在主动探测或 DPI（深度包检测）识别</li><li><strong>TLS 握手阶段失败</strong> → 可能是 SNI 被阻断或 TLS 指纹被识别</li><li><strong>握手完成但数据传输中断</strong> → 协议层面被识别，流量被中断</li></ul><h3 id="路由追踪"><a href="#路由追踪" class="headerlink" title="路由追踪"></a>路由追踪</h3><p>路由追踪可以帮助你了解数据包到服务器的路径，以及在哪一跳出了问题：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Windows</span></span><br><span class="line">tracert your-server-ip</span><br><span class="line"></span><br><span class="line"><span class="comment"># macOS / Linux</span></span><br><span class="line">traceroute your-server-ip</span><br><span class="line"></span><br><span class="line"><span class="comment"># 更好的工具：BestTrace（Windows）或 nexttrace（跨平台）</span></span><br><span class="line"><span class="comment"># 可以显示每一跳的地理位置和 ISP 信息</span></span><br><span class="line">nexttrace your-server-ip</span><br></pre></td></tr></table></figure><p><strong>结果分析</strong>：</p><ul><li>如果路由在某一跳之后全部超时 → 该位置存在封锁（通常是国际出口）</li><li>如果路由能到达服务器但代理仍然不通 → 服务端问题</li><li>如果路由在本地就超时 → 本地网络或 ISP 问题</li></ul><h3 id="日志分析"><a href="#日志分析" class="headerlink" title="日志分析"></a>日志分析</h3><p>客户端日志是最重要的排查信息来源：</p><p><img src="/images/inline/clash-verge-logs.jpg" alt="Clash Verge Rev 日志界面"><br><em>图片来源：<a href="https://clash.info/">clash.info</a></em></p><ul><li><strong><a href="https://github.com/clash-verge-rev/clash-verge-rev">Clash Verge Rev</a></strong>：设置 → 日志等级调为 Debug → 查看实时日志</li><li><strong>v2rayN</strong>：主界面底部有日志窗口，或点击菜单 → 查看日志</li><li><strong><a href="https://github.com/SagerNet/sing-box">sing-box</a></strong>：检查日志文件或终端输出</li></ul><p><img src="/images/inline/clash-connections.png" alt="Clash Verge 连接日志界面"><br><em>图片来源：<a href="https://zgcvpn.com/">ZGC VPN</a></em></p><p><strong>重点关注</strong>：</p><ul><li>重复出现的错误信息</li><li>连接超时的目标地址和端口</li><li>DNS 解析相关的错误</li><li>TLS 和认证相关的错误</li></ul><hr><h2 id="快速排查清单"><a href="#快速排查清单" class="headerlink" title="快速排查清单"></a>快速排查清单</h2><p>按顺序逐项检查，快速定位问题：</p><ul><li><input disabled="" type="checkbox"> 本地网络正常？（能打开 baidu.com）</li><li><input disabled="" type="checkbox"> 客户端正在运行？代理模式已开启？</li><li><input disabled="" type="checkbox"> 订阅已更新？未过期？流量未用完？</li><li><input disabled="" type="checkbox"> 防火墙&#x2F;杀毒软件没有拦截客户端？</li><li><input disabled="" type="checkbox"> 没有其他 VPN&#x2F;代理软件冲突？</li><li><input disabled="" type="checkbox"> 系统时间准确？（TLS 握手需要准确的系统时间）</li><li><input disabled="" type="checkbox"> 尝试了不同节点？不同地区？</li><li><input disabled="" type="checkbox"> 尝试了不同协议？（VLESS ↔ Hysteria2）</li><li><input disabled="" type="checkbox"> 尝试了不同网络？（WiFi ↔ 移动数据）</li><li><input disabled="" type="checkbox"> 检查了客户端日志的错误信息？</li><li><input disabled="" type="checkbox"> 确认了不是服务商那边的问题？（查 Telegram 群）</li></ul><hr><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="Q：所有节点突然全挂了怎么办？"><a href="#Q：所有节点突然全挂了怎么办？" class="headerlink" title="Q：所有节点突然全挂了怎么办？"></a>Q：所有节点突然全挂了怎么办？</h3><p>先看机场 Telegram 群是否有通知。如果是敏感时期（两会、国庆、重大会议等），可能是临时加强封锁。这种情况通常持续数小时到数天会逐步恢复。如果只有你一个人出问题，重点检查本地网络和客户端配置。特别留意是否刚切换了网络环境（比如从家里到了公司）。</p><h3 id="Q：节点有时能连有时不能？"><a href="#Q：节点有时能连有时不能？" class="headerlink" title="Q：节点有时能连有时不能？"></a>Q：节点有时能连有时不能？</h3><p>间歇性问题通常与网络质量有关：</p><ul><li><strong>丢包</strong>：网络不稳定导致连接时断时续</li><li><strong>路由波动</strong>：国际线路拥堵或路由变更</li><li><strong>晚高峰拥堵</strong>：晚间 8-11 点是上网高峰期，线路质量下降</li></ul><p>尝试以下方法：</p><ol><li>切换到有中转（IPLC&#x2F;IEPL）的线路，稳定性更好</li><li>不同 ISP 测试（电信、联通、移动表现可能不同）</li><li>避开晚高峰时段测试，确认是否为高峰期拥堵</li></ol><h3 id="Q：重装客户端能解决问题吗？"><a href="#Q：重装客户端能解决问题吗？" class="headerlink" title="Q：重装客户端能解决问题吗？"></a>Q：重装客户端能解决问题吗？</h3><p>有时可以，特别是在配置文件损坏、缓存异常的情况下。但操作前请注意：</p><ol><li><strong>备份订阅链接</strong>：重装后需要重新导入</li><li><strong>备份自定义配置</strong>：自定义规则、分流配置等</li><li><strong>大多数问题不需要重装</strong>：重启客户端 + 更新订阅通常就能解决</li></ol><h3 id="Q：怎么判断是-GFW-封的还是服务器挂了？"><a href="#Q：怎么判断是-GFW-封的还是服务器挂了？" class="headerlink" title="Q：怎么判断是 GFW 封的还是服务器挂了？"></a>Q：怎么判断是 GFW 封的还是服务器挂了？</h3><p>可以通过以下方法判断：</p><table><thead><tr><th>现象</th><th>可能原因</th></tr></thead><tbody><tr><td>TCPing 超时，但 ping 能通（ICMP 正常）</td><td>特定端口被封</td></tr><tr><td>ping 也不通，IP 完全不可达</td><td>IP 被封 或 服务器下线</td></tr><tr><td>其他用户正常，只有你不行</td><td>你的本地网络问题</td></tr><tr><td>所有用户都不行</td><td>服务端问题 或 大规模封锁</td></tr><tr><td>换端口后能连</td><td>旧端口被封，IP 暂时安全</td></tr><tr><td>换 IP 也不行，换协议才行</td><td>协议特征被识别</td></tr></tbody></table><h3 id="Q：敏感时期如何保持连接？"><a href="#Q：敏感时期如何保持连接？" class="headerlink" title="Q：敏感时期如何保持连接？"></a>Q：敏感时期如何保持连接？</h3><ul><li>优先使用基于 UDP 的协议（Hysteria2），TCP 封锁更常见</li><li>使用中转线路（IPLC&#x2F;IEPL），不经过 GFW 审查</li><li>多备几个不同机场，鸡蛋不要放在一个篮子里</li><li>提前下载好备用客户端和配置文件</li><li>保存机场面板地址和备用域名</li></ul>]]>
    </content>
    <id>https://blog.e.show/posts/connectivity-checklist/</id>
    <link href="https://blog.e.show/posts/connectivity-checklist/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>代理节点连不上的系统排查流程——从确认问题范围到高级抓包分析，逐步定位问题。</summary>
    <title>节点连不上？系统排查流程</title>
    <updated>2026-05-09T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="规则与分流" scheme="https://blog.e.show/categories/%E8%A7%84%E5%88%99%E4%B8%8E%E5%88%86%E6%B5%81/"/>
    <category term="Clash" scheme="https://blog.e.show/tags/Clash/"/>
    <category term="配置" scheme="https://blog.e.show/tags/%E9%85%8D%E7%BD%AE/"/>
    <category term="自定义规则" scheme="https://blog.e.show/tags/%E8%87%AA%E5%AE%9A%E4%B9%89%E8%A7%84%E5%88%99/"/>
    <category term="分流" scheme="https://blog.e.show/tags/%E5%88%86%E6%B5%81/"/>
    <category term="进阶" scheme="https://blog.e.show/tags/%E8%BF%9B%E9%98%B6/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：机场自带的规则集能满足大多数需求，但总有一些特殊情况——某个网站应该走代理但走了直连，公司内网需要直连，特定游戏需要走特定地区节点。本文教你如何在 Clash（mihomo）中自定义分流规则，覆盖三种主流方式、五个实用场景、完整的调试方法和规则语法速查表。</p></blockquote><h2 id="什么时候需要自定义规则"><a href="#什么时候需要自定义规则" class="headerlink" title="什么时候需要自定义规则"></a>什么时候需要自定义规则</h2><p>机场订阅里自带的规则集和社区公共规则集（如 Loyalsoldier、ACL4SSR）已经覆盖了绝大多数常见网站。但以下场景，你必须自己动手：</p><p><strong>某个网站路由不正确。</strong> 最常见的情况。一个被墙的网站没有出现在任何公共规则集里，导致它匹配到了兜底规则走了直连，打不开。或者反过来——一个国内网站被误判为需要代理，访问变慢了。公共规则集不可能收录互联网上的每一个域名，漏掉的那个恰好就是你需要的。</p><p><strong>公司内网或 VPN 需要绕过代理。</strong> 你在公司网络环境中使用代理，但公司内部的 GitLab、Jira、OA 系统、打印机管理页面等只能在内网访问。这些流量如果走了代理，会直接超时。你需要把公司的域名和 IP 段加入直连规则。</p><p><strong>特定游戏需要走特定地区的节点。</strong> 你玩日服的游戏，需要流量走日本节点以获得最低延迟。或者你玩的游戏服务器在韩国，需要走首尔的节点。通用的”Proxy”策略组不够精确，你需要把游戏的域名和进程指向专门的节点组。</p><p><strong>想屏蔽默认规则没覆盖的广告和追踪器。</strong> 公共的广告拦截规则集更新再勤快，也总有漏网之鱼。某个 App 里弹出的广告域名、某个网站上的追踪脚本，你可以自己加 REJECT 规则来屏蔽。</p><p><strong>特定服务需要走专用节点组。</strong> AI 服务（ChatGPT、Claude）对 IP 地区有要求，流媒体（Netflix、Disney+）需要解锁节点，Telegram 需要稳定的线路。你想让这些服务各走各的最优路径，而不是混在一起。</p><h2 id="自定义的三种方式"><a href="#自定义的三种方式" class="headerlink" title="自定义的三种方式"></a>自定义的三种方式</h2><h3 id="方式一：在配置文件中直接添加规则"><a href="#方式一：在配置文件中直接添加规则" class="headerlink" title="方式一：在配置文件中直接添加规则"></a>方式一：在配置文件中直接添加规则</h3><p>最直接的方法——打开你的 Clash 配置文件（YAML 格式），在 <code>rules:</code> 段中插入自定义规则。</p><p>关键原则：<strong>自定义规则必须放在通用规则和兜底规则之前。</strong> Clash 的规则匹配是从上到下、先到先得的。如果你把自定义规则放在 <code>MATCH,Proxy</code> 后面，它永远不会被匹配到。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">rules:</span></span><br><span class="line">  <span class="comment"># ========== 自定义规则 - 放在最前面 ==========</span></span><br><span class="line">  <span class="comment"># 公司内网直连</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,company-internal.com,DIRECT</span></span><br><span class="line">  <span class="comment"># 特定游戏走日本节点</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,specific-game.com,GameNodes</span></span><br><span class="line">  <span class="comment"># 某个网站强制走代理</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN,blocked-site.example.com,Proxy</span></span><br><span class="line">  <span class="comment"># 屏蔽某个广告域名</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,annoying-tracker.com,REJECT</span></span><br><span class="line">  </span><br><span class="line">  <span class="comment"># ========== 以下是默认规则集 ==========</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,reject,REJECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,direct,DIRECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,proxy,Proxy</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">GEOIP,CN,DIRECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">MATCH,Proxy</span></span><br></pre></td></tr></table></figure><p><strong>优点</strong>：简单直观，改完保存就生效。</p><p><strong>缺点</strong>：当你的机场订阅更新时，配置文件会被覆盖，你加的自定义规则会丢失。每次更新订阅后都需要手动重新添加。如果你只有两三条规则还能忍，规则多了就很痛苦。</p><p><strong>适合场景</strong>：临时测试、规则数量极少（1-3 条）、不使用订阅更新的情况。</p><h3 id="方式二：使用-Clash-Verge-Rev-的覆写功能（推荐）"><a href="#方式二：使用-Clash-Verge-Rev-的覆写功能（推荐）" class="headerlink" title="方式二：使用 Clash Verge Rev 的覆写功能（推荐）"></a>方式二：使用 Clash Verge Rev 的覆写功能（推荐）</h3><p><a href="https://github.com/clash-verge-rev/clash-verge-rev">Clash Verge Rev</a> 提供了”覆写”（Override &#x2F; Script）功能，允许你用一段 JavaScript 脚本在订阅配置加载后对其进行修改。这段脚本不会被订阅更新覆盖——它在订阅配置更新之后运行，每次都会把你的自定义规则注入进去。</p><p><strong>操作步骤</strong>：</p><ol><li>打开 Clash Verge Rev</li><li>进入”订阅”页面</li><li>点击你正在使用的订阅配置右侧的编辑图标</li><li>切换到”Script”（脚本）标签页</li><li>输入覆写脚本</li></ol><p><strong>基础覆写脚本</strong>：</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// Clash Verge Rev 覆写脚本</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">main</span>(<span class="params">config</span>) &#123;</span><br><span class="line">  <span class="comment">// 定义自定义规则 - 这些规则会被插入到所有规则的最前面</span></span><br><span class="line">  <span class="keyword">const</span> customRules = [</span><br><span class="line">    <span class="comment">// 公司内网直连</span></span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,company.com,DIRECT&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,internal.corp,DIRECT&quot;</span>,</span><br><span class="line">    <span class="string">&quot;IP-CIDR,10.0.0.0/8,DIRECT,no-resolve&quot;</span>,</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// 特定网站走代理</span></span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,special-site.com,Proxy&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN,blocked-site.example.com,Proxy&quot;</span>,</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// 游戏走特定节点组</span></span><br><span class="line">    <span class="string">&quot;PROCESS-NAME,game.exe,GameNodes&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,game-server.com,GameNodes&quot;</span>,</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// 屏蔽广告</span></span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,ad-tracker.com,REJECT&quot;</span>,</span><br><span class="line">  ];</span><br><span class="line">  </span><br><span class="line">  <span class="comment">// 将自定义规则插入到现有规则的最前面</span></span><br><span class="line">  config.<span class="property">rules</span> = [...customRules, ...config.<span class="property">rules</span>];</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">return</span> config;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><strong>进阶覆写脚本——同时添加策略组和规则</strong>：</p><p>如果你的订阅配置里没有你想用的策略组（比如没有”AI-Services”组），你可以在脚本中同时创建策略组和规则：</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">function</span> <span class="title function_">main</span>(<span class="params">config</span>) &#123;</span><br><span class="line">  <span class="comment">// ---- 1. 添加自定义策略组 ----</span></span><br><span class="line">  <span class="comment">// 从现有的节点中筛选出日本节点，创建一个&quot;Gaming-JP&quot;策略组</span></span><br><span class="line">  <span class="keyword">const</span> allProxies = config.<span class="property">proxies</span>.<span class="title function_">map</span>(<span class="function"><span class="params">p</span> =&gt;</span> p.<span class="property">name</span>);</span><br><span class="line">  <span class="keyword">const</span> jpProxies = allProxies.<span class="title function_">filter</span>(<span class="function"><span class="params">name</span> =&gt;</span> </span><br><span class="line">    name.<span class="title function_">includes</span>(<span class="string">&quot;日本&quot;</span>) || name.<span class="title function_">includes</span>(<span class="string">&quot;JP&quot;</span>) || name.<span class="title function_">includes</span>(<span class="string">&quot;Japan&quot;</span>)</span><br><span class="line">  );</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">if</span> (jpProxies.<span class="property">length</span> &gt; <span class="number">0</span>) &#123;</span><br><span class="line">    config[<span class="string">&quot;proxy-groups&quot;</span>].<span class="title function_">push</span>(&#123;</span><br><span class="line">      <span class="attr">name</span>: <span class="string">&quot;Gaming-JP&quot;</span>,</span><br><span class="line">      <span class="attr">type</span>: <span class="string">&quot;url-test&quot;</span>,</span><br><span class="line">      <span class="attr">proxies</span>: jpProxies,</span><br><span class="line">      <span class="attr">url</span>: <span class="string">&quot;http://www.gstatic.com/generate_204&quot;</span>,</span><br><span class="line">      <span class="attr">interval</span>: <span class="number">300</span>,</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125;</span><br><span class="line">  </span><br><span class="line">  <span class="comment">// 创建一个&quot;AI-Services&quot;策略组</span></span><br><span class="line">  <span class="keyword">const</span> usProxies = allProxies.<span class="title function_">filter</span>(<span class="function"><span class="params">name</span> =&gt;</span></span><br><span class="line">    name.<span class="title function_">includes</span>(<span class="string">&quot;美国&quot;</span>) || name.<span class="title function_">includes</span>(<span class="string">&quot;US&quot;</span>) || name.<span class="title function_">includes</span>(<span class="string">&quot;United States&quot;</span>)</span><br><span class="line">  );</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">if</span> (usProxies.<span class="property">length</span> &gt; <span class="number">0</span>) &#123;</span><br><span class="line">    config[<span class="string">&quot;proxy-groups&quot;</span>].<span class="title function_">push</span>(&#123;</span><br><span class="line">      <span class="attr">name</span>: <span class="string">&quot;AI-Services&quot;</span>,</span><br><span class="line">      <span class="attr">type</span>: <span class="string">&quot;select&quot;</span>,</span><br><span class="line">      <span class="attr">proxies</span>: [...usProxies, <span class="string">&quot;DIRECT&quot;</span>],</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125;</span><br><span class="line">  </span><br><span class="line">  <span class="comment">// ---- 2. 添加自定义规则 ----</span></span><br><span class="line">  <span class="keyword">const</span> customRules = [</span><br><span class="line">    <span class="comment">// AI 服务走专用组</span></span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,openai.com,AI-Services&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,chatgpt.com,AI-Services&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,anthropic.com,AI-Services&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,claude.ai,AI-Services&quot;</span>,</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// 游戏走日本节点</span></span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,riotgames.com,Gaming-JP&quot;</span>,</span><br><span class="line">    <span class="string">&quot;PROCESS-NAME,LeagueClient.exe,Gaming-JP&quot;</span>,</span><br><span class="line">  ];</span><br><span class="line">  </span><br><span class="line">  config.<span class="property">rules</span> = [...customRules, ...config.<span class="property">rules</span>];</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">return</span> config;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><strong>优点</strong>：订阅更新不会覆盖你的自定义规则。脚本逻辑灵活，可以根据现有节点动态创建策略组。一次配置，长期有效。</p><p><strong>缺点</strong>：需要基本的 JavaScript 知识。脚本写错可能导致整个配置加载失败（但不会丢失原始配置，修改脚本即可恢复）。</p><p><strong>适合场景</strong>：长期使用的自定义规则、需要自动创建策略组、使用订阅更新的用户。这是大多数用户的最佳选择。</p><h3 id="方式三：创建自己的-rule-provider-文件"><a href="#方式三：创建自己的-rule-provider-文件" class="headerlink" title="方式三：创建自己的 rule-provider 文件"></a>方式三：创建自己的 rule-provider 文件</h3><p>当你的自定义规则数量较多（几十条甚至上百条），把它们全写在脚本或配置文件里不太方便管理。这时候可以创建独立的规则文件，通过 rule-provider 机制加载。</p><p><strong>创建规则文件</strong>：</p><p>在 Clash 配置目录下创建一个 <code>custom</code> 文件夹，在里面放你的规则文件。</p><p>以域名列表为例，创建 <code>my-direct-domains.txt</code>：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">company.com</span><br><span class="line">internal.corp</span><br><span class="line">oa.mycompany.cn</span><br><span class="line">gitlab.mycompany.com</span><br><span class="line">jira.mycompany.com</span><br><span class="line">vpn.mycompany.com</span><br><span class="line">printer.office.local</span><br></pre></td></tr></table></figure><p>以混合规则为例，创建 <code>my-custom-rules.txt</code>（需要使用 classical behavior）：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">DOMAIN-SUFFIX,company.com</span><br><span class="line">DOMAIN-SUFFIX,internal.corp</span><br><span class="line">IP-CIDR,10.0.0.0/8,no-resolve</span><br><span class="line">IP-CIDR,172.16.0.0/12,no-resolve</span><br><span class="line">IP-CIDR,192.168.0.0/16,no-resolve</span><br><span class="line">PROCESS-NAME,enterprise-vpn.exe</span><br></pre></td></tr></table></figure><p><strong>在配置中引用</strong>：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">rule-providers:</span></span><br><span class="line">  <span class="attr">my-direct-domains:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">file</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">domain</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./custom/my-direct-domains.txt</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">my-custom-rules:</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">file</span></span><br><span class="line">    <span class="attr">behavior:</span> <span class="string">classical</span></span><br><span class="line">    <span class="attr">path:</span> <span class="string">./custom/my-custom-rules.txt</span></span><br><span class="line">    <span class="attr">format:</span> <span class="string">text</span></span><br><span class="line"></span><br><span class="line"><span class="attr">rules:</span></span><br><span class="line">  <span class="comment"># 自定义规则集 - 放在其他 RULE-SET 前面</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,my-direct-domains,DIRECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,my-custom-rules,DIRECT</span></span><br><span class="line">  </span><br><span class="line">  <span class="comment"># 然后是默认规则</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,reject,REJECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,google,Proxy</span></span><br><span class="line">  <span class="comment"># ... 其他规则</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">GEOIP,CN,DIRECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">MATCH,Proxy</span></span><br></pre></td></tr></table></figure><p><strong>如果配合覆写脚本使用</strong>，可以在脚本中动态注入 rule-provider 定义：</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">function</span> <span class="title function_">main</span>(<span class="params">config</span>) &#123;</span><br><span class="line">  <span class="comment">// 添加自定义 rule-provider</span></span><br><span class="line">  <span class="keyword">if</span> (!config[<span class="string">&quot;rule-providers&quot;</span>]) &#123;</span><br><span class="line">    config[<span class="string">&quot;rule-providers&quot;</span>] = &#123;&#125;;</span><br><span class="line">  &#125;</span><br><span class="line">  </span><br><span class="line">  config[<span class="string">&quot;rule-providers&quot;</span>][<span class="string">&quot;my-direct&quot;</span>] = &#123;</span><br><span class="line">    <span class="attr">type</span>: <span class="string">&quot;file&quot;</span>,</span><br><span class="line">    <span class="attr">behavior</span>: <span class="string">&quot;domain&quot;</span>,</span><br><span class="line">    <span class="attr">path</span>: <span class="string">&quot;./custom/my-direct-domains.txt&quot;</span>,</span><br><span class="line">    <span class="attr">format</span>: <span class="string">&quot;text&quot;</span>,</span><br><span class="line">  &#125;;</span><br><span class="line">  </span><br><span class="line">  <span class="comment">// 在规则最前面引用</span></span><br><span class="line">  config.<span class="property">rules</span>.<span class="title function_">unshift</span>(<span class="string">&quot;RULE-SET,my-direct,DIRECT&quot;</span>);</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">return</span> config;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><strong>优点</strong>：规则和配置分离，便于管理大量规则。规则文件可以独立编辑，不影响主配置。如果托管到 GitHub 等平台，还可以设置自动更新。</p><p><strong>缺点</strong>：多一层文件管理。本地文件在多设备间不能自动同步（除非托管到远程）。</p><p><strong>适合场景</strong>：自定义规则数量较多、需要在多台设备间共享自定义规则、需要独立维护和版本管理的情况。</p><h2 id="实用场景示例"><a href="#实用场景示例" class="headerlink" title="实用场景示例"></a>实用场景示例</h2><h3 id="场景一：公司内网直连"><a href="#场景一：公司内网直连" class="headerlink" title="场景一：公司内网直连"></a>场景一：公司内网直连</h3><p>上班时开着代理，但公司内部系统必须直连，否则打不开。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 公司域名直连</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,company.com,DIRECT</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,corp.internal,DIRECT</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,oa.mycompany.cn,DIRECT</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,mail.mycompany.com,DIRECT</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 公司 IP 段直连（RFC 1918 私有地址）</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">IP-CIDR,10.0.0.0/8,DIRECT,no-resolve</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">IP-CIDR,172.16.0.0/12,DIRECT,no-resolve</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">IP-CIDR,192.168.0.0/16,DIRECT,no-resolve</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 如果公司有专用的公网 IP 段</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">IP-CIDR,203.0.113.0/24,DIRECT</span></span><br></pre></td></tr></table></figure><p>注意 IP-CIDR 规则后面的 <code>no-resolve</code>。这个参数的作用是：当请求的目标是域名时，不要先解析 DNS 再拿 IP 去匹配这条规则。这可以避免不必要的 DNS 查询，提升匹配效率。对于只用来匹配内网 IP 段的规则，加上 <code>no-resolve</code> 是好习惯。</p><h3 id="场景二：特定游戏走特定地区节点"><a href="#场景二：特定游戏走特定地区节点" class="headerlink" title="场景二：特定游戏走特定地区节点"></a>场景二：特定游戏走特定地区节点</h3><p>你玩的游戏服务器在日本，需要走日本节点来降低延迟。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 需要先在 proxy-groups 中定义 Gaming-JP 策略组</span></span><br><span class="line"><span class="comment"># proxy-groups:</span></span><br><span class="line"><span class="comment">#   - name: Gaming-JP</span></span><br><span class="line"><span class="comment">#     type: url-test</span></span><br><span class="line"><span class="comment">#     proxies: [JP-01, JP-02, JP-03]</span></span><br><span class="line"><span class="comment">#     url: http://www.gstatic.com/generate_204</span></span><br><span class="line"><span class="comment">#     interval: 300</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Steam 平台</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,steampowered.com,Gaming</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,steamcommunity.com,Gaming</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,steamstatic.com,Gaming</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,steam-chat.com,Gaming</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">PROCESS-NAME,steam.exe,Gaming</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 英雄联盟日服</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,riotgames.com,Gaming-JP</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,leagueoflegends.com,Gaming-JP</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">PROCESS-NAME,LeagueClient.exe,Gaming-JP</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">PROCESS-NAME,League</span> <span class="string">of</span> <span class="string">Legends.exe,Gaming-JP</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 最终幻想14</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,finalfantasyxiv.com,Gaming-JP</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,square-enix.com,Gaming-JP</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">PROCESS-NAME,ffxiv_dx11.exe,Gaming-JP</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 原神（国际服）</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,hoyoverse.com,Gaming</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,mihoyo.com,Gaming</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">PROCESS-NAME,GenshinImpact.exe,Gaming</span></span><br></pre></td></tr></table></figure><p><strong>注意</strong>：<code>PROCESS-NAME</code> 规则需要在 TUN 模式下才能生效。系统代理模式无法捕获进程信息。如果你还没开启 TUN 模式，参考客户端设置中的 TUN 选项。</p><h3 id="场景三：AI-服务走专用节点组"><a href="#场景三：AI-服务走专用节点组" class="headerlink" title="场景三：AI 服务走专用节点组"></a>场景三：AI 服务走专用节点组</h3><p>ChatGPT、Claude 等 AI 服务对 IP 地区有要求。有些节点的 IP 被这些服务封禁了，有些节点地区根本无法使用这些服务。把 AI 服务单独分组，方便切换到可用的节点。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># AI 服务 - 走专用策略组</span></span><br><span class="line"><span class="comment"># OpenAI / ChatGPT</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,openai.com,AI-Services</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,chatgpt.com,AI-Services</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,oaistatic.com,AI-Services</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,oaiusercontent.com,AI-Services</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,ai.com,AI-Services</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Anthropic / Claude</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,anthropic.com,AI-Services</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,claude.ai,AI-Services</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Google AI</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,gemini.google.com,AI-Services</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,deepmind.google,AI-Services</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,bard.google.com,AI-Services</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Microsoft Copilot</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,copilot.microsoft.com,AI-Services</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Perplexity</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,perplexity.ai,AI-Services</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Midjourney</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,midjourney.com,AI-Services</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Suno (AI 音乐)</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,suno.com,AI-Services</span></span><br></pre></td></tr></table></figure><p>建议 AI-Services 策略组使用 <code>select</code>（手动选择）类型而不是 <code>url-test</code>（自动选最快）。原因是延迟最低的节点不一定能正常访问这些 AI 服务，手动选择可以确保切换到实际可用的节点。</p><h3 id="场景四：强制某些网站走代理"><a href="#场景四：强制某些网站走代理" class="headerlink" title="场景四：强制某些网站走代理"></a>场景四：强制某些网站走代理</h3><p>有些网站在中国能访问，但走代理更快、功能更全，或者你需要以境外 IP 访问获得不同的内容。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># GitHub - 国内虽然能访问，但速度极不稳定，走代理更流畅</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,github.com,Proxy</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,githubusercontent.com,Proxy</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,github.io,Proxy</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,githubassets.com,Proxy</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Stack Overflow - 国内能访问但经常很慢</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,stackoverflow.com,Proxy</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,stackexchange.com,Proxy</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,sstatic.net,Proxy</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Docker Hub - 镜像拉取经常超时</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,docker.com,Proxy</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,docker.io,Proxy</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># npm 源 - 默认源在国内很慢（也可以改用国内镜像，但走代理更简单）</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,npmjs.org,Proxy</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,npmjs.com,Proxy</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Wikipedia - 部分地区已被墙</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,wikipedia.org,Proxy</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,wikimedia.org,Proxy</span></span><br></pre></td></tr></table></figure><h3 id="场景五：屏蔽特定域名"><a href="#场景五：屏蔽特定域名" class="headerlink" title="场景五：屏蔽特定域名"></a>场景五：屏蔽特定域名</h3><p>除了公共广告拦截规则之外，自己补充屏蔽名单。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 屏蔽特定广告和追踪域名</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,annoying-ads.com,REJECT</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,user-tracker.net,REJECT</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 用关键词匹配批量屏蔽 - 注意：关键词匹配范围广，可能误伤</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-KEYWORD,adservice,REJECT</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-KEYWORD,analytics,REJECT</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">DOMAIN-KEYWORD,tracking,REJECT</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 屏蔽特定 App 的联网请求（需要 TUN 模式）</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">PROCESS-NAME,bloatware.exe,REJECT</span></span><br></pre></td></tr></table></figure><p><strong>警告</strong>：<code>DOMAIN-KEYWORD</code> 规则的匹配范围很广。<code>DOMAIN-KEYWORD,analytics,REJECT</code> 会屏蔽所有域名中包含”analytics”的请求，可能影响到正常网站的功能（比如某些网站用 analytics 子域名做非追踪用途）。建议优先使用 <code>DOMAIN-SUFFIX</code>（精确）而不是 <code>DOMAIN-KEYWORD</code>（模糊），只在你确定关键词不会误伤时才使用关键词规则。</p><h2 id="调试自定义规则"><a href="#调试自定义规则" class="headerlink" title="调试自定义规则"></a>调试自定义规则</h2><p>规则写好了，怎么确认它生效了？怎么排查没生效的原因？</p><h3 id="查看规则匹配结果"><a href="#查看规则匹配结果" class="headerlink" title="查看规则匹配结果"></a>查看规则匹配结果</h3><p><strong>Clash Verge Rev</strong>：打开”连接”（Connections）标签页。这里列出了所有当前活跃的网络连接，每条连接显示以下信息：</p><ul><li><strong>Host</strong>：目标域名或 IP</li><li><strong>Rule</strong>：匹配到的规则（比如 <code>DOMAIN-SUFFIX,github.com</code>）</li><li><strong>Chains</strong>：使用的策略组和最终节点</li><li><strong>Type</strong>：连接类型（TCP&#x2F;UDP）</li></ul><p>找到你想检查的连接，看”Rule”列。如果显示的规则不是你写的自定义规则，说明你的规则没有被匹配到——通常是因为位置不对（放在了其他规则后面）或者写法有误。</p><p><strong>实际操作</strong>：在浏览器中访问目标网站，然后立即切到 Clash Verge Rev 的连接页面查看。注意一个域名可能产生多个连接（主页面、CSS、JS、图片等可能来自不同域名），需要找到对应的那条。</p><h3 id="常见错误和排查方法"><a href="#常见错误和排查方法" class="headerlink" title="常见错误和排查方法"></a>常见错误和排查方法</h3><p><strong>错误 1：自定义规则放在了兜底规则后面</strong></p><p>这是最常见的错误。<code>MATCH,Proxy</code> 会匹配一切流量，所有放在它后面的规则都永远不会被检查。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 错误写法</span></span><br><span class="line"><span class="attr">rules:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,proxy,Proxy</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">GEOIP,CN,DIRECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">MATCH,Proxy</span>               <span class="comment"># 这条匹配一切，后面的规则永远无效</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,my-site.com,DIRECT</span>  <span class="comment"># 永远不会被匹配到</span></span><br></pre></td></tr></table></figure><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 正确写法</span></span><br><span class="line"><span class="attr">rules:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">DOMAIN-SUFFIX,my-site.com,DIRECT</span>  <span class="comment"># 自定义规则放最前面</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">RULE-SET,proxy,Proxy</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">GEOIP,CN,DIRECT</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">MATCH,Proxy</span></span><br></pre></td></tr></table></figure><p><strong>错误 2：域名拼写有误</strong></p><p>规则不会做模糊匹配。<code>DOMAIN-SUFFIX,gooogle.com,Proxy</code>（多了一个 o）不会匹配 <code>google.com</code>。仔细检查域名拼写。</p><p>排查方法：在连接日志中搜索目标域名，看它实际命中了哪条规则。如果命中的是 <code>MATCH</code>（兜底）或其他通用规则而不是你的自定义规则，说明你的规则没有正确匹配。</p><p><strong>错误 3：rule-provider 的 behavior 类型不对</strong></p><p>如果你创建的规则文件内容是纯域名列表（每行一个域名），但 behavior 设成了 <code>classical</code>，Clash 会尝试解析每行的规则类型前缀，发现找不到，规则加载失败。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 错误：文件内容是纯域名，但 behavior 写了 classical</span></span><br><span class="line"><span class="attr">my-rules:</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">file</span></span><br><span class="line">  <span class="attr">behavior:</span> <span class="string">classical</span>     <span class="comment"># 错！应该是 domain</span></span><br><span class="line">  <span class="attr">path:</span> <span class="string">./custom/domains.txt</span></span><br><span class="line">  <span class="attr">format:</span> <span class="string">text</span></span><br></pre></td></tr></table></figure><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 正确</span></span><br><span class="line"><span class="attr">my-rules:</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">file</span></span><br><span class="line">  <span class="attr">behavior:</span> <span class="string">domain</span>        <span class="comment"># 纯域名列表用 domain</span></span><br><span class="line">  <span class="attr">path:</span> <span class="string">./custom/domains.txt</span></span><br><span class="line">  <span class="attr">format:</span> <span class="string">text</span></span><br></pre></td></tr></table></figure><p>反过来，如果文件中包含 <code>DOMAIN-SUFFIX,xxx.com</code> 这样带前缀的规则，behavior 就必须用 <code>classical</code>。</p><p><strong>错误 4：策略组名称不存在</strong></p><p>规则指向的策略组必须在 <code>proxy-groups</code> 中定义过。如果你写了 <code>DOMAIN-SUFFIX,example.com,GameNodes</code>，但配置中没有名为”GameNodes”的策略组，Clash 会报错。</p><p>排查方法：检查 Clash Verge Rev 的日志页面，加载配置失败时通常会输出具体的错误信息。</p><p><strong>错误 5：订阅更新覆盖了自定义规则</strong></p><p>如果你直接在配置文件中添加规则，订阅更新会用新的配置文件替换旧的，你的修改全部丢失。</p><p>解决方案：使用方式二（覆写脚本）或方式三（独立 rule-provider 文件配合覆写脚本）。覆写脚本在订阅配置加载后运行，不受更新影响。</p><h2 id="规则语法速查表"><a href="#规则语法速查表" class="headerlink" title="规则语法速查表"></a>规则语法速查表</h2><p>以下是 Clash &#x2F; mihomo 支持的所有常用规则类型（完整规则文档请参阅 <a href="https://wiki.metacubex.one/">Clash Wiki</a>）：</p><table><thead><tr><th>类型</th><th>语法</th><th>示例</th><th>说明</th></tr></thead><tbody><tr><td>精确域名</td><td><code>DOMAIN</code></td><td><code>DOMAIN,example.com,Proxy</code></td><td>只匹配 <code>example.com</code> 本身，不匹配子域名</td></tr><tr><td>域名后缀</td><td><code>DOMAIN-SUFFIX</code></td><td><code>DOMAIN-SUFFIX,google.com,Proxy</code></td><td>匹配 <code>google.com</code> 及其所有子域名 <code>*.google.com</code></td></tr><tr><td>域名关键词</td><td><code>DOMAIN-KEYWORD</code></td><td><code>DOMAIN-KEYWORD,google,Proxy</code></td><td>域名中包含 <code>google</code> 就匹配</td></tr><tr><td>IP 段</td><td><code>IP-CIDR</code></td><td><code>IP-CIDR,1.2.3.0/24,DIRECT</code></td><td>匹配目标 IP 在指定范围内</td></tr><tr><td>IPv6 段</td><td><code>IP-CIDR6</code></td><td><code>IP-CIDR6,2001:db8::/32,DIRECT</code></td><td>匹配目标 IPv6 地址在指定范围内</td></tr><tr><td>国家 IP</td><td><code>GEOIP</code></td><td><code>GEOIP,CN,DIRECT</code></td><td>根据 GeoIP 数据库判断目标 IP 所属国家</td></tr><tr><td>进程名</td><td><code>PROCESS-NAME</code></td><td><code>PROCESS-NAME,chrome.exe,Proxy</code></td><td>匹配发出请求的进程名（需要 TUN 模式）</td></tr><tr><td>目标端口</td><td><code>DST-PORT</code></td><td><code>DST-PORT,22,DIRECT</code></td><td>匹配目标端口号</td></tr><tr><td>源端口</td><td><code>SRC-PORT</code></td><td><code>SRC-PORT,7777,DIRECT</code></td><td>匹配来源端口号</td></tr><tr><td>规则集</td><td><code>RULE-SET</code></td><td><code>RULE-SET,my-rules,Proxy</code></td><td>引用 rule-provider 中定义的规则集</td></tr><tr><td>GeoSite</td><td><code>GEOSITE</code></td><td><code>GEOSITE,google,Proxy</code></td><td>使用内置 GeoSite 数据库匹配（mihomo）</td></tr><tr><td>兜底</td><td><code>MATCH</code></td><td><code>MATCH,Proxy</code></td><td>匹配所有未被前面规则命中的流量，必须放最后</td></tr></tbody></table><h3 id="规则编写的优先级原则"><a href="#规则编写的优先级原则" class="headerlink" title="规则编写的优先级原则"></a>规则编写的优先级原则</h3><p>组织规则的顺序直接决定分流的正确性。遵循以下优先级从上到下排列：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">1. REJECT 规则（广告拦截）—— 最先处理，避免广告请求浪费带宽</span><br><span class="line">2. 自定义直连规则（公司内网等）—— 确保内网流量不走代理</span><br><span class="line">3. 自定义代理/特定节点规则 —— 特殊网站走指定路径</span><br><span class="line">4. 公共规则集（RULE-SET）—— 覆盖常见网站</span><br><span class="line">5. GEOIP,CN,DIRECT —— 兜底：中国 IP 直连</span><br><span class="line">6. MATCH,Proxy —— 最终兜底：剩余流量走代理</span><br></pre></td></tr></table></figure><h2 id="完整实战：从零开始添加自定义规则"><a href="#完整实战：从零开始添加自定义规则" class="headerlink" title="完整实战：从零开始添加自定义规则"></a>完整实战：从零开始添加自定义规则</h2><p>下面用一个完整的例子串起所有知识点。假设你的需求是：</p><ol><li>公司内网域名 <code>*.mycompany.com</code> 和 <code>*.internal.corp</code> 直连</li><li>GitHub 系列域名走代理（默认规则没覆盖到）</li><li>ChatGPT 和 Claude 走一个专门的美国节点组</li><li>英雄联盟走日本节点</li><li>屏蔽一个烦人的广告域名 <code>spam-tracker.net</code></li></ol><p><strong>用覆写脚本实现</strong>（推荐方式）：</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">function</span> <span class="title function_">main</span>(<span class="params">config</span>) &#123;</span><br><span class="line">  <span class="comment">// ---------- 创建策略组 ----------</span></span><br><span class="line">  <span class="keyword">const</span> allProxies = config.<span class="property">proxies</span>.<span class="title function_">map</span>(<span class="function"><span class="params">p</span> =&gt;</span> p.<span class="property">name</span>);</span><br><span class="line">  </span><br><span class="line">  <span class="comment">// AI 服务策略组 - 筛选美国节点</span></span><br><span class="line">  <span class="keyword">const</span> usProxies = allProxies.<span class="title function_">filter</span>(<span class="function"><span class="params">name</span> =&gt;</span></span><br><span class="line">    <span class="regexp">/美国|US|United States|America/i</span>.<span class="title function_">test</span>(name)</span><br><span class="line">  );</span><br><span class="line">  <span class="keyword">if</span> (usProxies.<span class="property">length</span> &gt; <span class="number">0</span>) &#123;</span><br><span class="line">    config[<span class="string">&quot;proxy-groups&quot;</span>].<span class="title function_">push</span>(&#123;</span><br><span class="line">      <span class="attr">name</span>: <span class="string">&quot;AI-Services&quot;</span>,</span><br><span class="line">      <span class="attr">type</span>: <span class="string">&quot;select&quot;</span>,</span><br><span class="line">      <span class="attr">proxies</span>: usProxies,</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125;</span><br><span class="line">  </span><br><span class="line">  <span class="comment">// 游戏策略组 - 筛选日本节点</span></span><br><span class="line">  <span class="keyword">const</span> jpProxies = allProxies.<span class="title function_">filter</span>(<span class="function"><span class="params">name</span> =&gt;</span></span><br><span class="line">    <span class="regexp">/日本|JP|Japan|Tokyo|Osaka/i</span>.<span class="title function_">test</span>(name)</span><br><span class="line">  );</span><br><span class="line">  <span class="keyword">if</span> (jpProxies.<span class="property">length</span> &gt; <span class="number">0</span>) &#123;</span><br><span class="line">    config[<span class="string">&quot;proxy-groups&quot;</span>].<span class="title function_">push</span>(&#123;</span><br><span class="line">      <span class="attr">name</span>: <span class="string">&quot;Gaming-JP&quot;</span>,</span><br><span class="line">      <span class="attr">type</span>: <span class="string">&quot;url-test&quot;</span>,</span><br><span class="line">      <span class="attr">proxies</span>: jpProxies,</span><br><span class="line">      <span class="attr">url</span>: <span class="string">&quot;http://www.gstatic.com/generate_204&quot;</span>,</span><br><span class="line">      <span class="attr">interval</span>: <span class="number">300</span>,</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125;</span><br><span class="line">  </span><br><span class="line">  <span class="comment">// ---------- 自定义规则 ----------</span></span><br><span class="line">  <span class="keyword">const</span> customRules = [</span><br><span class="line">    <span class="comment">// 1. 屏蔽广告</span></span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,spam-tracker.net,REJECT&quot;</span>,</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// 2. 公司内网直连</span></span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,mycompany.com,DIRECT&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,internal.corp,DIRECT&quot;</span>,</span><br><span class="line">    <span class="string">&quot;IP-CIDR,10.0.0.0/8,DIRECT,no-resolve&quot;</span>,</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// 3. GitHub 走代理</span></span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,github.com,Proxy&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,githubusercontent.com,Proxy&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,github.io,Proxy&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,githubassets.com,Proxy&quot;</span>,</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// 4. AI 服务走专用组</span></span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,openai.com,AI-Services&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,chatgpt.com,AI-Services&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,anthropic.com,AI-Services&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,claude.ai,AI-Services&quot;</span>,</span><br><span class="line">    </span><br><span class="line">    <span class="comment">// 5. 英雄联盟走日本节点</span></span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,riotgames.com,Gaming-JP&quot;</span>,</span><br><span class="line">    <span class="string">&quot;DOMAIN-SUFFIX,leagueoflegends.com,Gaming-JP&quot;</span>,</span><br><span class="line">    <span class="string">&quot;PROCESS-NAME,LeagueClient.exe,Gaming-JP&quot;</span>,</span><br><span class="line">  ];</span><br><span class="line">  </span><br><span class="line">  config.<span class="property">rules</span> = [...customRules, ...config.<span class="property">rules</span>];</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">return</span> config;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>保存脚本后，Clash Verge Rev 会自动重新加载配置。打开”连接”页面，访问 <code>github.com</code>，确认连接日志中显示的规则是 <code>DOMAIN-SUFFIX,github.com</code> 且走的是 Proxy 策略组。访问公司内网域名，确认走的是 DIRECT。</p><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="自定义规则会影响性能吗？"><a href="#自定义规则会影响性能吗？" class="headerlink" title="自定义规则会影响性能吗？"></a>自定义规则会影响性能吗？</h3><p>几乎不会。Clash 的规则匹配本身就很快——几条到几十条自定义规则对性能的影响完全可以忽略。即使加上公共规则集的几千条规则，在现代设备上也不会造成可感知的延迟。</p><p>如果你的自定义规则确实达到了上百条的量级，建议整理成 rule-provider 文件，用 <code>domain</code> 或 <code>ipcidr</code> behavior 加载。这两种 behavior 会将规则加载到高效的数据结构中（哈希表或前缀树），查询速度接近 O(1)，远快于逐条线性匹配。</p><h3 id="怎么找到某个网站对应的域名？"><a href="#怎么找到某个网站对应的域名？" class="headerlink" title="怎么找到某个网站对应的域名？"></a>怎么找到某个网站对应的域名？</h3><p><strong>方法一：浏览器开发者工具。</strong> 按 F12 打开开发者工具，切换到 Network（网络）面板，然后访问目标网站。你会看到浏览器发出的所有请求及其目标域名。主域名通常就是你在地址栏看到的，但很多网站还会加载来自其他域名的资源（CDN、API 等）。</p><p><strong>方法二：Clash 连接日志。</strong> 访问目标网站后，在 Clash Verge Rev 的”连接”页面中搜索。这里显示的是实际经过代理客户端的所有连接，比浏览器开发者工具更全面（包括非浏览器应用的流量）。</p><p><strong>方法三：命令行工具。</strong> 在 PowerShell 或终端中使用 <code>nslookup</code> 或 <code>ping</code> 命令查看域名解析结果，确认域名是否正确。</p><h3 id="订阅更新后自定义规则丢了怎么办？"><a href="#订阅更新后自定义规则丢了怎么办？" class="headerlink" title="订阅更新后自定义规则丢了怎么办？"></a>订阅更新后自定义规则丢了怎么办？</h3><p>这是最经典的”踩坑”场景。如果你是直接修改配置文件来添加规则的，每次订阅更新都会覆盖你的修改。</p><p>解决方案很明确：<strong>使用 Clash Verge Rev 的覆写（Override &#x2F; Script）功能。</strong> 覆写脚本是独立于订阅配置的，订阅更新只替换配置文件本身，不会影响脚本。脚本会在每次加载配置时自动运行，把你的自定义规则注入进去。</p><p>如果你使用的客户端不支持覆写功能，替代方案是把自定义规则写成独立的 rule-provider 文件（本地文件），然后在配置中引用。订阅更新如果不覆盖 rule-providers 段和本地文件，规则就能保留。但这取决于具体客户端和订阅转换服务的行为，不如覆写脚本可靠。</p><h3 id="可以给特定应用设置不同的代理节点吗？"><a href="#可以给特定应用设置不同的代理节点吗？" class="headerlink" title="可以给特定应用设置不同的代理节点吗？"></a>可以给特定应用设置不同的代理节点吗？</h3><p>可以，使用 <code>PROCESS-NAME</code> 规则。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 微信走直连</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">PROCESS-NAME,WeChat.exe,DIRECT</span></span><br><span class="line"><span class="comment"># Chrome 浏览器走代理</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">PROCESS-NAME,chrome.exe,Proxy</span></span><br><span class="line"><span class="comment"># Telegram 走专用节点组</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">PROCESS-NAME,Telegram.exe,Telegram</span></span><br><span class="line"><span class="comment"># Steam 走游戏节点</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">PROCESS-NAME,steam.exe,Gaming</span></span><br></pre></td></tr></table></figure><p><strong>前提条件</strong>：必须开启 TUN 模式。系统代理模式下，代理客户端只能看到来自设置了代理的应用的流量，无法获取进程信息。TUN 模式通过虚拟网卡捕获所有流量，可以识别每个连接的来源进程。</p><p>查看进程名的方法：打开任务管理器（Ctrl+Shift+Esc），在”详细信息”标签页中找到目标程序的进程名（”名称”列显示的就是 <code>PROCESS-NAME</code> 规则需要的值）。</p><h3 id="DOMAIN-和-DOMAIN-SUFFIX-该用哪个？"><a href="#DOMAIN-和-DOMAIN-SUFFIX-该用哪个？" class="headerlink" title="DOMAIN 和 DOMAIN-SUFFIX 该用哪个？"></a>DOMAIN 和 DOMAIN-SUFFIX 该用哪个？</h3><p>绝大多数情况用 <code>DOMAIN-SUFFIX</code>。</p><p><code>DOMAIN-SUFFIX,google.com</code> 会匹配 <code>google.com</code> 本身以及 <code>www.google.com</code>、<code>mail.google.com</code> 等所有子域名。一个网站通常有很多子域名用于不同的服务（主站、API、CDN、静态资源等），用 <code>DOMAIN-SUFFIX</code> 可以一条规则覆盖全部。</p><p><code>DOMAIN,www.google.com</code> 只匹配 <code>www.google.com</code> 这一个域名。只在你确实需要精确控制某个特定子域名的路由（而让其他子域名走不同的规则）时才使用。</p><h3 id="规则能用正则表达式吗？"><a href="#规则能用正则表达式吗？" class="headerlink" title="规则能用正则表达式吗？"></a>规则能用正则表达式吗？</h3><p>Clash 的标准规则不支持正则表达式。如果你需要基于复杂模式匹配域名，有两个替代方案：</p><ol><li><strong>用 <code>DOMAIN-KEYWORD</code> 做模糊匹配。</strong> 虽然不是正则，但关键词匹配能覆盖一些简单的模式需求。</li><li><strong>用覆写脚本动态生成规则。</strong> 在 JavaScript 脚本中你可以用任何逻辑来生成规则列表，包括正则匹配、字符串操作等，然后将生成的规则注入到配置中。</li></ol>]]>
    </content>
    <id>https://blog.e.show/posts/custom-rules/</id>
    <link href="https://blog.e.show/posts/custom-rules/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>教你在 Clash 中自定义分流规则——让特定网站走代理、公司内网直连、游戏走特定节点。</summary>
    <title>如何自定义规则：让特定网站走代理/直连/特定节点</title>
    <updated>2026-05-09T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="选择与评估" scheme="https://blog.e.show/categories/%E9%80%89%E6%8B%A9%E4%B8%8E%E8%AF%84%E4%BC%B0/"/>
    <category term="机场" scheme="https://blog.e.show/tags/%E6%9C%BA%E5%9C%BA/"/>
    <category term="自建" scheme="https://blog.e.show/tags/%E8%87%AA%E5%BB%BA/"/>
    <category term="月付" scheme="https://blog.e.show/tags/%E6%9C%88%E4%BB%98/"/>
    <category term="年付" scheme="https://blog.e.show/tags/%E5%B9%B4%E4%BB%98/"/>
    <category term="决策" scheme="https://blog.e.show/tags/%E5%86%B3%E7%AD%96/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：”该买月付还是年付？””自己建还是用机场？”——这两个问题几乎是每个代理用户都会面对的。答案取决于你的技术能力、预算、需求优先级和风险偏好。本文提供一套决策框架，帮你做出适合自己的选择。</p></blockquote><h2 id="为什么需要决策框架"><a href="#为什么需要决策框架" class="headerlink" title="为什么需要决策框架"></a>为什么需要决策框架</h2><p>很多人在选择代理方案时靠”感觉”：看到群里有人推荐就买了，看到年付打折就冲了，看到一键脚本就自建了。结果要么花了冤枉钱，要么折腾半天发现不适合自己。</p><p>代理方案的选择本质上是一个<strong>多变量权衡问题</strong>。你需要同时考虑技术能力、预算、隐私需求、稳定性要求、使用场景等因素。没有”最好的方案”，只有”最适合你的方案”。</p><p>本文将两个核心问题拆解成具体的决策维度，帮你系统地做出选择，而不是凭直觉踩坑。</p><hr><h2 id="自建-vs-机场"><a href="#自建-vs-机场" class="headerlink" title="自建 vs 机场"></a>自建 vs 机场</h2><p>这是代理用户面临的第一个分岔路。两种方案各有明确的优势和代价，关键是诚实评估自己的情况。</p><h3 id="自建代理的优势"><a href="#自建代理的优势" class="headerlink" title="自建代理的优势"></a>自建代理的优势</h3><p><strong>完全控制</strong></p><p>自建意味着你是唯一的管理员。服务器上运行什么软件、什么协议、什么配置，全部由你决定。你清楚地知道数据经过了哪些节点，不存在第三方中间人。对于安全性有极高要求的用户（记者、研究人员、安全从业者），这一点至关重要。</p><p><strong>隐私最优</strong></p><p>自建节点只有你一个人使用。没有任何第三方能看到你的流量元数据——连接时间、访问目标、流量大小等信息都不会暴露给机场运营者。这是自建在隐私方面的绝对优势，任何机场都无法提供同等级别的隐私保障。</p><p><strong>学习价值</strong></p><p>搭建和维护代理节点的过程，会迫使你深入理解 Linux 系统管理、网络协议、TLS 加密、DNS 解析等底层技术。这些知识不仅有助于你更好地使用代理，也是通用的技术能力。</p><p><strong>定制自由</strong></p><p>想用 VLESS + Reality？想试试 AnyTLS？想在服务器上同时跑代理和其他服务？自建没有任何限制。你可以根据自己的需求选择最合适的协议和配置方案，不受机场运营者的技术选型约束。</p><h3 id="自建代理的劣势"><a href="#自建代理的劣势" class="headerlink" title="自建代理的劣势"></a>自建代理的劣势</h3><p><strong>单点故障</strong></p><p>一台服务器就是一个故障点。服务器宕机、VPS 提供商网络抖动、机房维护——任何一个环节出问题，你就完全没有代理可用。除非你同时维护多台服务器，但这又会显著增加成本和运维负担。</p><p><strong>IP 被封自己处理</strong></p><p>这是自建用户最头疼的问题之一。当你的 VPS IP 被墙，你需要自己联系 VPS 提供商更换 IP（有的提供商不支持免费更换），或者购买新的 VPS。整个过程可能需要几个小时到几天，期间你没有可用的代理。对于需要稳定翻墙的用户来说，这个风险不容忽视。</p><p><strong>缺少多地区覆盖</strong></p><p>租用一台位于日本的 VPS 很简单，但如果你同时需要香港、新加坡、美国、台湾的节点呢？每个地区一台 VPS，成本和运维工作量线性增长。而且不同地区的 VPS 提供商各有差异，你需要分别管理多个账户和多个服务器。</p><p><strong>运维成本</strong></p><p>自建不是”搭好就不管了”。你需要定期更新系统补丁、续期或更换 TLS 证书、监控服务器状态、排查连接故障。如果使用了 CDN 中转或其他复杂架构，运维复杂度还会进一步上升。这些时间成本往往被低估。</p><p><strong>敏感时期的脆弱性</strong></p><p>每年的敏感时期（重大会议、特殊纪念日等），GFW 的封锁力度会显著加大。自建节点因为用户基数小、IP 段单一，往往是最先被封的。而且被封后你只能等待或者自己想办法，没有专业团队帮你快速恢复。</p><p><strong>实际成本不低</strong></p><p>一台基础 VPS 的价格通常在 $3-10&#x2F;月，表面上看不贵。但考虑到它只覆盖一个地区，而且你还需要投入时间进行运维，实际的总成本（资金 + 时间）并不比使用机场服务低多少。</p><h3 id="机场服务的优势"><a href="#机场服务的优势" class="headerlink" title="机场服务的优势"></a>机场服务的优势</h3><p><strong>多节点多地区</strong></p><p>这是机场最明显的优势。一个订阅就能覆盖 HK&#x2F;JP&#x2F;SG&#x2F;US&#x2F;TW 等多个地区，通常包含几十到上百个节点。不同地区用于不同场景——日本节点看番剧、美国节点用 AI 服务、香港节点低延迟办公——一个订阅全部搞定。</p><p><strong>运维专业</strong></p><p>好的机场有专业的运维团队（或者至少是经验丰富的个人），负责节点维护、IP 轮换、协议升级、故障处理。当节点 IP 被封时，运维人员会在短时间内更换 IP 或切换线路，你要做的只是等待几分钟或者手动选择其他可用节点。</p><p><strong>省心</strong></p><p>从用户角度来说，使用机场的流程极其简单：注册账号、购买套餐、复制订阅链接、导入客户端、选择节点、开始使用。整个过程不需要任何服务器管理知识，不需要了解协议细节，不需要配置防火墙规则。</p><p><strong>性价比</strong></p><p>以 ¥15-50&#x2F;月的价格，你可以获得多个地区的多条线路，包含直连、中转甚至 IPLC 专线。如果用自建方式达到同等的地区覆盖和线路质量，成本至少是机场的 3-5 倍。</p><p><strong>敏感时期应对</strong></p><p>有经验的机场运营者对敏感时期有预案：提前储备备用 IP、准备备用协议、开启备用线路。有些机场还会在敏感时期通过 Telegram 群组发布临时节点或手动配置方案。这种应急能力是个人自建很难具备的。</p><h3 id="机场服务的劣势"><a href="#机场服务的劣势" class="headerlink" title="机场服务的劣势"></a>机场服务的劣势</h3><p><strong>信任问题</strong></p><p>机场运营者在技术上有能力看到你的流量元数据（连接时间、目标域名&#x2F;IP、流量大小），虽然 TLS 加密保护了具体内容不被窥探，但元数据本身已经包含了大量信息。你必须信任运营者不会记录或滥用这些数据。</p><p>对于日常使用（工作、娱乐、学习），这个风险是可以接受的。但如果你的使用场景涉及敏感内容，你需要认真考虑这个问题。</p><p><strong>跑路风险</strong></p><p>机场是一个灰色产业，没有法律保障。运营者可能因为各种原因关闭服务——被查处、经营不善、主动退出。一旦跑路，你预付的费用全部打水漂，而且没有任何追偿的渠道。</p><p>这个风险与你的预付金额直接相关——月付最多损失一个月的费用，年付则可能损失一整年的费用。</p><p><strong>共享 IP</strong></p><p>机场的节点是多人共享的。如果其他用户进行了高风险行为（大量发送垃圾邮件、恶意扫描等），节点的 IP 可能被目标服务列入黑名单，影响到你的正常使用。这在 ChatGPT、Netflix 等对 IP 质量敏感的服务上尤为明显。</p><p><strong>服务质量参差不齐</strong></p><p>机场行业没有标准和监管。同样标称”高端IPLC”的两家机场，实际线路质量可能天差地别。选错了不仅花冤枉钱，还可能遇到频繁断线、速度极慢甚至数据泄露等问题。</p><hr><h3 id="决策矩阵"><a href="#决策矩阵" class="headerlink" title="决策矩阵"></a>决策矩阵</h3><p>下表帮你快速判断哪种方案更适合你的情况：</p><table><thead><tr><th>因素</th><th>选自建</th><th>选机场</th></tr></thead><tbody><tr><td>技术能力</td><td>有 Linux 运维经验，能独立排查问题</td><td>不想折腾技术，希望开箱即用</td></tr><tr><td>隐私需求</td><td>极高（记者、活动人士、安全研究员）</td><td>正常使用（工作、娱乐、学习）</td></tr><tr><td>预算</td><td>愿意为单一地区付 $5-10&#x2F;月</td><td>想用 ¥15-50&#x2F;月覆盖多个地区</td></tr><tr><td>可用性要求</td><td>能接受偶尔中断并自己排查修复</td><td>需要稳定服务，不想处理故障</td></tr><tr><td>流媒体需求</td><td>低（自建 IP 通常无法解锁流媒体）</td><td>高（机场通常提供流媒体解锁节点）</td></tr><tr><td>地区需求</td><td>只需要一个地区</td><td>需要多个地区的节点</td></tr><tr><td>时间成本</td><td>有足够时间折腾和维护</td><td>时间宝贵，希望省心</td></tr></tbody></table><h3 id="最佳策略：自建-机场双轨方案"><a href="#最佳策略：自建-机场双轨方案" class="headerlink" title="最佳策略：自建 + 机场双轨方案"></a>最佳策略：自建 + 机场双轨方案</h3><p>如果条件允许，最稳妥的方案是<strong>同时拥有自建节点和机场订阅</strong>。</p><ul><li><strong>日常使用</strong>：以机场作为主力，享受多节点、多地区、专业运维的便利</li><li><strong>备用保障</strong>：维护一台自建节点作为应急备用，确保机场出问题时不至于完全断连</li><li><strong>隐私场景</strong>：涉及隐私敏感的操作走自建节点，日常浏览走机场节点</li></ul><p>在客户端中的具体配置方式很简单：把自建节点和机场订阅同时导入 Clash（或其他支持多订阅的客户端），创建一个策略组包含所有节点，设置 fallback 故障转移规则。机场节点优先，自建节点作为兜底。</p><p>这个策略的成本大约是：机场订阅 ¥20-40&#x2F;月 + 自建 VPS $3-5&#x2F;月，总计约 ¥50-80&#x2F;月。对于代理服务是”刚需”的用户来说，这笔投入换来的是极高的可用性保障。</p><hr><h2 id="月付-vs-年付"><a href="#月付-vs-年付" class="headerlink" title="月付 vs 年付"></a>月付 vs 年付</h2><p>确定了使用机场之后，下一个问题是付费周期。这个选择的本质是<strong>折扣与风险之间的权衡</strong>。</p><h3 id="月付"><a href="#月付" class="headerlink" title="月付"></a>月付</h3><p><strong>优势</strong></p><ul><li>最大灵活性：不满意随时换，下个月就可以切换到另一家</li><li>试错成本低：即使选错了，最多损失一个月的费用（通常 ¥15-50）</li><li>现金流友好：不需要一次性支出大量资金</li></ul><p><strong>劣势</strong></p><ul><li>单价最高：同等套餐，月付的单月价格通常比年付贵 30-50%</li><li>每月重复操作：每个月都需要手动续费（除非设置了自动续费）</li></ul><p><strong>适合场景</strong></p><ul><li>第一次使用某个机场，处于试用阶段</li><li>对机场的长期稳定性没有信心</li><li>预算有限，希望保持灵活性</li></ul><h3 id="季付"><a href="#季付" class="headerlink" title="季付"></a>季付</h3><p><strong>优势</strong></p><ul><li>比月付便宜 15-25%（具体折扣因机场而异）</li><li>承诺周期适中：3 个月足够验证一个机场的质量</li><li>减少续费频率</li></ul><p><strong>劣势</strong></p><ul><li>中等风险：如果机场在这 3 个月内跑路或质量下降，你会损失 2-3 个月的费用</li><li>不如月付灵活</li></ul><p><strong>适合场景</strong></p><ul><li>已经月付使用了 1-2 个月，确认服务质量满意</li><li>机场运营时间超过半年，有一定口碑基础</li></ul><h3 id="半年付"><a href="#半年付" class="headerlink" title="半年付"></a>半年付</h3><p><strong>优势</strong></p><ul><li>比月付便宜 25-40%</li><li>半年周期内不用操心续费问题</li><li>折扣幅度开始变得有吸引力</li></ul><p><strong>劣势</strong></p><ul><li>半年内如果服务质量下降，你没有退路（大多数机场不提供退款）</li><li>如果机场在这半年内跑路，损失较大</li><li>你的议价能力下降——已经付了钱，机场没有动力继续给你好的服务</li></ul><p><strong>适合场景</strong></p><ul><li>对机场有较强信心的老用户</li><li>机场运营 1 年以上且口碑稳定</li><li>希望在折扣和风险之间取得平衡</li></ul><h3 id="年付"><a href="#年付" class="headerlink" title="年付"></a>年付</h3><p><strong>优势</strong></p><ul><li>最便宜：通常是月付价格的 5-7 折，个别机场甚至更低</li><li>一年内完全不用管续费</li><li>部分机场对年付用户提供额外的流量或功能权益</li></ul><p><strong>劣势</strong></p><ul><li>最高风险：一旦跑路，损失一整年的费用</li><li>锁定效应：即使中途发现了更好的机场，你也不愿意放弃已经付过的年费</li><li>机场运营者在收到年付后可能降低服务质量（反正你已经付了钱）</li><li>一年时间内，GFW 的检测技术可能发生变化，机场的线路可能变差</li></ul><p><strong>适合场景</strong></p><ul><li>仅限运营超过 2 年以上、口碑好、有稳定用户群的机场</li><li>你已经使用该机场至少半年以上，确认服务持续稳定</li><li>年付节省的金额对你来说有意义</li></ul><hr><h3 id="付费周期决策树"><a href="#付费周期决策树" class="headerlink" title="付费周期决策树"></a>付费周期决策树</h3><p>以下决策树帮你系统地选择合适的付费周期：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">是否第一次使用这个机场？</span><br><span class="line">├── 是 → 月付试用 1-2 个月</span><br><span class="line">│   └── 满意吗？</span><br><span class="line">│       ├── 是 → 这个机场运营多久了？</span><br><span class="line">│       │   ├── &lt;1 年 → 季付（降低风险）</span><br><span class="line">│       │   ├── 1-2 年 → 季付或半年付</span><br><span class="line">│       │   └── &gt;2 年且口碑好 → 可以考虑年付</span><br><span class="line">│       └── 否 → 换一家，继续月付试用</span><br><span class="line">└── 否（老用户续费）→</span><br><span class="line">    └── 过去使用满意吗？</span><br><span class="line">        ├── 是 → 半年付或年付</span><br><span class="line">        └── 否 → 找新的机场，月付重新开始</span><br></pre></td></tr></table></figure><h3 id="关键原则"><a href="#关键原则" class="headerlink" title="关键原则"></a>关键原则</h3><p><strong>原则一：新机场永远月付起步</strong></p><p>无论别人怎么推荐、无论优惠多么诱人，第一次使用一个机场就应该月付。一个月的实际使用体验比任何评测和推荐都更有参考价值。用这一个月来验证速度、稳定性、客服响应、敏感时期表现等关键指标。</p><p><strong>原则二：社区反馈是重要参考</strong></p><p>在考虑长期付费之前，去 Telegram 群、相关论坛看看其他用户的长期使用评价。重点关注负面评价——正面评价可能是水军，但详细描述问题的负面评价通常是真实的。特别关注敏感时期的表现反馈，这是检验机场质量的试金石。</p><p><strong>原则三：年付的”节省”可能是幻觉</strong></p><p>假设一个机场月付 ¥30，年付打六折 &#x3D; ¥216&#x2F;年（节省 ¥144）。看起来省了不少。但如果这个机场在第 6 个月跑路了，你实际损失 ¥108（剩余半年的费用）。用月付的话你只损失当月的 ¥30。所谓的”节省”变成了”多亏”。</p><p>年付只有在你非常确定这个机场不会在一年内出问题的情况下才是真正的省钱。而对于一个灰色产业来说，这种确定性本身就很难获得。</p><p><strong>原则四：保留支付记录</strong></p><p>无论用什么方式付费，都保留好支付凭证和截图。虽然在机场跑路的情况下维权很难，但如果通过支付平台付款，支付记录至少可以作为申诉的依据。</p><hr><h2 id="组合策略：预算分配建议"><a href="#组合策略：预算分配建议" class="headerlink" title="组合策略：预算分配建议"></a>组合策略：预算分配建议</h2><p>根据不同的预算水平，以下是一些参考方案：</p><h3 id="低预算（¥30-月以内）"><a href="#低预算（¥30-月以内）" class="headerlink" title="低预算（¥30&#x2F;月以内）"></a>低预算（¥30&#x2F;月以内）</h3><ul><li>选择一个性价比高的机场，月付或季付</li><li>暂时不考虑自建</li><li>重点关注稳定性和基础速度，不追求高端线路</li></ul><h3 id="中等预算（¥30-80-月）"><a href="#中等预算（¥30-80-月）" class="headerlink" title="中等预算（¥30-80&#x2F;月）"></a>中等预算（¥30-80&#x2F;月）</h3><ul><li>一个主力机场（¥20-40&#x2F;月）+ 一台便宜的 VPS 自建备用（$3-5&#x2F;月）</li><li>主力机场可以季付或半年付（确认质量后）</li><li>自建节点优先选择可以免费更换 IP 的 VPS 提供商</li></ul><h3 id="较高预算（¥80-150-月）"><a href="#较高预算（¥80-150-月）" class="headerlink" title="较高预算（¥80-150&#x2F;月）"></a>较高预算（¥80-150&#x2F;月）</h3><ul><li>一个高端机场（¥40-80&#x2F;月）+ 一个中端机场作为备用（¥15-30&#x2F;月）</li><li>可选：一台自建 VPS 作为第三道保险</li><li>主力机场可以半年付或年付（前提是运营稳定的老牌机场）</li></ul><h3 id="预算分配原则"><a href="#预算分配原则" class="headerlink" title="预算分配原则"></a>预算分配原则</h3><ol><li><strong>不要把所有鸡蛋放在一个篮子里</strong>：无论预算多少，尽量有备用方案</li><li><strong>备用方案不需要和主力一样好</strong>：备用的目标是”能用就行”，不需要最快的速度和最多的节点</li><li><strong>预算有限时优先保障稳定性</strong>：宁可少几个节点，也要选稳定的服务</li></ol><hr><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="Q-自建和机场可以同时用吗？"><a href="#Q-自建和机场可以同时用吗？" class="headerlink" title="Q: 自建和机场可以同时用吗？"></a>Q: 自建和机场可以同时用吗？</h3><p>当然可以，而且推荐这样做。在 Clash 系列客户端中，你可以同时添加自建节点和机场订阅。具体做法是：在配置文件中添加自建节点作为独立的 proxy，同时导入机场的 proxy-provider 订阅。然后在策略组中包含所有节点来源，设置 fallback 规则让客户端在主力节点不可用时自动切换到备用节点。</p><p>这是目前最稳妥的使用方案，兼顾了日常使用的便利性和紧急情况下的可用性保障。</p><h3 id="Q-机场跑路了怎么办？"><a href="#Q-机场跑路了怎么办？" class="headerlink" title="Q: 机场跑路了怎么办？"></a>Q: 机场跑路了怎么办？</h3><p>所有预付费用将无法追回，这是使用机场服务的固有风险。预防措施包括：</p><ul><li>选择运营时间较长（1 年以上）的老牌机场，跑路概率相对更低</li><li>不要在一家机场投入过多资金，避免年付不熟悉的机场</li><li>保持至少一个备用方案（另一个机场或自建节点）</li><li>保留支付记录，如果通过正规支付渠道付款，可以尝试向支付平台申诉</li></ul><h3 id="Q-自建一个月大概花多少钱？"><a href="#Q-自建一个月大概花多少钱？" class="headerlink" title="Q: 自建一个月大概花多少钱？"></a>Q: 自建一个月大概花多少钱？</h3><p>一台基础 VPS 的价格约 $3-10&#x2F;月，取决于地区和提供商。亚洲地区（日本、香港、新加坡）通常比美国、欧洲贵一些。如果你需要覆盖多个地区，每个地区需要一台 VPS，成本按地区数量线性增长。</p><p>如果使用中转架构（国内服务器中转到境外 VPS），还需要额外租用一台国内服务器，成本会进一步增加。</p><p>总体来说，自建覆盖 2-3 个地区的成本大约在 $10-30&#x2F;月，折合人民币约 ¥70-220&#x2F;月。同样的预算，使用机场可以获得更多地区的覆盖和更好的线路质量。</p><h3 id="Q-有没有”终身套餐”值得买？"><a href="#Q-有没有”终身套餐”值得买？" class="headerlink" title="Q: 有没有”终身套餐”值得买？"></a>Q: 有没有”终身套餐”值得买？</h3><p>极不推荐。没有任何机场能保证”终身”运营。在一个没有法律保障的灰色行业中，”终身”这个承诺本身就不可信。</p><p>推出终身套餐通常意味着两种情况：要么运营者准备快速回款然后跑路，要么是运营初期急需资金但低估了长期运营成本。前者是骗局，后者也很可能在几个月到一两年内因为入不敷出而关闭。</p><p>无论价格多么诱人，终身套餐的预期价值几乎肯定是负的。把同样的钱用来月付一个靠谱的机场，你能获得更长时间的稳定服务。</p><h3 id="Q-选机场时最重要的因素是什么？"><a href="#Q-选机场时最重要的因素是什么？" class="headerlink" title="Q: 选机场时最重要的因素是什么？"></a>Q: 选机场时最重要的因素是什么？</h3><p>排序如下：</p><ol><li><strong>运营稳定性</strong>：运营时间长、没有重大事故、敏感时期表现稳定</li><li><strong>线路质量</strong>：晚高峰速度、延迟、丢包率</li><li><strong>协议安全性</strong>：使用现代协议（VLESS+Reality、Trojan），避免裸 VMess</li><li><strong>性价比</strong>：在满足以上条件的前提下，选择价格合理的</li><li><strong>客服响应</strong>：出问题时能及时获得帮助</li></ol><p>价格不应该是第一考虑因素。一个便宜但不稳定的机场，你花在排查问题上的时间成本远超节省的那点费用。</p><h3 id="Q-多个机场订阅会互相冲突吗？"><a href="#Q-多个机场订阅会互相冲突吗？" class="headerlink" title="Q: 多个机场订阅会互相冲突吗？"></a>Q: 多个机场订阅会互相冲突吗？</h3><p>不会。Clash 系列客户端（<a href="https://github.com/clash-verge-rev/clash-verge-rev">Clash Verge Rev</a>、mihomo 等）和其他现代客户端都支持同时管理多个订阅。每个订阅的节点会被分别列出，你可以在策略组中自由组合来自不同订阅的节点。</p><p>唯一需要注意的是合理组织策略组——不要把所有节点混在一个组里，按照用途（日常、流媒体、AI 服务等）或地区分组会更方便管理。</p><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>做出正确的决策不需要完美的信息，只需要一个合理的框架和一些关键原则：</p><ol><li><strong>先搞清楚自己的需求</strong>：技术能力、隐私需求、预算、使用场景——这些因素决定了你应该倾向自建还是机场</li><li><strong>新服务永远先月付</strong>：用真金白银的试用来验证质量，而不是相信别人的推荐</li><li><strong>保持备用方案</strong>：无论你的主力方案有多稳定，都要有 Plan B</li><li><strong>长期付费需要长期信任</strong>：年付只适合你已经深入了解和长期使用的机场</li><li><strong>总成本 &#x3D; 资金 + 时间</strong>：自建看似便宜，但运维的时间成本不可忽视；机场看似贵，但省下的时间和精力也有价值</li></ol><p>记住，没有完美的方案，只有适合你当前情况的方案。你的需求和条件会随时间变化，定期重新评估你的代理方案是明智的做法。</p>]]>
    </content>
    <id>https://blog.e.show/posts/decision-framework/</id>
    <link href="https://blog.e.show/posts/decision-framework/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>自建和机场各有优劣，月付和年付各有风险。一套决策框架帮你做出适合自己的选择。</summary>
    <title>月付 vs 年付、自建 vs 机场：决策框架</title>
    <updated>2026-05-11T21:40:36.948Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="DNS 专题" scheme="https://blog.e.show/categories/DNS-%E4%B8%93%E9%A2%98/"/>
    <category term="CDN" scheme="https://blog.e.show/tags/CDN/"/>
    <category term="DNS" scheme="https://blog.e.show/tags/DNS/"/>
    <category term="基础" scheme="https://blog.e.show/tags/%E5%9F%BA%E7%A1%80/"/>
    <category term="DNS污染" scheme="https://blog.e.show/tags/DNS%E6%B1%A1%E6%9F%93/"/>
    <category term="代理" scheme="https://blog.e.show/tags/%E4%BB%A3%E7%90%86/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>: DNS 是互联网的”电话簿”，将域名翻译成 IP 地址。在使用代理时，DNS 解析的正确性直接决定了你能不能打开网站、会不会泄漏隐私、国内网站会不会变慢。本文从基础讲起，解释 DNS 在代理场景中的特殊性和常见问题。</p></blockquote><hr><h2 id="DNS-是什么"><a href="#DNS-是什么" class="headerlink" title="DNS 是什么"></a>DNS 是什么</h2><p>DNS（Domain Name System，域名系统）是互联网最基础的服务之一。它的作用只有一个：<strong>把人类能记住的域名翻译成计算机能理解的 IP 地址</strong>。</p><p>没有 DNS，你上网时需要记住的不是 <code>google.com</code>，而是 <code>142.250.80.14</code>；不是 <code>baidu.com</code>，而是 <code>39.156.66.10</code>。全球有数十亿个网站，靠记 IP 地址访问显然不现实。DNS 就是那个帮你查号码的电话簿。</p><p>DNS 的核心概念很简单：</p><ul><li><strong>域名</strong>：人类可读的网站地址，如 <code>google.com</code>、<code>github.com</code>。</li><li><strong>IP 地址</strong>：服务器的真实网络地址，如 <code>142.250.80.14</code>。</li><li><strong>DNS 服务器</strong>：负责翻译域名和 IP 的服务器。你的电脑每次访问网站，都要先问 DNS 服务器”这个域名对应哪个 IP”。</li><li><strong>默认 DNS</strong>：你连上网络后，运营商（ISP）会自动给你分配一个 DNS 服务器地址。大多数人从未手动配置过 DNS，用的就是运营商默认提供的。</li></ul><p>DNS 服务器分两种角色：</p><ul><li><strong>递归 DNS 服务器</strong>：你的设备直接询问的对象。它收到你的查询后，如果自己不知道答案，会代替你去逐级查询，最终返回结果。运营商的 DNS、阿里 DNS（223.5.5.5）、Google DNS（8.8.8.8）都属于这种。</li><li><strong>权威 DNS 服务器</strong>：某个域名的”官方”记录持有者。比如 <code>google.com</code> 的权威 DNS 由 Google 运营，只有它才能给出 <code>google.com</code> 的最终 IP 地址。</li></ul><p>普通用户不需要关心权威 DNS，只需要知道：你的设备会把域名发给一个递归 DNS 服务器，它负责帮你找到答案。</p><hr><h2 id="DNS-解析过程（简化版）"><a href="#DNS-解析过程（简化版）" class="headerlink" title="DNS 解析过程（简化版）"></a>DNS 解析过程（简化版）</h2><p>以你在浏览器中输入 <code>google.com</code> 为例，整个 DNS 解析过程如下：</p><p><strong>第一步：浏览器发起请求。</strong> 你在地址栏输入 <code>google.com</code> 并回车，浏览器需要知道这个域名对应的 IP 地址。</p><p><strong>第二步：浏览器询问操作系统。</strong> 浏览器不会自己去查 DNS，而是调用操作系统的网络接口，问”google.com 的 IP 是多少？”</p><p><strong>第三步：操作系统检查本地缓存。</strong> 如果你最近刚访问过 <code>google.com</code>，操作系统可能已经缓存了结果，直接返回 IP，不需要再查一次。</p><p><strong>第四步：缓存未命中，询问 DNS 服务器。</strong> 本地没有缓存，操作系统就把查询请求发送到配置的 DNS 服务器地址。默认情况下，这个地址是运营商自动分配的。</p><p><strong>第五步：DNS 服务器逐级查询。</strong> 递归 DNS 服务器收到请求后，先检查自己的缓存。如果没有，它会按照层级依次查询：先问根域名服务器（root）”<code>.com</code> 在哪”，再问 <code>.com</code> 的服务器”<code>google.com</code> 的权威 DNS 在哪”，最后问 <code>google.com</code> 的权威 DNS”IP 是多少”。</p><p><strong>第六步：返回 IP 地址。</strong> DNS 服务器拿到答案后，把 IP 地址返回给你的操作系统。操作系统再把结果交给浏览器，同时缓存这个结果以备下次使用。</p><p><strong>第七步：浏览器连接目标服务器。</strong> 拿到 IP 地址后，浏览器直接向这个 IP 发起 HTTP&#x2F;HTTPS 连接，网页内容开始加载。</p><p>整个过程通常在几十毫秒内完成。看起来简单直接，但在代理场景下，几乎每一步都可能出问题。</p><p><img src="/images/inline/dns-resolution-flow.png" alt="DNS 解析流程图"><br><em>图片来源：<a href="https://www.indusface.com/">Indusface</a></em></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">graph LR</span><br><span class="line">    A[你的设备] --&gt;|DNS查询| B[ISP DNS]</span><br><span class="line">    B --&gt;|被污染| C[❌ 错误IP]</span><br><span class="line">    A --&gt;|使用代理| D[代理客户端]</span><br><span class="line">    D --&gt;|国内域名| E[国内 DoH]</span><br><span class="line">    E --&gt; F[✅ 正确CDN]</span><br><span class="line">    D --&gt;|国外域名| G[远端解析]</span><br><span class="line">    G --&gt; H[✅ 真实IP]</span><br></pre></td></tr></table></figure><hr><h2 id="为什么代理场景下-DNS-特别复杂"><a href="#为什么代理场景下-DNS-特别复杂" class="headerlink" title="为什么代理场景下 DNS 特别复杂"></a>为什么代理场景下 DNS 特别复杂</h2><p>在不使用代理的正常网络环境中，DNS 解析很少出问题——你的设备问运营商的 DNS 服务器，得到正确的 IP，连接成功。但一旦涉及代理，DNS 就变成了最容易出问题的环节。原因有四个。</p><h3 id="问题一：DNS-污染"><a href="#问题一：DNS-污染" class="headerlink" title="问题一：DNS 污染"></a>问题一：DNS 污染</h3><p>DNS 污染（DNS Poisoning &#x2F; DNS Spoofing）是中国大陆网络环境中最核心的 DNS 问题。</p><p>原理很简单：当你向 DNS 服务器查询被封锁域名（如 <code>google.com</code>）的 IP 时，GFW 会抢在真正的 DNS 服务器返回结果之前，注入一个伪造的响应。这个伪造响应里的 IP 地址是错误的——可能是 <code>127.0.0.1</code>（本机）、一些随机的无关 IP，或者干脆不返回任何结果。</p><p>关键在于：<strong>DNS 污染发生在代理介入之前</strong>。</p><p>传统的 DNS 查询使用 UDP 协议的 53 端口，内容完全明文，没有任何加密或验证机制。GFW 对这个端口的监控和劫持是全面的。即使你的代理服务器完全正常、线路通畅，只要 DNS 解析这一步拿到了错误的 IP，后面的连接就不可能成功。</p><p>具体表现：</p><ul><li><code>google.com</code> 被解析到 <code>127.0.0.1</code> 或无效 IP → 浏览器显示”无法连接”</li><li><code>google.com</code> 被解析到某个国内 IP → 连接超时或显示错误页面</li><li>DNS 查询直接超时无响应</li></ul><p>这就是为什么仅仅开了代理，有时候还是打不开网站——DNS 污染在更早的阶段就把路堵死了。</p><h3 id="问题二：DNS-泄漏"><a href="#问题二：DNS-泄漏" class="headerlink" title="问题二：DNS 泄漏"></a>问题二：DNS 泄漏</h3><p>DNS 泄漏（DNS Leak）指的是：你以为自己在使用代理上网，实际上 DNS 查询仍然走的是本地网络，直接发送到运营商的 DNS 服务器。</p><p>这意味着什么？即使你的网页数据通过代理传输、运营商看不到你访问的内容，但 DNS 查询暴露了你访问的目标域名。运营商的日志里会清楚地记录：这个用户在某时某刻查询了 <code>google.com</code>、<code>twitter.com</code>、<code>youtube.com</code> 的 IP。</p><p>DNS 泄漏的常见原因：</p><ul><li><strong>系统代理模式</strong>：大多数系统代理只接管 HTTP&#x2F;HTTPS 流量，DNS 查询走的是操作系统的网络栈，不经过代理。</li><li><strong>TUN 模式未正确配置</strong>：TUN 模式理论上接管所有网络流量，但如果 DNS 设置不当，查询可能仍然走漏。</li><li><strong>应用绕过代理</strong>：某些应用程序（特别是系统级服务）可能不遵守系统代理设置，直接发起 DNS 查询。</li><li><strong>IPv6 泄漏</strong>：代理只配置了 IPv4，IPv6 的 DNS 查询从旁路走掉了。</li></ul><p>DNS 泄漏不影响功能（网站能打开），但对隐私构成威胁。如果你在意隐私，必须确保 DNS 查询也经过代理通道。</p><h3 id="问题三：CDN-定位错误"><a href="#问题三：CDN-定位错误" class="headerlink" title="问题三：CDN 定位错误"></a>问题三：CDN 定位错误</h3><p>这是很多人忽略的问题，但它直接影响网速。</p><p>大型网站（B站、淘宝、Netflix 等）使用 CDN（内容分发网络）在全球部署了大量服务器节点。当你查询这些域名的 IP 时，CDN 的 DNS 会根据你的 DNS 服务器位置来判断你在哪，然后返回离你最近的节点 IP。</p><p>问题来了：</p><ul><li><strong>国内域名用了海外 DNS 解析</strong>：你用 <code>8.8.8.8</code>（Google DNS）查询 <code>bilibili.com</code>，CDN 认为你在美国，返回美国节点 IP。结果你一个在北京的用户，访问 B 站的流量绕了一圈太平洋，速度断崖式下降。</li><li><strong>国外域名用了国内 DNS 解析</strong>：你用运营商 DNS 查询 <code>google.com</code>，得到的是被污染的结果，根本连不上。</li></ul><p>这就引出了代理场景下 DNS 的核心原则：<strong>国内域名用国内 DNS 解析，国外域名通过代理在远端解析。</strong></p><p>分流做不好，要么国内网站变慢，要么国外网站打不开。两头不讨好。</p><h3 id="问题四：先有鸡还是先有蛋"><a href="#问题四：先有鸡还是先有蛋" class="headerlink" title="问题四：先有鸡还是先有蛋"></a>问题四：先有鸡还是先有蛋</h3><p>还有一个容易被忽视的循环依赖问题：</p><p>代理客户端需要连接代理服务器。要连接代理服务器，首先要知道代理服务器的 IP。如果你的代理配置用的是域名（比如 <code>hk.example.com</code>），客户端就需要先做一次 DNS 解析。</p><p>但 DNS 查询本身就可能被污染。</p><p>如果你的代理服务器域名被 GFW 污染了，代理客户端连代理服务器都连不上——DNS 解析失败 → 拿不到正确的服务器 IP → 代理建立不了 → 所有流量都不通。</p><p>解决方法：</p><ul><li>代理服务器配置直接使用 IP 地址而非域名</li><li>使用 DoH（DNS over HTTPS）来解析代理服务器的域名，绕过 UDP 53 端口的劫持</li><li>在 hosts 文件中手动写入代理服务器域名的正确 IP</li></ul><hr><h2 id="代理客户端如何处理-DNS"><a href="#代理客户端如何处理-DNS" class="headerlink" title="代理客户端如何处理 DNS"></a>代理客户端如何处理 DNS</h2><p>理解了上面的四个问题，就能理解为什么代理客户端需要自己接管 DNS 处理，而不是交给操作系统。主流代理客户端（Clash、sing-box 等）采用以下几种方式处理 DNS。</p><h3 id="Fake-IP-模式（主流方案）"><a href="#Fake-IP-模式（主流方案）" class="headerlink" title="Fake-IP 模式（主流方案）"></a>Fake-IP 模式（主流方案）</h3><p>Fake-IP 是目前最主流、推荐度最高的 DNS 处理方式。</p><p>核心思路：<strong>不做真正的 DNS 解析，而是直接返回一个假 IP，先把连接拦截下来。</strong></p><p>工作流程：</p><ol><li>浏览器要访问 <code>google.com</code>，向系统发起 DNS 查询。</li><li>代理客户端拦截这个查询，不去问任何真实 DNS 服务器。</li><li>代理客户端从自己维护的一个假 IP 池（通常是 <code>198.18.0.0/16</code>）中分配一个 IP，比如 <code>198.18.0.1</code>，并记录下”198.18.0.1 &#x3D; google.com”的映射。</li><li>浏览器拿到 <code>198.18.0.1</code>，向这个 IP 发起连接。</li><li>代理客户端拦截这个连接，通过映射表查到目标是 <code>google.com</code>，然后根据分流规则决定：走代理还是直连？</li><li>如果走代理：把域名 <code>google.com</code> 发给远端代理服务器，由远端进行真正的 DNS 解析和连接。</li><li>如果直连：使用国内 DNS（如阿里 DNS）进行真正的解析，拿到正确的国内 CDN IP，直接连接。</li></ol><p>Fake-IP 的优势：</p><ul><li><strong>彻底避免 DNS 污染</strong>：外网域名的真实 DNS 解析在远端完成，本地根本不查询，也就不存在被污染的可能。</li><li><strong>CDN 定位准确</strong>：国内域名由国内 DNS 解析，CDN 定位正确；国外域名由代理节点所在地的 DNS 解析，CDN 定位也正确。</li><li><strong>速度快</strong>：省去了本地 DNS 查询的等待时间，首次连接速度更快。</li></ul><p>Fake-IP 的详细原理和配置参见 <a href="/posts/fake-ip-vs-redir-host/">Fake-IP 与 Redir-Host 的区别</a>。</p><h3 id="Redir-Host-模式"><a href="#Redir-Host-模式" class="headerlink" title="Redir-Host 模式"></a>Redir-Host 模式</h3><p>Redir-Host 是更传统的 DNS 处理方式。它的逻辑是先进行真正的 DNS 解析，拿到真实 IP，然后根据 IP 或域名决定路由。</p><p>流程：</p><ol><li>浏览器查询 <code>google.com</code>，代理客户端拦截。</li><li>代理客户端同时向国内 DNS 和国外 DNS 发起查询。</li><li>根据返回结果判断域名归属，选择合适的 IP 返回给浏览器。</li><li>浏览器连接该 IP，代理客户端再根据连接目标决定是否走代理。</li></ol><p>Redir-Host 的问题：</p><ul><li>DNS 查询仍然在本地发生，外网域名可能被污染。</li><li>需要同时配置国内和国外 DNS，逻辑更复杂。</li><li>如果 DNS 结果不准确，分流判断就会出错。</li></ul><p>目前 Redir-Host 已不是推荐方案。如果你的客户端支持 Fake-IP，优先使用 Fake-IP。</p><h3 id="远端解析"><a href="#远端解析" class="headerlink" title="远端解析"></a>远端解析</h3><p>远端解析指的是 DNS 查询完全在代理服务器端完成，本地不做任何解析。</p><p>这种方式隐私性最好——本地网络上完全看不到任何 DNS 查询。但缺点是所有域名（包括国内域名）都通过代理解析，国内网站的 CDN 定位可能不准确，导致速度下降。</p><p>实际使用中，远端解析通常和 Fake-IP 结合：外网域名远端解析，国内域名本地解析。这是目前最合理的组合方案。</p><hr><h2 id="常用-DNS-服务器"><a href="#常用-DNS-服务器" class="headerlink" title="常用 DNS 服务器"></a>常用 DNS 服务器</h2><p>选择合适的 DNS 服务器是配置代理 DNS 的第一步。以下是国内外常用的 DNS 服务。</p><h3 id="国内-DNS"><a href="#国内-DNS" class="headerlink" title="国内 DNS"></a>国内 DNS</h3><table><thead><tr><th>DNS 服务</th><th>IP 地址</th><th>DoH 地址</th><th>特点</th></tr></thead><tbody><tr><td><a href="https://alidns.com/">阿里 DNS</a></td><td><code>223.5.5.5</code></td><td><code>https://dns.alidns.com/dns-query</code></td><td>速度快，覆盖广，支持 DoH&#x2F;DoT</td></tr><tr><td><a href="https://www.dnspod.cn/">腾讯 DNS</a></td><td><code>119.29.29.29</code></td><td><code>https://doh.pub/dns-query</code></td><td>稳定可靠，支持 DoH</td></tr><tr><td>114 DNS</td><td><code>114.114.114.114</code></td><td>无</td><td>老牌 DNS，不支持 DoH</td></tr></tbody></table><p>国内 DNS 用于解析国内域名。推荐阿里 DNS 或腾讯 DNS，因为它们支持 DoH，可以防止查询被篡改。114 DNS 不支持加密查询，不推荐作为首选。</p><h3 id="国际-DNS"><a href="#国际-DNS" class="headerlink" title="国际 DNS"></a>国际 DNS</h3><table><thead><tr><th>DNS 服务</th><th>IP 地址</th><th>DoH 地址</th><th>特点</th></tr></thead><tbody><tr><td><a href="https://developers.cloudflare.com/1.1.1.1/">Cloudflare</a></td><td><code>1.1.1.1</code></td><td><code>https://cloudflare-dns.com/dns-query</code></td><td>全球响应速度最快</td></tr><tr><td>Google</td><td><code>8.8.8.8</code></td><td><code>https://dns.google/dns-query</code></td><td>最知名，稳定性高</td></tr><tr><td>Quad9</td><td><code>9.9.9.9</code></td><td><code>https://dns.quad9.net/dns-query</code></td><td>注重安全，自动拦截恶意域名</td></tr></tbody></table><p><strong>重要提示</strong>：国际 DNS 在中国大陆通常无法直接使用。UDP 53 端口发往 <code>8.8.8.8</code> 或 <code>1.1.1.1</code> 的查询会被劫持或丢弃。但通过代理访问时，这些 DNS 可以正常使用。在代理客户端配置中，国际 DNS 通常不需要手动配置——外网域名通过代理远端解析时，代理节点所在地可以正常访问这些 DNS。</p><hr><h2 id="什么是-DNS-over-HTTPS-DoH"><a href="#什么是-DNS-over-HTTPS-DoH" class="headerlink" title="什么是 DNS over HTTPS (DoH)"></a>什么是 DNS over HTTPS (DoH)</h2><p>传统 DNS 查询使用 UDP 协议、53 端口，内容完全明文。这意味着：</p><ul><li>任何中间设备都能看到你查了什么域名</li><li>任何中间设备都能篡改 DNS 响应（DNS 污染的技术基础）</li><li>运营商可以完整记录你的 DNS 查询日志</li></ul><p>DoH（DNS over HTTPS）把 DNS 查询封装在 HTTPS 协议里传输。HTTPS 是加密的，这带来两个好处：</p><ol><li><strong>防窃听</strong>：中间设备无法看到你查询的域名。</li><li><strong>防篡改</strong>：中间设备无法伪造 DNS 响应，因为 HTTPS 有完整的证书验证机制。</li></ol><p>在代理场景中，DoH 的作用主要体现在<strong>国内 DNS 查询</strong>上。对于国内域名（如 <code>baidu.com</code>、<code>bilibili.com</code>），你需要使用国内 DNS 服务器来获得正确的 CDN IP。如果这些查询使用明文 DNS，理论上仍然存在被篡改的可能。使用 DoH（如 <code>https://dns.alidns.com/dns-query</code>），可以确保即使是国内域名的 DNS 查询也不被篡改。</p><p>关于加密 DNS 的各类方案对比，参见 <a href="/posts/encrypted-dns/">加密 DNS 全解</a>。DoH 不是万能的。如果 DoH 服务器本身返回了错误结果（比如国内 DNS 对被墙域名返回的就是错误 IP），DoH 只能保证传输过程不被篡改，不能修正服务器本身的回答。所以，被墙的域名仍然需要通过代理远端解析。</p><hr><h2 id="推荐配置原则"><a href="#推荐配置原则" class="headerlink" title="推荐配置原则"></a>推荐配置原则</h2><p>根据以上分析，代理场景下的 DNS 配置应遵循以下原则：</p><p><strong>第一，使用国内 DNS 作为代理客户端的主要 DNS 服务器。</strong> 推荐阿里 DNS（<code>223.5.5.5</code>）或腾讯 DNS（<code>119.29.29.29</code>）。这个 DNS 服务器负责解析国内域名，确保 CDN 定位正确、访问速度正常。</p><p><strong>第二，外网域名交给代理远端解析。</strong> 不要试图在本地解析 <code>google.com</code>、<code>youtube.com</code> 等被墙域名。让代理客户端把域名传给代理节点，由节点在海外完成 DNS 解析。</p><p><strong>第三，优先使用 Fake-IP 模式。</strong> 如果你的代理客户端支持 Fake-IP（Clash、Clash Verge、sing-box 等都支持），启用它。Fake-IP 从根本上解决了 DNS 污染和泄漏问题，是目前最省心的方案。</p><p><strong>第四，国内 DNS 尽量使用 DoH。</strong> 把国内 DNS 地址配置为 DoH 格式（如 <code>https://dns.alidns.com/dns-query</code>），而不是裸 IP（<code>223.5.5.5</code>）。这样可以防止国内 DNS 查询被中间环节篡改。</p><p><strong>第五，不要在本地直接使用国际 DNS。</strong> 不要把系统 DNS 设置为 <code>8.8.8.8</code> 或 <code>1.1.1.1</code>。在中国大陆网络环境下，直接使用这些 DNS 的 UDP 53 端口查询会被劫持。即使使用 DoH 访问这些国际 DNS，国内域名也会因为 CDN 定位错误而变慢。</p><hr><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><p><strong>Q：我需要手动配置 DNS 吗？</strong></p><p>取决于你的使用方式。如果你使用 Clash Verge、mihomo 等客户端并开启了 TUN 模式或系统代理，客户端会接管 DNS 处理。但你仍然需要确认客户端的 DNS 配置是正确的——错误的 DNS 配置是代理场景中最常见的问题来源。很多”代理开了但打不开网站”的情况，根本原因是 DNS 配置不当。</p><p><strong>Q：为什么不能全部用 8.8.8.8？</strong></p><p>两个原因。第一，在中国大陆直接访问 <code>8.8.8.8</code> 的 UDP 53 端口，你的 DNS 查询会被 GFW 劫持，返回的结果不可信。第二，即使你通过 DoH 成功访问了 <code>8.8.8.8</code>，当你查询国内域名（如 <code>taobao.com</code>）时，Google DNS 会认为你在美国，返回美国 CDN 节点的 IP。你的淘宝流量会绕到美国再回来，速度大幅下降。所以必须国内域名用国内 DNS、国外域名远端解析。</p><p><strong>Q：DNS 和代理协议有关系吗？</strong></p><p>DNS 是独立于代理协议的。无论你用的是 VLESS、VMess、Trojan 还是 Hysteria，DNS 配置的原则完全相同。代理协议决定的是”数据怎么传输”，DNS 决定的是”目标服务器在哪里”。它们是两个独立的问题。</p><p><strong>Q：什么是 DNS over HTTPS (DoH)？</strong></p><p>DoH 把 DNS 查询封装在 HTTPS 请求中进行传输。传统的 DNS 查询使用 UDP 明文传输，中间人可以轻松窃听和篡改。DoH 利用 HTTPS 的加密和证书验证，使得 DNS 查询内容既无法被窥探，也无法被篡改。在代理场景中，DoH 是防止国内 DNS 查询被劫持的重要手段。</p><p><strong>Q：Fake-IP 模式会影响国内网站的速度吗？</strong></p><p>不会。Fake-IP 模式下，代理客户端对国内域名（匹配直连规则的域名）仍然使用国内 DNS 进行真实解析。只有匹配代理规则的域名才会走远端解析。所以国内网站的 CDN 定位不受影响，速度和不使用代理时相同。</p><p><strong>Q：我用了代理但 DNS 测试显示泄漏（可通过 <a href="https://dnsleaktest.com/">dnsleaktest.com</a> 检测），怎么办？</strong></p><p>检查以下几点：一、确认代理客户端是否开启了 TUN 模式（系统代理模式下 DNS 泄漏几乎不可避免，详见 <a href="/posts/dns-leak/">DNS 泄漏检测与修复</a>）；二、确认代理客户端的 DNS 设置中启用了 Fake-IP；三、检查是否存在 IPv6 泄漏——如果你的网络有 IPv6，但代理客户端只处理了 IPv4，DNS 查询可能通过 IPv6 走漏。可以在代理客户端中禁用 IPv6，或确保 TUN 模式同时接管 IPv4 和 IPv6。</p>]]>
    </content>
    <id>https://blog.e.show/posts/dns-basics-for-proxy/</id>
    <link href="https://blog.e.show/posts/dns-basics-for-proxy/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>DNS 是互联网的电话簿。在代理场景中，DNS 解析的正确性直接决定上网体验。</summary>
    <title>DNS 基础：为什么代理和 DNS 总是一起出问题</title>
    <updated>2026-05-11T21:40:36.948Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="DNS 专题" scheme="https://blog.e.show/categories/DNS-%E4%B8%93%E9%A2%98/"/>
    <category term="Clash" scheme="https://blog.e.show/tags/Clash/"/>
    <category term="配置" scheme="https://blog.e.show/tags/%E9%85%8D%E7%BD%AE/"/>
    <category term="DNS" scheme="https://blog.e.show/tags/DNS/"/>
    <category term="Surge" scheme="https://blog.e.show/tags/Surge/"/>
    <category term="Shadowrocket" scheme="https://blog.e.show/tags/Shadowrocket/"/>
    <category term="最佳实践" scheme="https://blog.e.show/tags/%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：DNS 配置是科学上网中最容易出错、也最影响体验的环节。配置不当会导致 DNS 泄漏（暴露访问意图）、解析失败（网页打不开）、或国内网站变慢（走了错误的 CDN 节点）。本文给出各主流客户端的推荐 DNS 配置，并解释每个参数背后的原理。</p></blockquote><hr><h2 id="先理解问题：为什么-DNS-这么麻烦"><a href="#先理解问题：为什么-DNS-这么麻烦" class="headerlink" title="先理解问题：为什么 DNS 这么麻烦"></a>先理解问题：为什么 DNS 这么麻烦</h2><p>使用代理时，DNS 解析存在一个根本矛盾：</p><ul><li><strong>国内域名</strong>需要用国内 DNS 解析，才能获得最近的 CDN 节点</li><li><strong>国外域名</strong>不能用国内 DNS 解析，否则会被污染（返回错误 IP）</li><li><strong>代理客户端</strong>需要判断一个域名走直连还是走代理，但判断本身可能依赖 DNS 结果</li></ul><p>举一个具体的例子来理解这个矛盾。假设你访问 <code>google.com</code>：</p><ol><li>系统需要先把 <code>google.com</code> 解析为 IP 地址</li><li>如果用国内 DNS（比如 114.114.114.114）去解析，GFW 会返回一个被污染的假 IP</li><li>代理客户端拿到这个假 IP，可能无法正确判断它应该走代理</li><li>即使判断对了，这个假 IP 也无法真正建立连接</li></ol><p>反过来，如果所有域名都用海外 DNS 解析：</p><ol><li><code>taobao.com</code> 这样的国内域名也会去海外 DNS 查询</li><li>返回的 CDN 节点可能是美国或香港的服务器</li><li>你直连访问这个海外节点，速度自然很慢</li></ol><p>这个三角矛盾是所有 DNS 配置复杂性的根源。而 Fake-IP 模式的出现，正是为了从根本上解决这个矛盾。</p><hr><h2 id="Fake-IP-vs-Redir-Host"><a href="#Fake-IP-vs-Redir-Host" class="headerlink" title="Fake-IP vs Redir-Host"></a>Fake-IP vs Redir-Host</h2><p>理解这两种模式是配置 DNS 的前提。</p><h3 id="Fake-IP-模式（推荐）"><a href="#Fake-IP-模式（推荐）" class="headerlink" title="Fake-IP 模式（推荐）"></a>Fake-IP 模式（推荐）</h3><p><strong>工作原理</strong>：</p><p>Fake-IP 的核心思路是：<strong>先不做真正的 DNS 解析，而是立即返回一个假的 IP 地址，等确定了路由策略后再做真实解析</strong>。具体流程如下：</p><ol><li><strong>拦截 DNS 请求</strong>：当应用程序（比如浏览器）请求解析 <code>google.com</code> 时，代理客户端的内置 DNS 服务器会拦截这个请求</li><li><strong>立即返回假 IP</strong>：客户端不会去查询任何上游 DNS，而是从一个预设的 IP 段（通常是 <code>198.18.0.0/16</code>）中分配一个假 IP 返回给应用。比如返回 <code>198.18.0.5</code></li><li><strong>应用发起连接</strong>：浏览器拿到 <code>198.18.0.5</code> 后，向这个地址发起 TCP 连接。由于代理客户端在 TUN 层或系统代理层会拦截所有流量，这个连接会被客户端捕获</li><li><strong>反查原始域名</strong>：客户端维护了一张 Fake-IP 到域名的映射表，通过 <code>198.18.0.5</code> 反查出原始域名 <code>google.com</code></li><li><strong>匹配分流规则</strong>：拿到域名后，客户端根据规则列表判断 <code>google.com</code> 应该走代理还是直连</li><li><strong>走代理的域名</strong>：客户端把域名（而非 IP）发送给远端代理节点，由节点在当地做真实 DNS 解析并建立连接。这样解析出的 IP 是距离节点最近的 CDN 地址，延迟最低</li><li><strong>走直连的域名</strong>：客户端在本地用配置的国内 DNS（如腾讯 DoH、阿里 DoH）做真实解析，拿到正确的国内 CDN 节点 IP，然后直连</li></ol><p><strong>优势</strong>：</p><ul><li><strong>解析速度快</strong>：DNS 请求在本地立即返回，不需要等待任何上游 DNS 的网络往返，应用几乎感受不到 DNS 延迟</li><li><strong>彻底避免 DNS 泄漏</strong>：走代理的域名，其真实 DNS 解析发生在远端节点，国内 DNS 服务器完全看不到你访问了哪些国外域名</li><li><strong>规则匹配准确</strong>：分流判断基于域名（<code>google.com</code>），而非 IP 地址。域名匹配不会受到 DNS 污染的影响，规则命中率高</li><li><strong>避免 DNS 污染影响</strong>：由于走代理的域名根本不在本地做 DNS 解析，GFW 的 DNS 污染完全不起作用</li></ul><p><strong>注意事项</strong>：</p><ul><li><strong>Fake-IP 缓存问题</strong>：部分应用（尤其是一些游戏和即时通讯软件）可能会缓存之前获得的 Fake-IP（如 <code>198.18.x.x</code>）。当你关闭代理后，应用仍然尝试连接这个不存在的假 IP，导致连接失败。解决方法是关闭代理后重启相关应用，或者清除系统 DNS 缓存（Windows 下执行 <code>ipconfig /flushdns</code>）</li><li><strong>fake-ip-filter 配置</strong>：某些服务不能使用 Fake-IP，必须返回真实 IP 才能正常工作。常见的包括：<ul><li><strong>局域网设备发现</strong>：如 mDNS、SSDP 等协议依赖真实 IP 进行设备发现（<code>*.local</code>、<code>*.lan</code>）</li><li><strong>NTP 时间同步</strong>：时间同步服务需要真实的服务器 IP（<code>time.*.com</code>、<code>ntp.*.com</code>）</li><li><strong>Windows 网络连接检测</strong>：Windows 会通过特定域名检测网络是否可用（<code>*.msftconnecttest.com</code>）</li><li><strong>STUN 协议</strong>：WebRTC 等需要 STUN 服务器的场景需要真实 IP（<code>+.stun.*.*</code>）</li></ul></li></ul><h3 id="Redir-Host-模式"><a href="#Redir-Host-模式" class="headerlink" title="Redir-Host 模式"></a>Redir-Host 模式</h3><p><strong>工作原理</strong>：</p><p>与 Fake-IP 不同，Redir-Host 模式下客户端会真正执行 DNS 解析：</p><ol><li>客户端拦截到 DNS 请求后，会向上游 DNS 服务器发起真实查询</li><li>拿到真实 IP 后，代理客户端用这个 IP 来匹配分流规则（比如通过 GeoIP 判断 IP 归属地）</li><li>根据匹配结果决定走代理还是直连</li></ol><p><strong>问题</strong>：</p><ul><li><strong>DNS 污染导致误判</strong>：如果用国内 DNS 解析 <code>google.com</code>，得到的是被 GFW 污染的假 IP（通常指向不存在的地址或国内的某个 IP）。代理客户端拿到这个假 IP，可能错误地判断为”国内 IP → 直连”，导致无法访问</li><li><strong>需要复杂的 fallback 配置</strong>：为了解决污染问题，Redir-Host 模式需要配置 fallback DNS（通常是海外 DNS），当主 DNS 返回的结果被判定为可疑时，使用 fallback 的结果。这套机制（fallback + fallback-filter + geoip 判断）配置复杂且容易出错</li><li><strong>解析延迟更高</strong>：每次 DNS 请求都需要等待真实解析完成，如果配置了 fallback，还可能触发并行查询，进一步增加延迟</li><li><strong>存在 DNS 泄漏风险</strong>：即使走代理的域名，其 DNS 查询也发生在本地，国内 DNS 服务器能看到你在查询 <code>google.com</code></li></ul><p><strong>结论</strong>：除非有特殊需求（比如某些必须依赖真实 IP 进行分流的场景），2026 年应该统一使用 Fake-IP 模式。Fake-IP 在速度、安全性和配置简便性上全面优于 Redir-Host。</p><hr><h2 id="Clash-Meta-Clash-Verge-配置"><a href="#Clash-Meta-Clash-Verge-配置" class="headerlink" title="Clash Meta &#x2F; Clash Verge 配置"></a>Clash Meta &#x2F; Clash Verge 配置</h2><p>Clash Meta（<a href="https://github.com/MetaCubeX/mihomo">mihomo</a> 内核）是目前桌面端使用最广泛的代理客户端之一，<a href="https://github.com/clash-verge-rev/clash-verge-rev">Clash Verge Rev</a> 则是其最流行的图形界面。下面是推荐的 DNS 配置。</p><h3 id="推荐配置"><a href="#推荐配置" class="headerlink" title="推荐配置"></a>推荐配置</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">listen:</span> <span class="number">0.0</span><span class="number">.0</span><span class="number">.0</span><span class="string">:1053</span></span><br><span class="line">  <span class="attr">ipv6:</span> <span class="literal">false</span>  <span class="comment"># 除非你的网络完整支持 IPv6，否则建议关闭</span></span><br><span class="line">  <span class="attr">enhanced-mode:</span> <span class="string">fake-ip</span></span><br><span class="line">  <span class="attr">fake-ip-range:</span> <span class="number">198.18</span><span class="number">.0</span><span class="number">.1</span><span class="string">/16</span></span><br><span class="line">  </span><br><span class="line">  <span class="comment"># ⚠️ 关键：Fake-IP 模式下只需要 nameserver，不需要 fallback</span></span><br><span class="line">  <span class="attr">nameserver:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://doh.pub/dns-query</span>        <span class="comment"># 腾讯 DoH</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://dns.alidns.com/dns-query</span>  <span class="comment"># 阿里 DoH</span></span><br><span class="line">  </span><br><span class="line">  <span class="comment"># Fake-IP 过滤：这些域名返回真实 IP</span></span><br><span class="line">  <span class="attr">fake-ip-filter:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;*.lan&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;*.local&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;*.localhost&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;dns.msftncsi.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;www.msftncsi.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;*.msftconnecttest.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;time.*.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;ntp.*.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;+.stun.*.*&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;+.stun.*.*.*&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;localhost.ptlogin2.qq.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;lens.l.google.com&#x27;</span></span><br></pre></td></tr></table></figure><p><strong>配置说明</strong>：</p><ul><li><code>listen: 0.0.0.0:1053</code>：DNS 服务监听端口。如果仅本机使用，可以改为 <code>127.0.0.1:1053</code>；如果作为局域网网关（比如软路由），则需要监听 <code>0.0.0.0</code></li><li><code>ipv6: false</code>：关闭 IPv6 DNS 解析。大多数用户的网络环境不支持完整的 IPv6 链路，开启可能导致部分连接异常或 DNS 泄漏（详见下文 IPv6 章节）</li><li><code>enhanced-mode: fake-ip</code>：使用 Fake-IP 模式，这是关键配置项</li><li><code>fake-ip-range: 198.18.0.1/16</code>：Fake-IP 分配的地址段，使用默认值即可。这是一个保留地址段，不会与实际网络冲突</li><li><code>nameserver</code>：上游 DNS 服务器。这里只需要配置国内 DNS，因为在 Fake-IP 模式下，只有直连域名才会真正触发 DNS 解析。推荐使用 DoH（DNS over HTTPS）来防止 DNS 请求被运营商劫持</li></ul><h3 id="最常见的配置错误"><a href="#最常见的配置错误" class="headerlink" title="最常见的配置错误"></a>最常见的配置错误</h3><p><strong>不要在 Fake-IP 模式下配置 fallback 和 fallback-filter。</strong></p><p>这是大陆用户遇到的<strong>最高频 DNS 配置错误</strong>，没有之一。让我详细解释为什么：</p><p><strong>错误的根源</strong>：网上大量流传的 Clash DNS 配置教程是从 Redir-Host 时代直接复制过来的。在 Redir-Host 模式下，确实需要 fallback 来解决 DNS 污染问题——当 nameserver（国内 DNS）返回被污染的结果时，用 fallback（海外 DNS）的结果来纠正。但在 Fake-IP 模式下，这套机制完全多余。</p><p><strong>为什么多余</strong>：在 Fake-IP 模式下，<code>nameserver</code> 只负责解析<strong>直连域名</strong>——也就是那些匹配了直连规则（如 <code>GEOSITE,cn,DIRECT</code>）的域名。这些域名本来就是国内域名（如 <code>baidu.com</code>、<code>taobao.com</code>），用国内 DNS 解析是正确的，根本不存在被污染的问题。走代理的域名（如 <code>google.com</code>）则根本不会触发本地 DNS 解析，它们的域名直接发送给远端代理节点处理。</p><p><strong>加了 fallback 的后果</strong>：</p><ol><li><strong>增加不必要的延迟</strong>：每次直连域名的 DNS 解析，都会同时向 nameserver 和 fallback 发起查询，然后等待 fallback-filter 的判断逻辑执行完毕。这对于本来就应该秒回的国内域名解析来说，是纯粹的性能浪费</li><li><strong>可能引发 DNS 泄漏</strong>：fallback 通常配置的是海外 DNS（如 <code>8.8.8.8</code>、<code>1.1.1.1</code>），部分国内域名的查询会被发送到这些海外 DNS，造成不必要的信息泄漏</li><li><strong>配置更复杂，更容易出错</strong>：fallback-filter 的 <code>geoip</code>、<code>geosite</code>、<code>ipcidr</code> 等过滤条件，增加了配置的复杂度和出错概率</li></ol><p><strong>正确的做法</strong>：在 Fake-IP 模式下，删掉所有 <code>fallback</code> 和 <code>fallback-filter</code> 相关配置，只保留 <code>nameserver</code>，填入可靠的国内 DNS（推荐<a href="https://www.dnspod.cn/">腾讯 DNSPod DoH</a> 或<a href="https://alidns.com/">阿里 DNS DoH</a>）。</p><hr><h2 id="Shadowrocket-配置"><a href="#Shadowrocket-配置" class="headerlink" title="Shadowrocket 配置"></a>Shadowrocket 配置</h2><p>Shadowrocket 是 iOS 平台上最主流的代理客户端之一，操作界面简洁，DNS 配置也相对简单。</p><h3 id="推荐配置-1"><a href="#推荐配置-1" class="headerlink" title="推荐配置"></a>推荐配置</h3><ol><li>打开 Shadowrocket → 设置 → DNS</li><li><strong>DNS 服务器</strong>：填入 <code>system</code>（使用系统 DNS）或手动指定国内 DNS，如 <code>https://doh.pub/dns-query</code></li><li><strong>备用 DNS</strong>：可留空。在 Fake-IP 模式下不需要配置海外 DNS 作为备用</li><li><strong>代理 DNS 解析</strong>（Proxy DNS）：开启。这是关键选项，确保走代理的域名由远端节点进行 DNS 解析，避免本地 DNS 污染影响</li><li><strong>Fake-IP</strong>：如果使用的是较新版本的 Shadowrocket 且支持 Fake-IP 模式，建议开启</li></ol><h3 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h3><ul><li>Shadowrocket 默认使用 <code>system</code> DNS，即跟随系统的 DNS 设置。在大多数场景下，这是最简单且有效的配置——系统 DNS 通常是运营商分配的国内 DNS，解析国内域名速度快且准确</li><li>开启”代理 DNS 解析”后，所有命中代理规则的域名都会通过代理服务器进行远端 DNS 解析。这等效于 Fake-IP 中”走代理的域名由远端节点处理”的逻辑</li><li>如果遇到国内域名变慢的情况，检查分流规则是否把国内域名错误地归入了代理组。Shadowrocket 的规则匹配优先级是从上到下的，确保国内直连规则在前</li></ul><hr><h2 id="Surge-配置"><a href="#Surge-配置" class="headerlink" title="Surge 配置"></a>Surge 配置</h2><p>Surge 是 iOS 和 macOS 平台上功能最完善的代理客户端，DNS 配置方式与 Clash 有一定差异。</p><h3 id="推荐配置-2"><a href="#推荐配置-2" class="headerlink" title="推荐配置"></a>推荐配置</h3><p>在 Surge 的配置文件 <code>[General]</code> 段中添加以下内容：</p><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[General]</span></span><br><span class="line"><span class="attr">dns-server</span> = <span class="number">223.5</span>.<span class="number">5.5</span>, <span class="number">119.29</span>.<span class="number">29.29</span></span><br><span class="line"><span class="attr">doh-server</span> = https://dns.alidns.com/dns-query, https://doh.pub/dns-query</span><br><span class="line"><span class="attr">always-real-ip</span> = %APPEND% *.lan, *.local, time.*.com, ntp.*.com, *.msftconnecttest.com</span><br><span class="line"><span class="attr">hijack-dns</span> = *:<span class="number">53</span></span><br></pre></td></tr></table></figure><h3 id="配置说明"><a href="#配置说明" class="headerlink" title="配置说明"></a>配置说明</h3><ul><li><strong>dns-server</strong>：传统 DNS 服务器，作为 DoH 不可用时的回退。填入阿里 DNS（223.5.5.5）和腾讯 DNS（119.29.29.29）</li><li><strong>doh-server</strong>：DoH 服务器地址。Surge 会优先使用 DoH 进行解析，保证 DNS 请求本身不被运营商劫持或篡改</li><li><strong>always-real-ip</strong>：功能等同于 Clash 的 <code>fake-ip-filter</code>，这些域名始终返回真实 IP 而非 Fake-IP。Surge 使用 <code>%APPEND%</code> 语法表示在默认列表基础上追加</li><li><strong>hijack-dns</strong>：劫持所有发往 53 端口的 DNS 请求，确保即使应用硬编码了 DNS 服务器（如 <code>8.8.8.8:53</code>），也会被 Surge 接管</li></ul><h3 id="与-Clash-的主要区别"><a href="#与-Clash-的主要区别" class="headerlink" title="与 Clash 的主要区别"></a>与 Clash 的主要区别</h3><ol><li><strong>DNS 策略更加自动化</strong>：Surge 的 DNS 处理逻辑更多是内置的，不需要用户手动选择 Fake-IP 还是 Redir-Host。Surge 4+ 默认的行为已经类似 Fake-IP 的逻辑</li><li><strong>hijack-dns 功能</strong>：Surge 原生支持 DNS 劫持功能，可以强制接管所有 DNS 流量，这在 Clash 中需要配合 TUN 模式或 iptables 才能实现</li><li><strong>配置语法不同</strong>：Surge 使用 INI 风格的配置文件，而 Clash 使用 YAML 格式。虽然语法不同，但核心理念一致——国内域名用国内 DNS，代理域名由远端解析</li></ol><hr><h2 id="特殊场景"><a href="#特殊场景" class="headerlink" title="特殊场景"></a>特殊场景</h2><h3 id="透明代理（OpenWrt-软路由）下的-DNS"><a href="#透明代理（OpenWrt-软路由）下的-DNS" class="headerlink" title="透明代理（OpenWrt &#x2F; 软路由）下的 DNS"></a>透明代理（OpenWrt &#x2F; 软路由）下的 DNS</h3><p>在软路由上运行透明代理（如 OpenClash、Passwall、ShellCrash）时，DNS 配置比客户端本机使用更为复杂，因为你需要确保局域网内所有设备的 DNS 请求都被正确处理。</p><p><strong>DNS 劫持方式</strong>：</p><p>透明代理有两种主要的 DNS 劫持方式：</p><ul><li><strong>redirect（DNAT）</strong>：通过 iptables 的 NAT 规则，将所有发往 53 端口的 UDP&#x2F;TCP 流量重定向到 Clash 的 DNS 监听端口。这是最常用的方式，配置简单，兼容性好。示例规则：<code>iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-port 1053</code></li><li><strong>tproxy（透明代理）</strong>：使用 TPROXY 目标将流量透明转发，不修改数据包的目标地址。相比 redirect，tproxy 保留了原始目标信息，某些情况下可以实现更精确的处理。但配置更复杂，需要内核支持和额外的路由规则</li></ul><p><strong>dnsmasq 与 Clash DNS 的配合</strong>：</p><p>OpenWrt 默认使用 dnsmasq 作为 DNS 服务。在部署透明代理后，推荐的配合方式是：</p><ol><li>将 dnsmasq 的上游 DNS 指向 Clash 的 DNS 监听地址（如 <code>127.0.0.1#1053</code>）</li><li>局域网设备的 DHCP 分配的 DNS 指向路由器本身（dnsmasq）</li><li>DNS 请求链路为：设备 → dnsmasq → Clash DNS → 实际处理（Fake-IP 返回 &#x2F; 上游查询）</li></ol><p>这样既保留了 dnsmasq 的缓存和本地域名解析功能，又确保所有外部域名经过 Clash 的 Fake-IP 处理。</p><p><strong>硬编码 DNS 问题</strong>：</p><p>这是透明代理下最容易被忽略的问题。部分设备和应用会绕过系统分配的 DNS，直接向硬编码的 DNS 地址发起查询：</p><ul><li>Google 设备（Chromecast、Google Home）默认使用 <code>8.8.8.8</code></li><li>部分 Android 手机的 Private DNS 功能会直接连接 DoT 服务器</li><li>某些 IoT 设备和智能电视内置了固定的 DNS 地址</li></ul><p>解决方法是在 iptables 中添加强制劫持规则，将所有发往外部 53 端口的流量都重定向到 Clash DNS：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 劫持所有外发的 DNS 请求（排除路由器本身发出的）</span></span><br><span class="line">iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-port 1053</span><br><span class="line">iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-port 1053</span><br></pre></td></tr></table></figure><p>对于使用 DoH&#x2F;DoT 的设备（如 Android Private DNS），由于流量走的是 443&#x2F;853 端口而非 53 端口，上述规则无法劫持。需要在防火墙层面屏蔽这些设备对外部 DoH&#x2F;DoT 服务器的访问，迫使它们回退到普通 DNS。</p><h3 id="IPv6-环境"><a href="#IPv6-环境" class="headerlink" title="IPv6 环境"></a>IPv6 环境</h3><p><strong>是否建议开启 IPv6 DNS</strong>：</p><p>一般建议关闭，理由如下：</p><ol><li><strong>双栈泄漏风险</strong>：即使代理正确处理了 IPv4 流量，如果设备同时拥有 IPv6 地址，某些应用可能优先通过 IPv6 直连访问目标网站，完全绕过代理。这会导致严重的隐私泄漏</li><li><strong>路由规则不完善</strong>：很多规则集对 IPv6 地址的覆盖不如 IPv4 完善。GeoIP 数据库对 IPv6 地址段的归属判断准确度也低于 IPv4</li><li><strong>运营商支持参差不齐</strong>：国内各地运营商的 IPv6 部署进度不同，很多用户的 IPv6 链路实际上并不稳定，开启后可能出现间歇性连接问题</li></ol><p><strong>推荐做法</strong>：</p><ul><li>在代理客户端中将 <code>ipv6</code> 设为 <code>false</code></li><li>如果使用软路由，可以在防火墙层面禁止 IPv6 DNS 请求外发</li><li>只有在确认自己的网络完整支持 IPv6，且代理规则覆盖了 IPv6 地址的情况下，才考虑开启</li></ul><hr><h2 id="诊断方法"><a href="#诊断方法" class="headerlink" title="诊断方法"></a>诊断方法</h2><p>当怀疑 DNS 有问题时，按以下步骤系统排查：</p><h3 id="第一步：查看客户端日志"><a href="#第一步：查看客户端日志" class="headerlink" title="第一步：查看客户端日志"></a>第一步：查看客户端日志</h3><p>打开 Clash 的日志页面（Clash Verge 中点击日志按钮），将日志级别调整为 <code>debug</code>。观察以下信息：</p><ul><li>DNS 请求发向了哪个上游服务器</li><li>解析结果是什么（真实 IP 还是 Fake-IP）</li><li>分流规则是否正确匹配</li></ul><h3 id="第二步：确认分流规则命中"><a href="#第二步：确认分流规则命中" class="headerlink" title="第二步：确认分流规则命中"></a>第二步：确认分流规则命中</h3><p>在日志中查找目标域名，确认它命中了哪条规则。常见问题：</p><ul><li>国内域名错误匹配到了代理规则 → 走了代理节点访问，速度慢</li><li>国外域名错误匹配到了直连规则 → 本地 DNS 解析被污染，无法访问</li></ul><h3 id="第三步：手动-DNS-查询对比"><a href="#第三步：手动-DNS-查询对比" class="headerlink" title="第三步：手动 DNS 查询对比"></a>第三步：手动 DNS 查询对比</h3><p>使用系统自带的 DNS 查询工具进行独立验证：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Windows 下使用 nslookup</span></span><br><span class="line">nslookup google.com <span class="number">223.5</span>.<span class="number">5.5</span></span><br><span class="line">nslookup google.com <span class="number">8.8</span>.<span class="number">8.8</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 或使用 dig（需安装）</span></span><br><span class="line">dig google.com @<span class="number">223.5</span>.<span class="number">5.5</span></span><br><span class="line">dig google.com @<span class="number">8.8</span>.<span class="number">8.8</span></span><br></pre></td></tr></table></figure><p>对比两个 DNS 返回的结果：如果国内 DNS 返回的 IP 明显不合理（如 <code>127.0.0.1</code> 或某些不相关的国内 IP），说明该域名被 DNS 污染了。在 Fake-IP 模式下这不会影响代理域名，但如果你在使用 Redir-Host 模式，这就是问题的根源。</p><h3 id="第四步：检测-DNS-泄漏"><a href="#第四步：检测-DNS-泄漏" class="headerlink" title="第四步：检测 DNS 泄漏"></a>第四步：检测 DNS 泄漏</h3><p>访问 <a href="https://dnsleaktest.com/">dnsleaktest.com</a> 或 <a href="https://browserleaks.com/dns">browserleaks.com&#x2F;dns</a>，点击 Extended Test。如果结果中出现了国内 DNS 服务器的地址，说明存在 DNS 泄漏——你访问国外网站的 DNS 请求被国内 DNS 看到了。</p><h3 id="第五步：验证-CDN-节点"><a href="#第五步：验证-CDN-节点" class="headerlink" title="第五步：验证 CDN 节点"></a>第五步：验证 CDN 节点</h3><p>如果国内网站变慢，使用以下方法检查 CDN 节点是否正确：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 查看域名解析到的 IP</span></span><br><span class="line">nslookup cdn.example.com</span><br><span class="line"></span><br><span class="line"><span class="comment"># 查询该 IP 的归属地</span></span><br><span class="line"><span class="comment"># 可以访问 ipinfo.io/IP地址 或 ip.sb 查看</span></span><br></pre></td></tr></table></figure><p>如果一个国内域名的 CDN 解析到了海外 IP，说明 DNS 配置有误——可能是走了海外 DNS 解析，或者规则错误地将该域名归入了代理组。</p><hr><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="Q-用了代理后国内网站反而变慢了？"><a href="#Q-用了代理后国内网站反而变慢了？" class="headerlink" title="Q: 用了代理后国内网站反而变慢了？"></a>Q: 用了代理后国内网站反而变慢了？</h3><p>最常见的原因是 DNS 解析到了错误的 CDN 节点。具体来说：</p><ul><li>国内域名的 DNS 查询走了海外 DNS 服务器，返回了距离海外节点最近的 CDN IP</li><li>或者国内域名错误地匹配到了代理规则，DNS 解析发生在代理节点所在地区</li></ul><p><strong>解决方法</strong>：确保直连域名只使用国内 DNS 解析。在 Fake-IP 模式下，检查 <code>nameserver</code> 是否只配置了国内 DNS（腾讯 DoH、阿里 DoH 等）。同时检查分流规则，确保 <code>GEOSITE,cn</code> 或对应的国内域名规则匹配到 <code>DIRECT</code>。</p><h3 id="Q-为什么有些网站打不开但浏览器没报错？"><a href="#Q-为什么有些网站打不开但浏览器没报错？" class="headerlink" title="Q: 为什么有些网站打不开但浏览器没报错？"></a>Q: 为什么有些网站打不开但浏览器没报错？</h3><p>这种”无声失败”通常有两种原因：</p><ol><li><strong>Fake-IP 缓存残留</strong>：之前代理开启时访问过某个域名，浏览器或系统缓存了它的 Fake-IP（<code>198.18.x.x</code>）。关闭代理后，浏览器仍然尝试连接这个假 IP，导致连接超时但不会显示明确的错误信息。解决方法：清除浏览器缓存和系统 DNS 缓存（<code>ipconfig /flushdns</code>）</li><li><strong>DNS 解析超时</strong>：上游 DNS 服务器响应缓慢或不可达，导致解析超时。客户端可能会静默失败而不返回错误页面。检查日志中的 DNS 超时记录，尝试更换上游 DNS 服务器</li></ol><h3 id="Q-DoH-和-DoT-选哪个？"><a href="#Q-DoH-和-DoT-选哪个？" class="headerlink" title="Q: DoH 和 DoT 选哪个？"></a>Q: DoH 和 DoT 选哪个？</h3><p><strong>推荐使用 DoH（DNS over HTTPS）</strong>。</p><p>两者都是加密 DNS 协议，作用相同——防止 DNS 请求被中间人窃听或篡改。区别在于：</p><table><thead><tr><th>对比项</th><th>DoH</th><th>DoT</th></tr></thead><tbody><tr><td>端口</td><td>443（与 HTTPS 网页流量共用）</td><td>853（专用端口）</td></tr><tr><td>伪装性</td><td>高，与普通 HTTPS 流量混在一起，难以区分</td><td>低，使用专用端口，容易被识别和封锁</td></tr><tr><td>封锁难度</td><td>高，封锁 443 端口等于封锁整个互联网</td><td>低，直接封锁 853 端口即可</td></tr><tr><td>性能</td><td>略高开销（HTTP&#x2F;2 头部）</td><td>略低开销</td></tr></tbody></table><p>在国内网络环境下，DoT 的 853 端口已经被部分运营商封锁或限速。而 DoH 使用 443 端口，与正常的 HTTPS 网页访问流量完全一致，运营商几乎不可能单独封锁，因此实际可用性更高。</p>]]>
    </content>
    <id>https://blog.e.show/posts/dns-best-practices/</id>
    <link href="https://blog.e.show/posts/dns-best-practices/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>各主流客户端的推荐 DNS 配置，以及最常见的 DNS 配置错误——Fake-IP 下不要配置 fallback。</summary>
    <title>各客户端 DNS 配置最佳实践</title>
    <updated>2026-05-11T21:40:36.948Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="流媒体与解锁" scheme="https://blog.e.show/categories/%E6%B5%81%E5%AA%92%E4%BD%93%E4%B8%8E%E8%A7%A3%E9%94%81/"/>
    <category term="对比" scheme="https://blog.e.show/tags/%E5%AF%B9%E6%AF%94/"/>
    <category term="DNS解锁" scheme="https://blog.e.show/tags/DNS%E8%A7%A3%E9%94%81/"/>
    <category term="原生IP" scheme="https://blog.e.show/tags/%E5%8E%9F%E7%94%9FIP/"/>
    <category term="流媒体" scheme="https://blog.e.show/tags/%E6%B5%81%E5%AA%92%E4%BD%93/"/>
    <category term="Netflix" scheme="https://blog.e.show/tags/Netflix/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：流媒体解锁主要有两种实现方式——DNS 解锁和原生 IP 解锁。前者通过 DNS 层面的重定向实现，后者依赖节点本身的 IP 类型。两者在可靠性、成本、维护难度上有明显差异。本文深入对比两种方案的技术原理和实际效果。</p></blockquote><hr><h2 id="为什么需要”解锁”"><a href="#为什么需要”解锁”" class="headerlink" title="为什么需要”解锁”"></a>为什么需要”解锁”</h2><p>Netflix、Disney+、Hulu、YouTube Premium、Spotify 等流媒体平台通过检测用户的 IP 地址来判断地理位置，进而决定你能看到什么内容。这套机制叫做<strong>地理限制</strong>（Geo-restriction）。</p><p>当你通过代理节点访问这些服务时，平台看到的不是你的真实 IP，而是代理节点的 IP。问题在于：并非所有代理节点的 IP 都能通过平台的检测。数据中心的 IP 段早已被各大流媒体平台标记和封锁，因为正常用户不会从数据中心发出请求。</p><p>为了让代理节点能够正常访问这些受地理限制的服务，就需要<strong>流媒体解锁</strong>。目前业界主要有两种实现路径：原生 IP 解锁和 DNS 解锁。</p><hr><h2 id="原生-IP-解锁"><a href="#原生-IP-解锁" class="headerlink" title="原生 IP 解锁"></a>原生 IP 解锁</h2><h3 id="什么是原生-IP"><a href="#什么是原生-IP" class="headerlink" title="什么是原生 IP"></a>什么是原生 IP</h3><p>原生 IP（Native IP）是指由目标国家或地区的本地互联网服务提供商（ISP）直接注册和分配的 IP 地址。关键特征如下：</p><ul><li><strong>归属地明确</strong>：通过 Whois 查询时，该 IP 的 ASN（自治系统号）属于当地的电信运营商或 ISP。例如日本的 NTT、美国的 Comcast、台湾的中华电信等。</li><li><strong>类型标识为住宅或 ISP</strong>：在 <a href="https://ipinfo.io/">ipinfo.io</a>、IP2Location 等 IP 情报数据库中，该 IP 的类型被标记为 residential（住宅）或 ISP，而非 hosting（托管&#x2F;数据中心）。</li><li><strong>流媒体平台信任</strong>：因为这些 IP 来自真实的用户网络环境，流媒体平台默认认为使用这些 IP 的是当地的真实用户，不会触发地域检测的拦截机制。</li></ul><p>原生 IP 也被称为住宅 IP、本地 IP、native IP。它和数据中心 IP 最本质的区别在于：数据中心 IP 的 ASN 归属于 IDC 或云服务商（如 AWS、GCP、DigitalOcean），而原生 IP 的 ASN 归属于面向终端用户提供网络接入的运营商。</p><h3 id="工作原理"><a href="#工作原理" class="headerlink" title="工作原理"></a>工作原理</h3><p>原生 IP 解锁的原理非常直接，不需要任何额外的技术手段：</p><ol><li>用户的流量通过代理隧道到达代理节点</li><li>代理节点本身拥有一个原生 IP 地址</li><li>代理节点使用这个原生 IP 向流媒体平台发起请求</li><li>流媒体平台看到的来源 IP 是一个本地 ISP 的住宅 IP</li><li>平台判定该请求来自本地用户，正常返回内容</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">用户 → [代理隧道] → 代理节点（原生 IP: 203.0.113.50, ASN: NTT）→ Netflix</span><br><span class="line">                                                                      ↓</span><br><span class="line">Netflix 检查 IP: 203.0.113.50 → ASN 属于 NTT → 日本本地 ISP → 允许访问</span><br><span class="line">                                                                      ↓</span><br><span class="line">                          内容直接返回：Netflix ← 代理节点 ← 用户</span><br></pre></td></tr></table></figure><p>整个过程只有一跳（一次中转），IP 本身就是解锁的”钥匙”，不需要 DNS 层面的任何特殊处理。</p><h3 id="优势"><a href="#优势" class="headerlink" title="优势"></a>优势</h3><p><strong>可靠性最高</strong>：原生 IP 是流媒体解锁中最可靠的方案。平台对本地 ISP 的 IP 段天然信任度很高，很少会大规模封锁住宅 IP 段——因为那意味着封锁自己的正常用户。即便是 Netflix 这种检测最严格的平台，对住宅 IP 的误封率也很低。</p><p><strong>兼容性广泛</strong>：几乎所有流媒体服务都能通过原生 IP 解锁。无论是 Netflix、Disney+、HBO Max 这些对 IP 检测严格的服务，还是 Spotify、YouTube Premium 等相对宽松的平台，原生 IP 都能顺利通过检测。</p><p><strong>维护成本低</strong>：只要 IP 地址没有被单独标记封锁，原生 IP 节点不需要额外的维护工作。不存在需要持续更新的解锁服务器、DNS 配置等运维负担。</p><p><strong>延迟最低</strong>：用户流量直接从代理节点到达目标平台，中间没有额外的跳转和转发。相比 DNS 解锁多出的一跳，原生 IP 方案在延迟上有天然优势，这对视频流的加载速度和播放质量有直接影响。</p><p><strong>抗检测能力强</strong>：流媒体平台在做地域检测时，会交叉验证多个信号——包括 IP 的 ASN 归属、IP 的地理位置数据库记录、DNS 解析地址、WebRTC 泄露的 IP 等。原生 IP 节点在所有这些维度上都是一致的，不会出现”IP 在日本但 DNS 解析来自美国”这类可疑的不一致。</p><h3 id="劣势"><a href="#劣势" class="headerlink" title="劣势"></a>劣势</h3><p><strong>成本高</strong>：原生 IP 的价格远高于数据中心 IP。一个数据中心 VPS 可能每月只需几美元，但一个带有原生住宅 IP 的 VPS 价格可以是前者的数倍甚至十倍以上。这是因为住宅 IP 资源本身就稀缺，能够出租住宅 IP 段的 ISP 和供应商数量有限。</p><p><strong>供应有限</strong>：并非所有国家和地区都能方便地获取到原生 IP 的 VPS 或专用服务器。部分小众地区的原生 IP 资源极度稀缺，供应商屈指可数。</p><p><strong>替换困难</strong>：如果某个原生 IP 不幸被流媒体平台单独标记封锁，更换新的原生 IP 并不容易。不像数据中心 IP 可以快速分配新的，原生 IP 的供应链更长、替换周期更久。</p><p><strong>单点故障风险</strong>：整个解锁能力完全绑定在单个 IP 地址上。一旦这个 IP 被封，该节点就彻底失去解锁能力，没有回退方案。</p><hr><h2 id="DNS-解锁"><a href="#DNS-解锁" class="headerlink" title="DNS 解锁"></a>DNS 解锁</h2><h3 id="为什么需要-DNS-解锁"><a href="#为什么需要-DNS-解锁" class="headerlink" title="为什么需要 DNS 解锁"></a>为什么需要 DNS 解锁</h3><p>现实中，大量代理节点使用的是数据中心 IP。这些 IP 的 ASN 归属于 AWS、GCP、Vultr、BandwagonHost 等 IDC 或云服务商，早已被 Netflix 等平台标记为数据中心 IP 并拒绝访问。</p><p>但是，更换所有节点为原生 IP 的成本太高、不现实。DNS 解锁正是在这个背景下诞生的：<strong>它让使用数据中心 IP 的普通代理节点也能访问受地理限制的流媒体服务</strong>。</p><h3 id="工作原理-1"><a href="#工作原理-1" class="headerlink" title="工作原理"></a>工作原理</h3><p>DNS 解锁的核心思想是：<strong>在 DNS 层面将流媒体域名的解析结果”劫持”到一个拥有解锁能力的中间服务器</strong>。具体流程如下：</p><p><strong>第一步：DNS 查询拦截</strong></p><p>代理节点的 DNS 配置指向一个专门的 DNS 解锁服务。当节点需要解析流媒体相关的域名（如 <code>netflix.com</code>、<code>disneyplus.com</code>）时，DNS 解锁服务不会返回这些域名的真实 IP 地址，而是返回一个特殊的中间服务器的 IP 地址。</p><p><strong>第二步：流量重定向</strong></p><p>代理节点以为自己在直连流媒体平台，实际上它连接的是 DNS 解锁服务的中间服务器。这个中间服务器通常部署在拥有原生 IP 或者其他解锁能力 IP 的网络中。</p><p><strong>第三步：中间服务器转发</strong></p><p>中间服务器收到代理节点的请求后，使用自己的解锁 IP 向流媒体平台发起真正的请求。流媒体平台看到的是中间服务器的 IP——一个可以通过地域检测的 IP。</p><p><strong>第四步：内容回传</strong></p><p>流媒体平台将内容返回给中间服务器，中间服务器再转发给代理节点，最终回到用户手中。</p><p>完整的流量路径如下：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">1. 用户通过代理节点（数据中心 IP: 1.2.3.4）访问 netflix.com</span><br><span class="line">2. 代理节点向 DNS 解锁服务查询 netflix.com 的 IP</span><br><span class="line">3. DNS 解锁服务返回中间服务器的 IP（5.6.7.8）而非 Netflix 的真实 IP</span><br><span class="line">4. 代理节点将流量发送到 5.6.7.8（中间解锁服务器）</span><br><span class="line">5. 中间解锁服务器拥有原生 IP（9.10.11.12），使用该 IP 向 Netflix 发起请求</span><br><span class="line">6. Netflix 检测到来源 IP 9.10.11.12 属于本地 ISP → 允许访问</span><br><span class="line">7. 内容回传：Netflix → 中间解锁服务器 → 代理节点 → 用户</span><br></pre></td></tr></table></figure><p>示意图：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line">                     ┌──────────────────────────────────────────────┐</span><br><span class="line">                     │  DNS 解锁流程                                │</span><br><span class="line">                     └──────────────────────────────────────────────┘</span><br><span class="line"></span><br><span class="line">用户 → [代理隧道] → 代理节点（数据中心 IP: 1.2.3.4）</span><br><span class="line">                         │</span><br><span class="line">                         │ ① DNS 查询: netflix.com = ?</span><br><span class="line">                         ▼</span><br><span class="line">                    DNS 解锁服务</span><br><span class="line">                         │</span><br><span class="line">                         │ ② 返回中间服务器 IP: 5.6.7.8</span><br><span class="line">                         ▼</span><br><span class="line">                    代理节点连接 5.6.7.8</span><br><span class="line">                         │</span><br><span class="line">                         │ ③ 流量转发</span><br><span class="line">                         ▼</span><br><span class="line">                    中间解锁服务器（原生 IP: 9.10.11.12）</span><br><span class="line">                         │</span><br><span class="line">                         │ ④ 使用原生 IP 请求 Netflix</span><br><span class="line">                         ▼</span><br><span class="line">                      Netflix</span><br><span class="line">                         │</span><br><span class="line">                         │ ⑤ 内容原路返回</span><br><span class="line">                         ▼</span><br><span class="line">               Netflix → 解锁服务器 → 代理节点 → 用户</span><br></pre></td></tr></table></figure><p>值得注意的是，DNS 解锁只对特定域名生效。普通网站的 DNS 解析不受影响，流量也不经过中间服务器。DNS 解锁服务维护着一份流媒体域名列表，只有命中这个列表的域名才会被重定向。</p><h3 id="常见的-DNS-解锁实现方式"><a href="#常见的-DNS-解锁实现方式" class="headerlink" title="常见的 DNS 解锁实现方式"></a>常见的 DNS 解锁实现方式</h3><p><strong>第三方 DNS 解锁服务</strong>：这是最常见的方式。机场运营者购买第三方的 DNS 解锁服务，只需要在代理节点上将 DNS 服务器指向该服务的地址即可。市面上有多家提供此类服务的供应商，价格从每月几美元到几十美元不等，通常按节点数量计费。</p><p><strong>自建 SNI Proxy + DNS</strong>：技术能力较强的运营者可以自建 DNS 解锁系统。典型方案是在一台拥有原生 IP 的服务器上部署 SNI Proxy（如 sniproxy、nginx stream 模块），同时搭建自定义 DNS 服务器（如 dnsmasq、AdGuardHome），将流媒体域名的解析指向自己的 SNI Proxy。这种方式成本更低、可控性更高，但需要一定的运维能力。</p><p><strong>WARP + DNS 方案</strong>：某些场景下可以利用 Cloudflare WARP 的 IP 进行解锁。通过将流媒体域名的流量路由到 WARP 隧道，借助 WARP 分配的 IP 来通过平台的地域检测。但 WARP IP 并非原生住宅 IP，解锁成功率不稳定，取决于具体的 WARP 出口 IP。</p><h3 id="优势-1"><a href="#优势-1" class="headerlink" title="优势"></a>优势</h3><p><strong>成本效益高</strong>：一台拥有解锁能力 IP 的中间服务器可以同时为几十甚至上百个代理节点提供解锁服务。相比每个节点都使用原生 IP，DNS 解锁方案的成本可以降低一个数量级。</p><p><strong>灵活性强</strong>：如果中间解锁服务器的 IP 被平台封锁，可以快速更换解锁服务器，而不需要对所有代理节点做任何改动。代理节点只需要指向同一个 DNS 解锁服务的地址，后端的解锁服务器如何调整对用户完全透明。</p><p><strong>可扩展性好</strong>：要给已有的代理节点添加解锁能力，只需修改 DNS 配置。不需要更换 IP、迁移服务器、重新搭建代理服务。对于拥有大量节点的机场运营者来说，这种扩展方式的成本和工作量远低于全部更换为原生 IP。</p><p><strong>解锁范围可控</strong>：DNS 解锁可以精确到域名级别。运营者可以选择只解锁特定平台（如只解锁 Netflix 和 Disney+），也可以根据需要灵活增减支持的服务。</p><h3 id="劣势-1"><a href="#劣势-1" class="headerlink" title="劣势"></a>劣势</h3><p><strong>多一跳延迟</strong>：用户的流量需要经过”代理节点 → 中间解锁服务器 → 流媒体平台”两跳，比原生 IP 的单跳多了一次网络往返。虽然通常只增加几十毫秒的延迟，但在中间服务器距离代理节点较远的情况下，延迟增加可能更明显，影响视频加载速度和播放体验。</p><p><strong>故障点更多</strong>：DNS 解锁的链路包含三个组件——DNS 解锁服务、中间解锁服务器、以及两者之间的连接。任何一个环节出现问题都会导致解锁失败。相比之下，原生 IP 解锁的链路只有代理节点本身。</p><p><strong>维护成本持续</strong>：流媒体平台会不断更新检测策略、封锁已知的解锁服务器 IP。DNS 解锁服务需要持续监控解锁状态，及时更换被封锁的 IP 或调整解锁策略。这是一项持续的运维工作。</p><p><strong>一致性检测风险</strong>：部分流媒体平台已经开始检测 DNS 解析地址与连接 IP 之间的一致性。具体来说，如果你的代理节点 IP 显示在美国，但实际连接的流媒体服务器 IP 指向的解锁服务器在日本，平台可能判定这种不一致是使用了代理或解锁服务。这种检测虽然目前还不普遍，但趋势在加强。</p><p><strong>部分服务不支持</strong>：某些检测特别严格的流媒体平台可能同时验证多个层面（IP 地理位置、DNS 地理位置、延迟特征等），DNS 解锁无法在所有这些维度上保持一致，导致解锁失败。</p><hr><h2 id="对比表"><a href="#对比表" class="headerlink" title="对比表"></a>对比表</h2><table><thead><tr><th>维度</th><th>原生 IP 解锁</th><th>DNS 解锁</th></tr></thead><tbody><tr><td>可靠性</td><td>高——平台天然信任住宅 IP</td><td>中等——依赖中间服务器状态</td></tr><tr><td>成本</td><td>高——原生 IP 资源稀缺且昂贵</td><td>低——一台解锁服务器服务多个节点</td></tr><tr><td>延迟影响</td><td>无额外延迟</td><td>略有增加（多一跳网络往返）</td></tr><tr><td>维护难度</td><td>低——IP 不被封就无需干预</td><td>中到高——需持续监控和更新</td></tr><tr><td>覆盖服务范围</td><td>广泛——几乎所有服务</td><td>取决于 DNS 服务的域名列表</td></tr><tr><td>抗检测能力</td><td>强——所有信号维度一致</td><td>中等——可能存在一致性漏洞</td></tr><tr><td>可扩展性</td><td>差——受原生 IP 供应限制</td><td>好——DNS 配置即可扩展</td></tr><tr><td>故障恢复</td><td>慢——需更换稀缺 IP 资源</td><td>快——可迅速切换解锁服务器</td></tr></tbody></table><hr><h2 id="混合方案：实际运营中的常见做法"><a href="#混合方案：实际运营中的常见做法" class="headerlink" title="混合方案：实际运营中的常见做法"></a>混合方案：实际运营中的常见做法</h2><p>在真实的运营环境中，大多数有规模的机场不会纯粹只用一种方案，而是<strong>根据不同平台的检测严格程度，混合使用两种解锁方式</strong>。</p><p>典型的策略如下：</p><ul><li><strong>高价值、高检测强度的平台使用原生 IP</strong>：Netflix、Disney+、HBO Max 等对 IP 检测最严格的服务，使用原生 IP 节点来保证解锁稳定性。这些平台的用户付费意愿也最强，支撑得起更高的成本。</li><li><strong>中等检测强度的平台使用 DNS 解锁</strong>：Spotify、YouTube Premium、Amazon Prime Video 等检测相对宽松的服务，通过 DNS 解锁来覆盖。这样可以在保证基本解锁能力的同时大幅降低成本。</li><li><strong>特定地区差异化配置</strong>：日本、美国等热门地区的节点优先使用原生 IP，冷门地区则采用 DNS 解锁方案来控制成本。</li></ul><p>这种混合策略是成本与可靠性的平衡点。用户在选择机场时，可以关注其在核心平台上的解锁方式——标注”原生解锁”的节点通常意味着使用了原生 IP。</p><hr><h2 id="对用户的实际意义"><a href="#对用户的实际意义" class="headerlink" title="对用户的实际意义"></a>对用户的实际意义</h2><h3 id="你通常不需要知道技术细节"><a href="#你通常不需要知道技术细节" class="headerlink" title="你通常不需要知道技术细节"></a>你通常不需要知道技术细节</h3><p>作为普通用户，你在日常使用中通常不需要关心节点背后使用的是哪种解锁方式。你真正需要关心的是：<strong>这个节点能不能稳定解锁我需要的服务</strong>。</p><p>以下是一些实用的建议：</p><ul><li><strong>关注实际效果而非技术标签</strong>：有些机场会宣传”全原生 IP”，但实际解锁效果可能还不如一个维护良好的 DNS 解锁方案。解锁是否有效，要通过实际测试来验证，而不是只看宣传。</li><li><strong>善用试用期</strong>：大多数机场提供试用期或短期套餐。在这个期间测试你需要的所有流媒体服务，确认解锁正常工作后再决定长期订阅。</li><li><strong>注意价格信号</strong>：标注”原生解锁”或”流媒体解锁”的节点通常价格更高，这在一定程度上反映了原生 IP 的成本。但高价不等于一定好用，仍需实测。</li><li><strong>解锁失效时的判断</strong>：如果某个节点突然无法解锁某个平台，更可能是 DNS 解锁的中间服务器 IP 被封了——这种情况下联系机场运营者，他们通常可以较快修复。如果是原生 IP 被封，修复时间可能更长。</li></ul><hr><h2 id="怎么判断节点用的是哪种解锁方式"><a href="#怎么判断节点用的是哪种解锁方式" class="headerlink" title="怎么判断节点用的是哪种解锁方式"></a>怎么判断节点用的是哪种解锁方式</h2><p>虽然普通用户不一定需要知道这些，但如果你有探究精神，可以通过以下方式大致判断：</p><h3 id="方法一：查询-IP-类型"><a href="#方法一：查询-IP-类型" class="headerlink" title="方法一：查询 IP 类型"></a>方法一：查询 IP 类型</h3><p>使用 <code>ipinfo.io</code>、<a href="https://bgp.tools/">bgp.tools</a> 或 <code>ip.sb</code> 等工具查询你代理节点的出口 IP。重点看两个信息：</p><ul><li><strong>ASN 归属</strong>：如果 ASN 属于 AWS、GCP、DigitalOcean、Vultr 等云服务商&#x2F;IDC，说明这是数据中心 IP。如果此时流媒体服务仍然能正常使用，那大概率是通过 DNS 解锁实现的。</li><li><strong>IP 类型</strong>：ipinfo.io 会标注 IP 的类型（hosting、isp、residential 等）。如果类型是 hosting 但流媒体解锁正常，几乎可以确定使用了 DNS 解锁。</li></ul><h3 id="方法二：延迟对比测试"><a href="#方法二：延迟对比测试" class="headerlink" title="方法二：延迟对比测试"></a>方法二：延迟对比测试</h3><p>打开同一个代理节点，先访问一个普通网站（如 <code>fast.com</code> 的非流媒体测速），记录延迟。然后访问流媒体平台（如 Netflix），观察加载速度。如果流媒体内容的加载明显慢于普通网页浏览，可能说明流量经过了额外的中间服务器——这是 DNS 解锁的特征。</p><p>不过这种方法不够精确，延迟差异也可能是由其他因素导致的（如 CDN 分配、服务器负载等），仅供参考。</p><h3 id="方法三：直接询问提供商"><a href="#方法三：直接询问提供商" class="headerlink" title="方法三：直接询问提供商"></a>方法三：直接询问提供商</h3><p>信誉良好的机场运营者通常会在节点命名或文档中明确标注解锁方式。常见的标注如”原生解锁”、”Netflix 原生”、”流媒体 DNS 解锁”等。如果没有标注，可以在客服群或工单中直接询问。愿意公开解锁方式的运营者，通常也意味着更高的透明度和服务质量。</p><hr><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="Q-用户需要自己配置-DNS-解锁吗？"><a href="#Q-用户需要自己配置-DNS-解锁吗？" class="headerlink" title="Q: 用户需要自己配置 DNS 解锁吗？"></a>Q: 用户需要自己配置 DNS 解锁吗？</h3><p>通常不需要。如果你的机场提供 DNS 解锁功能，它已经在节点的服务端配置好了。DNS 解锁的配置完全在代理服务器上完成，对用户端是透明的——你只需正常连接节点，无需做任何额外的 DNS 设置。</p><p>这里要区分两个概念：<strong>客户端的 DNS 配置</strong>和<strong>服务端的 DNS 解锁配置</strong>。客户端的 DNS 配置（如在 Clash 中设置 DNS 服务器）主要解决的是 DNS 泄漏和分流问题，与流媒体解锁无关。服务端的 DNS 解锁配置是机场运营者在节点服务器上完成的，用户无需也无法干预。</p><h3 id="Q-自建节点怎么加-DNS-解锁？"><a href="#Q-自建节点怎么加-DNS-解锁？" class="headerlink" title="Q: 自建节点怎么加 DNS 解锁？"></a>Q: 自建节点怎么加 DNS 解锁？</h3><p>自建节点添加 DNS 解锁能力有两种途径：</p><ol><li><strong>购买第三方 DNS 解锁服务</strong>：这是最省事的方式。购买后只需要在你的 VPS 上将 DNS 服务器指向该服务提供的地址即可。缺点是需要持续付费。</li><li><strong>自建 DNS 解锁系统</strong>：你需要另外准备一台拥有原生 IP（或其他能解锁的 IP）的服务器。在上面部署 SNI Proxy（如 sniproxy 或 nginx 的 stream 模块），同时搭建 DNS 服务器（如 dnsmasq），将流媒体域名的解析指向你的 SNI Proxy。然后在你的代理节点上使用这个自建 DNS 服务器。这种方式需要一定的 Linux 运维能力和对网络原理的理解。</li></ol><h3 id="Q-为什么我的节点今天能解锁明天不能？"><a href="#Q-为什么我的节点今天能解锁明天不能？" class="headerlink" title="Q: 为什么我的节点今天能解锁明天不能？"></a>Q: 为什么我的节点今天能解锁明天不能？</h3><p>如果使用的是 DNS 解锁方案，最常见的原因是<strong>中间解锁服务器的 IP 被流媒体平台封锁了</strong>。平台会持续扫描和标记被大量代理用户使用的 IP 地址。当中间服务器的 IP 被封后，DNS 解锁链路就会中断，尽管你的代理节点本身工作正常。</p><p>遇到这种情况，联系你的机场提供商即可。对于使用 DNS 解锁的机场，更换解锁服务器 IP 是常规运维操作，通常在几小时到一两天内就能恢复。如果是原生 IP 被封，恢复时间可能更长，因为更换原生 IP 需要协调 ISP 资源。</p><h3 id="Q-原生-IP-节点一定更贵吗？"><a href="#Q-原生-IP-节点一定更贵吗？" class="headerlink" title="Q: 原生 IP 节点一定更贵吗？"></a>Q: 原生 IP 节点一定更贵吗？</h3><p>几乎总是更贵的。原生 IP 资源稀缺，获取成本远高于数据中心 IP，这部分成本必然会反映在服务价格上。一个使用原生 IP 的日本节点，月费可能是同等配置数据中心节点的三到五倍甚至更多。</p><p>但贵不代表一定好——关键要看实际的解锁效果和连接稳定性。一个维护不善的原生 IP 节点，体验可能还不如一个管理得当的 DNS 解锁节点。选择时应结合实际测试结果来判断，而不是单纯因为”原生”二字就愿意支付溢价。</p><h3 id="Q-有没有办法完全避免解锁失效？"><a href="#Q-有没有办法完全避免解锁失效？" class="headerlink" title="Q: 有没有办法完全避免解锁失效？"></a>Q: 有没有办法完全避免解锁失效？</h3><p>没有。无论使用哪种解锁方式，都无法保证永远不失效。流媒体平台对代理和解锁服务的检测在不断升级，这是一场持续的技术博弈。原生 IP 被单独封锁、DNS 解锁服务器被标记、新的检测算法上线——这些都可能导致原本正常的解锁突然失效。</p><p>用户能做的是选择运维能力强、响应速度快的服务提供商。解锁失效不可怕，关键是提供商能多快修复。一般来说，规模较大、口碑较好的机场在解锁维护上更有经验和资源投入。</p>]]>
    </content>
    <id>https://blog.e.show/posts/dns-vs-native-unlock/</id>
    <link href="https://blog.e.show/posts/dns-vs-native-unlock/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>DNS 解锁通过重定向实现，原生 IP 依赖节点 IP 类型。两者在可靠性和成本上差异显著。</summary>
    <title>DNS 解锁 vs 原生 IP 解锁：原理与区别</title>
    <updated>2026-05-11T21:40:36.948Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="DNS 专题" scheme="https://blog.e.show/categories/DNS-%E4%B8%93%E9%A2%98/"/>
    <category term="DNS泄漏" scheme="https://blog.e.show/tags/DNS%E6%B3%84%E6%BC%8F/"/>
    <category term="隐私" scheme="https://blog.e.show/tags/%E9%9A%90%E7%A7%81/"/>
    <category term="TUN" scheme="https://blog.e.show/tags/TUN/"/>
    <category term="Fake-IP" scheme="https://blog.e.show/tags/Fake-IP/"/>
    <category term="安全" scheme="https://blog.e.show/tags/%E5%AE%89%E5%85%A8/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>: DNS 泄漏是指你以为所有流量都走了代理，但 DNS 查询实际上仍然发往了本地 ISP 的 DNS 服务器。这意味着你的 ISP（以及 GFW）仍然知道你在访问哪些网站。本文解释 DNS 泄漏的原理、检测方法和预防措施。</p></blockquote><hr><h2 id="什么是-DNS-泄漏"><a href="#什么是-DNS-泄漏" class="headerlink" title="什么是 DNS 泄漏"></a>什么是 DNS 泄漏</h2><p>DNS 泄漏（DNS Leak）的定义很简单：<strong>你以为自己完全走了代理，但你的 DNS 查询绕过了代理，直接发送到了本地网络上的 DNS 服务器（通常是 ISP 自动分配的）。</strong></p><p>这意味着什么？你的代理可能做得很好——数据传输全程加密，ISP 看不到你访问的网页内容。但 DNS 查询暴露了你的意图。ISP 的 DNS 日志里会清清楚楚地记录：这个用户在某个时间点查询了 <code>google.com</code>、<code>twitter.com</code>、<code>youtube.com</code> 的 IP 地址。</p><p>问题的严重性分几个层面：</p><p><strong>第一，隐私暴露。</strong> ISP 知道你在访问哪些网站。在中国大陆的网络环境下，这个信息本身就是敏感的。你不需要被看到访问的内容——“你在试图访问 Google”这一条信息就已经足够引起关注。</p><p><strong>第二，GFW 可见。</strong> GFW 对 DNS 流量的监控是全面的。当你的 DNS 查询以明文形式发往 ISP 的 DNS 服务器时，GFW 可以轻松看到你在查询什么域名。即使你的实际数据流量通过加密代理传输，DNS 查询已经出卖了你。</p><p><strong>第三，DNS 污染可能破坏代理。</strong> 这是很多人忽略的问题。如果你的 DNS 查询走漏到了本地网络，GFW 可以对这些查询进行 DNS 污染——返回一个伪造的 IP 地址。某些代理客户端在配置不当的情况下，会使用这个被污染的 IP 去建立连接，结果连接失败或者被劫持到错误的目标。</p><p><strong>第四，即使代理节点很安全，DNS 泄漏也会降低整体安全性。</strong> 安全是木桶效应——最短的那块板决定水位。你花了大价钱买了高质量代理节点、用了最新的协议、选了最隐蔽的端口，但 DNS 泄漏一笔勾销了这些努力。</p><p>一句话总结：DNS 泄漏就像你换了一身伪装出门，但身份证掉在了门口。</p><hr><h2 id="DNS-泄漏是怎么发生的"><a href="#DNS-泄漏是怎么发生的" class="headerlink" title="DNS 泄漏是怎么发生的"></a>DNS 泄漏是怎么发生的</h2><p>DNS 泄漏不是一个单一的问题，它有多种触发场景。理解每种场景的发生机制，才能有针对性地预防。</p><h3 id="场景一：系统代理模式（最常见）"><a href="#场景一：系统代理模式（最常见）" class="headerlink" title="场景一：系统代理模式（最常见）"></a>场景一：系统代理模式（最常见）</h3><p>这是 DNS 泄漏最常见、最容易被忽视的原因。</p><p>系统代理（System Proxy）的工作方式是：在操作系统层面设置一个 HTTP&#x2F;SOCKS 代理地址。当应用程序发起 HTTP 或 HTTPS 请求时，这些请求会被转发到代理客户端处理。</p><p>问题在于：<strong>DNS 查询不是 HTTP&#x2F;HTTPS 请求。</strong></p><p>DNS 查询使用 UDP 协议的 53 端口。系统代理只接管了 HTTP&#x2F;HTTPS 流量（TCP 80&#x2F;443），对 UDP 53 端口的 DNS 查询完全不管。当你的浏览器想访问 <code>google.com</code> 时，操作系统首先要做 DNS 解析——这个 DNS 查询直接走本地网络，发送到 ISP 的 DNS 服务器。ISP 收到你的查询，知道你在找 <code>google.com</code> 的 IP。然后浏览器拿到 IP，通过系统代理发送 HTTP 请求——这部分确实走了代理，但 DNS 早就泄漏了。</p><p>这种泄漏的特点是<strong>完全无感</strong>。你看到浏览器设置了代理，网页也能正常打开，一切看起来都很正常。但你的每一次 DNS 查询都在本地网络上裸奔。</p><p>这就是为什么我们反复强调：<strong>系统代理模式下，DNS 泄漏几乎不可避免。</strong> 如果你在意隐私，请使用 TUN 模式。</p><blockquote><p>关于系统代理和 TUN 模式的详细对比，参见 <a href="../software/tun-vs-system-proxy.md">TUN 模式 vs 系统代理</a>。</p></blockquote><h3 id="场景二：代理客户端-DNS-配置错误"><a href="#场景二：代理客户端-DNS-配置错误" class="headerlink" title="场景二：代理客户端 DNS 配置错误"></a>场景二：代理客户端 DNS 配置错误</h3><p>即使你使用了 TUN 模式，DNS 配置错误仍然可能导致泄漏。</p><p>最典型的错误是在 <code>nameserver</code> 中直接使用国际 DNS 的明文地址：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># ❌ 错误配置</span></span><br><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">nameserver:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="number">8.8</span><span class="number">.8</span><span class="number">.8</span>       <span class="comment"># Google DNS，明文 UDP</span></span><br><span class="line">    <span class="bullet">-</span> <span class="number">1.1</span><span class="number">.1</span><span class="number">.1</span>       <span class="comment"># Cloudflare DNS，明文 UDP</span></span><br></pre></td></tr></table></figure><p>这个配置的问题是：DNS 查询使用明文 UDP 协议发送到 <code>8.8.8.8</code>。这些查询包会经过你的 ISP 网络——ISP 可以看到查询内容，GFW 也可以看到。更糟糕的是，GFW 会主动劫持发往 <code>8.8.8.8:53</code> 的 DNS 查询，返回被污染的结果。</p><p>结果就是：你以为自己在用 Google DNS，实际上你得到的是 GFW 伪造的响应。被污染的域名拿到错误的 IP，代理客户端再基于这个错误 IP 做路由决策——整个链路都被带偏了。</p><p>另一种常见的错误配置是在 Fake-IP 模式下配置了 <code>fallback</code>，并且 fallback 指向海外 DNS。虽然在 Fake-IP 模式下 nameserver 只会收到直连域名的查询，但 fallback 的存在会导致额外的 DNS 查询被发送到海外，这些查询走的是明文或加密通道取决于你的配置，但无论如何，它们增加了不必要的暴露面。</p><blockquote><p>关于 Fake-IP 模式下为什么不需要 fallback，参见 <a href="./fake-ip-vs-redir-host.md">Fake-IP vs Redir-Host</a>。</p></blockquote><h3 id="场景三：应用绕过代理"><a href="#场景三：应用绕过代理" class="headerlink" title="场景三：应用绕过代理"></a>场景三：应用绕过代理</h3><p>某些应用程序不走操作系统的 DNS 解析流程，而是自己直接发送 DNS 查询。这种行为叫做”硬编码 DNS”。</p><p>典型例子：</p><ul><li><strong>Chrome 浏览器</strong>：在某些配置下，Chrome 会使用自己内置的 DNS 解析逻辑，绕过系统 DNS 设置。尤其是当 Chrome 的”安全 DNS”功能开启并配置了特定的 DNS 服务器时，这些查询不会经过代理客户端的 DNS 拦截。</li><li><strong>Android 应用</strong>：Android 上的部分应用会硬编码 DNS 服务器地址（如 <code>8.8.8.8</code>），直接通过 UDP 53 端口发送查询，完全绕过系统 DNS 和代理客户端。</li><li><strong>某些即时通讯软件</strong>：部分 IM 应用为了加速连接，会使用 HTTPDNS（通过 HTTP 接口查询 DNS，而非传统的 UDP 53 端口），这些查询可能不被代理客户端拦截。</li></ul><p>在系统代理模式下，这些硬编码 DNS 查询会直接走本地网络，造成泄漏。即使在 TUN 模式下，如果 TUN 的 DNS 劫持配置不完善，某些应用的非标准 DNS 查询也可能漏网。</p><h3 id="场景四：IPv6-DNS-泄漏"><a href="#场景四：IPv6-DNS-泄漏" class="headerlink" title="场景四：IPv6 DNS 泄漏"></a>场景四：IPv6 DNS 泄漏</h3><p>这是一个越来越常见但经常被忽略的泄漏场景。</p><p>很多家庭网络环境同时具备 IPv4 和 IPv6 连接。代理客户端通常默认只处理 IPv4 流量。当你的系统有 IPv6 地址时，操作系统可能会通过 IPv6 网络发送 DNS 查询——这些查询完全绕过了你的代理客户端。</p><p>具体表现：</p><ul><li>你的代理客户端通过 TUN 模式接管了 IPv4 网络栈</li><li>但 IPv6 网络栈没有被接管</li><li>操作系统发起 DNS 查询时，可能优先使用 IPv6</li><li>IPv6 的 DNS 查询直接走 ISP 的 IPv6 DNS 服务器 → 泄漏</li></ul><p>这种泄漏特别隐蔽，因为大多数用户不知道自己的网络有 IPv6。你可以访问 <code>test-ipv6.com</code> 检查你的网络是否有 IPv6 连接。</p><p>更复杂的情况是：即使代理客户端在 TUN 模式下同时接管了 IPv4 和 IPv6，如果 DNS 配置中没有正确处理 AAAA 记录（IPv6 DNS 记录），客户端可能会在处理 IPv6 DNS 响应时出错，导致某些查询从旁路走掉。</p><h3 id="场景五：WebRTC-泄漏（关联问题）"><a href="#场景五：WebRTC-泄漏（关联问题）" class="headerlink" title="场景五：WebRTC 泄漏（关联问题）"></a>场景五：WebRTC 泄漏（关联问题）</h3><p>WebRTC（Web Real-Time Communication）是浏览器内置的实时通信功能，主要用于视频通话、语音聊天等场景。虽然 WebRTC 泄漏严格来说不属于 DNS 泄漏，但它经常和 DNS 泄漏一起被讨论，因为它导致的后果类似——暴露你的真实网络信息。</p><p>WebRTC 的问题在于：<strong>它可以直接获取你的本地 IP 地址和公网 IP 地址，完全绕过代理。</strong></p><p>WebRTC 使用 STUN 协议来发现你的公网 IP 和 NAT 类型。这个过程不走 HTTP 代理通道，也不走 SOCKS 代理。即使你已经通过代理上网，一个恶意网页只需要几行 JavaScript 代码，就能通过 WebRTC 获取到你的真实 IP 地址。</p><p>Chrome 和 Firefox 默认都启用了 WebRTC。这意味着除非你主动关闭它，否则你的真实 IP 随时可能被网页获取。</p><hr><h2 id="如何检测-DNS-泄漏"><a href="#如何检测-DNS-泄漏" class="headerlink" title="如何检测 DNS 泄漏"></a>如何检测 DNS 泄漏</h2><p>知道了 DNS 泄漏的原理，接下来要做的是：确认你自己有没有泄漏。以下是三种检测方法，从简单到深入。</p><h3 id="方法一：在线检测工具"><a href="#方法一：在线检测工具" class="headerlink" title="方法一：在线检测工具"></a>方法一：在线检测工具</h3><p>这是最简单、最直观的检测方式，适合所有用户。</p><p><strong>步骤：</strong></p><ol><li>确保你的代理已经连接，并且你正在使用代理上网（可以先访问 <code>google.com</code> 确认代理正常工作）</li><li>打开浏览器，访问 <a href="https://dnsleaktest.com/">dnsleaktest.com</a></li><li>页面加载后，点击 <strong>Extended test</strong>（扩展测试）——Standard test 只检测一次，Extended test 会进行多轮查询，结果更准确</li><li>等待测试完成（通常需要 30 秒左右）</li><li>查看结果</li></ol><p><strong>如何解读结果：</strong></p><ul><li><strong>没有泄漏</strong>：结果中只显示你代理节点所在地的 DNS 服务器。比如你用的是香港节点，结果应该显示香港或海外的 DNS 服务器（如 Cloudflare、Google DNS 等）。</li><li><strong>有泄漏</strong>：结果中出现了中国大陆的 DNS 服务器 IP，或者出现了你 ISP 的 DNS 地址。这意味着至少有一部分 DNS 查询没有走代理，直接到达了你本地的 ISP DNS。</li><li><strong>部分泄漏</strong>：结果中同时出现海外和国内的 DNS 服务器。这说明你的 DNS 查询一部分走了代理，一部分走了本地——这也是泄漏。</li></ul><p>除了 <code>dnsleaktest.com</code>，还有以下替代工具可以交叉验证：</p><table><thead><tr><th>工具</th><th>地址</th><th>特点</th></tr></thead><tbody><tr><td>DNS Leak Test</td><td><code>dnsleaktest.com</code></td><td>最经典的 DNS 泄漏检测工具</td></tr><tr><td>BrowserLeaks DNS</td><td><code>browserleaks.com/dns</code></td><td>同时检测 DNS 和其他浏览器信息泄漏</td></tr><tr><td>IPLeak</td><td><code>ipleak.net</code></td><td>综合检测 IP、DNS、WebRTC 泄漏</td></tr><tr><td>Mullvad DNS Check</td><td><code>mullvad.net/check</code></td><td>Mullvad VPN 提供的检测工具，界面简洁</td></tr></tbody></table><p>建议至少用两个工具交叉验证。单一工具的结果有时可能因为网络波动不够准确。</p><p><img src="/images/inline/dns-leak-test.png" alt="DNS 泄漏检测结果示例"><br><em>图片来源：<a href="https://www.reddit.com/">Reddit</a></em></p><h3 id="方法二：代理客户端日志"><a href="#方法二：代理客户端日志" class="headerlink" title="方法二：代理客户端日志"></a>方法二：代理客户端日志</h3><p>如果你使用 Clash Verge、mihomo 等代理客户端，可以通过日志直接观察 DNS 查询的去向。</p><p><strong>以 Clash Verge 为例：</strong></p><ol><li>打开 Clash Verge，进入设置</li><li>将日志级别设置为 <code>debug</code></li><li>打开日志面板（或查看日志文件）</li><li>正常浏览网页，观察日志中的 DNS 相关条目</li></ol><p>你需要关注的信息：</p><ul><li>每一条 DNS 查询的目标域名</li><li>该查询被发送到了哪个 DNS 服务器</li><li>查询是通过什么方式发起的（UDP、DoH、Fake-IP 映射等）</li></ul><p>如果你看到 <code>google.com</code>、<code>youtube.com</code> 等应该走代理的域名出现在本地 DNS 查询日志中，说明存在泄漏。在 Fake-IP 模式下，这些域名不应该触发任何真实的 DNS 查询——它们应该直接被分配假 IP，然后在远端解析。</p><h3 id="方法三：Wireshark-抓包分析"><a href="#方法三：Wireshark-抓包分析" class="headerlink" title="方法三：Wireshark 抓包分析"></a>方法三：Wireshark 抓包分析</h3><p>Wireshark 是网络协议分析工具，可以捕获你网卡上的所有网络数据包。这是最精确的检测方法，适合需要深入分析的用户。</p><p><strong>步骤：</strong></p><ol><li>下载并安装 <a href="https://www.wireshark.org/">Wireshark</a></li><li>打开 Wireshark，选择你正在使用的网络接口（Wi-Fi 或有线网卡）</li><li>在过滤器中输入 <code>udp.port == 53</code>，只显示 DNS 流量</li><li>开始捕获</li><li>正常使用浏览器，访问几个不同的网站</li><li>观察捕获到的 DNS 数据包</li></ol><p><strong>如何解读：</strong></p><ul><li><strong>没有泄漏</strong>：在代理开启的状态下，过滤器 <code>udp.port == 53</code> 应该几乎捕获不到任何数据包。因为在 TUN + Fake-IP 模式下，DNS 查询要么在本地被 Fake-IP 拦截返回假 IP（不产生真实 UDP DNS 查询），要么通过 DoH（走 HTTPS，不走 UDP 53）发送。网卡上不应该出现明文 DNS 流量。</li><li><strong>有泄漏</strong>：你看到了发往 ISP DNS 服务器（如 <code>192.168.1.1</code> 或 ISP 分配的 DNS 地址）的 DNS 查询。数据包的详细信息里能看到查询的域名——如果这些域名包含 <code>google.com</code>、<code>youtube.com</code> 等需要代理的网站，确认泄漏。</li><li><strong>DoH 查询</strong>：如果你看到发往 <code>223.5.5.5</code>（阿里 DNS）或 <code>1.12.12.12</code>（腾讯 DNS）的 HTTPS 流量（TCP 443），但没有 UDP 53 流量，这说明你的代理客户端在使用 DoH 发送 DNS 查询。只要这些查询的目标是国内域名，这不算泄漏——这是正常行为。</li></ul><p>Wireshark 抓包的另一个用途是检测 IPv6 DNS 泄漏。将过滤器改为 <code>udp.port == 53 &amp;&amp; ipv6</code>，如果在代理开启时仍然捕获到 IPv6 DNS 查询，说明你的 IPv6 DNS 正在泄漏。</p><hr><h2 id="如何防止-DNS-泄漏"><a href="#如何防止-DNS-泄漏" class="headerlink" title="如何防止 DNS 泄漏"></a>如何防止 DNS 泄漏</h2><p>检测完毕，如果发现泄漏，接下来就是修复。以下五个方案按推荐程度排序。</p><h3 id="方案一：使用-TUN-模式（最有效）"><a href="#方案一：使用-TUN-模式（最有效）" class="headerlink" title="方案一：使用 TUN 模式（最有效）"></a>方案一：使用 TUN 模式（最有效）</h3><p>TUN 模式是防止 DNS 泄漏最根本的方案。</p><p>TUN（网络隧道）模式在操作系统层面创建一个虚拟网卡，所有网络流量——包括 TCP、UDP、ICMP 等所有协议——都会经过这个虚拟网卡，被代理客户端接管。</p><p>与系统代理的区别在于：</p><ul><li><strong>系统代理</strong>：只接管遵循系统代理设置的 HTTP&#x2F;HTTPS 流量，DNS（UDP 53）不在接管范围内</li><li><strong>TUN 模式</strong>：在网络栈的最底层接管所有流量，包括 DNS 查询。任何应用程序的任何网络请求，无论使用什么协议、什么端口，都逃不过 TUN 的拦截</li></ul><p>在 TUN 模式下，即使应用程序硬编码了 DNS 服务器（如 <code>8.8.8.8</code>），这些 DNS 查询也会被代理客户端拦截并处理。应用无法绕过 TUN 的 DNS 劫持——因为所有流量都要经过虚拟网卡。</p><p>开启方法（以 <a href="https://github.com/clash-verge-rev/clash-verge-rev">Clash Verge Rev</a> 为例）：</p><ol><li>打开 Clash Verge</li><li>进入设置，找到 TUN 模式开关</li><li>开启 TUN 模式</li><li>首次开启可能需要管理员权限（安装虚拟网卡驱动）</li></ol><p>注意事项：</p><ul><li>TUN 模式需要管理员权限，因为它要在系统层面创建虚拟网卡</li><li>某些企业网络环境可能限制 TUN 模式的使用</li><li>TUN 模式与其他 VPN 软件可能冲突——同一时间只能有一个 TUN 设备接管网络</li></ul><blockquote><p>关于 TUN 模式的详细原理和配置，参见 <a href="../software/tun-vs-system-proxy.md">TUN 模式 vs 系统代理</a>。</p></blockquote><h3 id="方案二：使用-Fake-IP-模式"><a href="#方案二：使用-Fake-IP-模式" class="headerlink" title="方案二：使用 Fake-IP 模式"></a>方案二：使用 Fake-IP 模式</h3><p>Fake-IP 是从 DNS 解析层面杜绝泄漏的方案。</p><p>在 Fake-IP 模式下，代理客户端不会为需要走代理的域名发起任何真实的 DNS 查询。当浏览器请求 <code>google.com</code> 的 DNS 解析时，客户端直接返回一个假 IP（如 <code>198.18.0.1</code>），然后在数据连接阶段将域名传递给远端代理节点，由节点在海外完成真正的 DNS 解析。</p><p>从头到尾，<code>google.com</code> 的真实 DNS 查询从未在你的本地网络上发生过。ISP 和 GFW 看不到任何关于 <code>google.com</code> 的 DNS 请求——因为确实没有这样的请求存在。</p><p>对于直连域名（如 <code>baidu.com</code>），Fake-IP 模式会使用 <code>nameserver</code> 中配置的国内 DNS 进行真实解析。这些查询到达国内 DNS 服务器，但内容只是国内域名——这不构成泄漏，因为你访问 <code>baidu.com</code> 本来就是正常行为。</p><p><strong>Fake-IP + TUN 的组合是目前防止 DNS 泄漏的最佳方案。</strong> TUN 确保所有流量都被接管，Fake-IP 确保代理域名从不在本地解析。两者结合，DNS 泄漏的可能性降到接近零。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># ✅ 推荐配置</span></span><br><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">enhanced-mode:</span> <span class="string">fake-ip</span></span><br><span class="line">  <span class="attr">fake-ip-range:</span> <span class="number">198.18</span><span class="number">.0</span><span class="number">.1</span><span class="string">/16</span></span><br><span class="line">  <span class="attr">nameserver:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://doh.pub/dns-query</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://dns.alidns.com/dns-query</span></span><br></pre></td></tr></table></figure><blockquote><p>关于 Fake-IP 的详细原理，参见 <a href="./fake-ip-vs-redir-host.md">Fake-IP vs Redir-Host</a>。</p></blockquote><h3 id="方案三：正确配置-DNS-加密"><a href="#方案三：正确配置-DNS-加密" class="headerlink" title="方案三：正确配置 DNS 加密"></a>方案三：正确配置 DNS 加密</h3><p>即使你无法使用 TUN 模式（某些企业环境的限制），正确配置 DNS 加密也能大幅降低泄漏的风险。</p><p>传统 DNS 查询使用 UDP 53 端口明文传输。ISP 和 GFW 可以轻松读取查询内容并进行篡改。DoH（DNS over HTTPS）和 DoT（DNS over TLS）将 DNS 查询封装在加密通道中——即使查询被截获，第三方也无法读取查询的域名。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">enhanced-mode:</span> <span class="string">fake-ip</span></span><br><span class="line">  <span class="attr">nameserver:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://doh.pub/dns-query</span>          <span class="comment"># 腾讯 DoH — 加密传输</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://dns.alidns.com/dns-query</span>   <span class="comment"># 阿里 DoH — 加密传输</span></span><br><span class="line">  <span class="comment"># 不要使用：</span></span><br><span class="line">  <span class="comment"># - 8.8.8.8          ← 明文 UDP，会被劫持</span></span><br><span class="line">  <span class="comment"># - 114.114.114.114   ← 明文 UDP，可被运营商篡改</span></span><br></pre></td></tr></table></figure><p>DoH 的保护范围：</p><ul><li><strong>防窃听</strong>：ISP 无法看到你查询了什么域名</li><li><strong>防篡改</strong>：GFW 无法对 DoH 查询进行 DNS 污染（但可以封锁 DoH 服务器的 IP）</li><li><strong>防运营商劫持</strong>：某些运营商会劫持明文 DNS 查询，插入广告或重定向。DoH 完全避免了这个问题</li></ul><p>需要注意：DoH 不能替代 TUN 模式。DoH 只加密了 DNS 查询的传输过程，但如果你使用的是系统代理模式，DNS 查询本身仍然不经过代理客户端——操作系统会直接发送 DoH 请求到配置的 DNS 服务器。虽然内容加密了，但 ISP 仍然能看到你在连接某个 DoH 服务器（通过 IP 地址）。</p><h3 id="方案四：禁用-IPv6"><a href="#方案四：禁用-IPv6" class="headerlink" title="方案四：禁用 IPv6"></a>方案四：禁用 IPv6</h3><p>如果你不需要 IPv6，关闭它是消除 IPv6 DNS 泄漏的最简单方法。</p><p>在代理客户端的 DNS 配置中禁用 IPv6：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">ipv6:</span> <span class="literal">false</span></span><br></pre></td></tr></table></figure><p>这个配置告诉代理客户端：不处理 AAAA 记录（IPv6 DNS 记录），所有 DNS 查询只返回 A 记录（IPv4）。</p><p>你也可以在操作系统层面禁用 IPv6：</p><p><strong>Windows：</strong></p><ol><li>打开”网络和 Internet 设置”</li><li>点击当前连接的网络适配器</li><li>找到”Internet 协议版本 6 (TCP&#x2F;IPv6)”</li><li>取消勾选</li></ol><p><strong>macOS：</strong><br>打开终端，执行 <code>sudo networksetup -setv6off Wi-Fi</code></p><p>禁用 IPv6 不会影响正常上网——2026 年的绝大多数网站和服务仍然完全支持 IPv4 访问。除非你有明确的 IPv6 需求（比如 BT 下载需要 IPv6 来改善 NAT 穿透，或者你的 ISP 要求使用 IPv6），否则关闭 IPv6 是一个无副作用的安全措施。</p><h3 id="方案五：关闭-WebRTC"><a href="#方案五：关闭-WebRTC" class="headerlink" title="方案五：关闭 WebRTC"></a>方案五：关闭 WebRTC</h3><p>WebRTC 泄漏虽然不是严格意义上的 DNS 泄漏，但它能暴露你的真实 IP，效果同样致命。</p><p><strong>Chrome 浏览器：</strong></p><p>方式一：安装浏览器扩展。搜索并安装 “WebRTC Leak Prevent” 或 “WebRTC Control” 扩展。这些扩展可以控制 WebRTC 的行为，阻止它泄漏你的真实 IP。</p><p>方式二：通过 Chrome flags 设置。在地址栏输入 <code>chrome://flags</code>，搜索 “WebRTC”，根据可用选项调整设置。不同 Chrome 版本的可用 flags 可能不同。</p><p><strong>Firefox 浏览器：</strong></p><p>Firefox 提供了更直接的控制方式：</p><ol><li>在地址栏输入 <code>about:config</code></li><li>搜索 <code>media.peerconnection.enabled</code></li><li>将其值设置为 <code>false</code></li></ol><p>这会完全禁用 WebRTC 功能。副作用是：基于 WebRTC 的网页视频通话和语音聊天将无法使用（如部分网页版视频会议工具）。如果你需要这些功能，建议在需要时临时开启，用完后关闭。</p><p><strong>最佳方案：TUN 模式处理 WebRTC。</strong> 如果你已经开启了 TUN 模式，WebRTC 的 STUN 请求也会被代理客户端接管。STUN 服务器看到的是你代理节点的 IP 而非你的真实 IP。在这种情况下，WebRTC 不会造成泄漏，你也不需要手动禁用它。</p><hr><h2 id="泄漏检测清单"><a href="#泄漏检测清单" class="headerlink" title="泄漏检测清单"></a>泄漏检测清单</h2><p>在完成防泄漏配置后，用以下清单逐项检查，确保没有遗漏。</p><ul><li><input disabled="" type="checkbox"> <strong>代理模式</strong>：是 TUN 还是系统代理？TUN 更安全。系统代理模式下 DNS 泄漏几乎不可避免。</li><li><input disabled="" type="checkbox"> <strong>DNS 增强模式</strong>：是 Fake-IP 还是 Redir-Host？Fake-IP 更安全。Fake-IP 从根本上避免了代理域名的本地 DNS 查询。</li><li><input disabled="" type="checkbox"> <strong>DNS 加密</strong>：nameserver 使用 DoH&#x2F;DoT 还是明文 UDP？DoH&#x2F;DoT 更安全。明文 DNS 查询可被 ISP 和 GFW 读取和篡改。</li><li><input disabled="" type="checkbox"> <strong>IPv6</strong>：是否需要 IPv6？不需要就关闭。IPv6 DNS 查询是容易被忽略的泄漏渠道。</li><li><input disabled="" type="checkbox"> <strong>在线检测</strong>：<code>dnsleaktest.com</code> 的 Extended test 是否通过？结果中应该只有海外 DNS 服务器。</li><li><input disabled="" type="checkbox"> <strong>WebRTC</strong>：WebRTC 是否已关闭或由 TUN 模式处理？可在 <code>browserleaks.com/webrtc</code> 检测。</li></ul><p>如果以上所有项目都满足安全要求，你的 DNS 泄漏风险已经降到了接近零的水平。</p><hr><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><p><strong>Q：DNS 泄漏有什么实际危险？</strong></p><p>你的 ISP——以及通过 ISP 的 GFW——能看到你查询的所有域名。虽然他们看不到你访问的具体内容（因为有 TLS 加密），但”你在查询 google.com &#x2F; twitter.com”这个信息本身在特定环境下就是敏感的。DNS 查询日志可以完整地还原你的浏览历史：你什么时候访问了什么网站，频率是多少，持续了多长时间。这些元数据的价值有时候比内容本身更高。在极端情况下，持续的敏感域名查询记录可能引起不必要的关注。</p><p><strong>Q：用了 Fake-IP 就不会泄漏了吗？</strong></p><p>Fake-IP 大幅降低了泄漏风险，但不能说百分之百消除。如果你使用的是系统代理模式而非 TUN 模式，某些应用程序仍然可能绕过代理客户端的 DNS 拦截，直接向系统 DNS 或硬编码的 DNS 服务器发送查询。<strong>Fake-IP + TUN 才是最安全的组合。</strong> TUN 确保所有流量被代理客户端接管，Fake-IP 确保代理域名从不触发本地真实 DNS 查询。两者缺一不可。</p><p><strong>Q：检测显示有泄漏怎么办？</strong></p><p>按以下优先级排查：</p><p>第一步，确认你的代理模式。如果是系统代理，切换到 TUN 模式。这一步解决了绝大多数 DNS 泄漏问题。</p><p>第二步，如果已经是 TUN 模式，检查 DNS 配置。确认 <code>enhanced-mode</code> 设置为 <code>fake-ip</code>，<code>nameserver</code> 中只有国内 DoH 服务器（如腾讯 DoH、阿里 DoH），没有明文 DNS，没有海外 DNS。</p><p>第三步，检查 IPv6。如果你的网络有 IPv6，确认代理客户端的 DNS 配置中 <code>ipv6: false</code>，或者 TUN 模式同时接管了 IPv6。</p><p>第四步，检查是否有其他 VPN 或代理软件冲突。同时运行两个 VPN&#x2F;代理客户端可能导致 DNS 路由混乱。确保只有一个代理客户端在运行。</p><p>第五步，检查操作系统的 DNS 设置。某些系统更新可能会重置 DNS 设置，将其改回 ISP 的默认 DNS。确认你的系统 DNS 指向代理客户端的本地监听地址（通常是 <code>127.0.0.1</code> 或代理客户端自动设置的地址）。</p><p><strong>Q：手机上也会 DNS 泄漏吗？</strong></p><p>iOS 和 Android 上的代理客户端（如 Shadowrocket、Quantumult X、Clash for Android、sing-box）通常通过系统的 VPN 接口工作——这个接口的工作方式类似于桌面端的 TUN 模式，在系统层面接管所有网络流量，包括 DNS 查询。因此，手机上的 DNS 泄漏风险通常比桌面端低。</p><p>但也有例外。如果你在手机上使用的是简单的 HTTP 代理模式（而非 VPN 模式），DNS 查询仍然会走本地网络，存在泄漏风险。另外，Android 系统从 9.0 开始引入了”私人 DNS”功能（实际上是 DNS over TLS），如果这个功能配置了和代理客户端冲突的 DNS 服务器，可能导致 DNS 查询走了意料之外的路径。</p><p>建议：在手机上确认代理客户端使用的是 VPN 模式（状态栏应该出现 VPN 图标），而不是简单的 HTTP 代理模式。</p><p><strong>Q：DoH 和 Fake-IP 有什么区别？它们解决的是同一个问题吗？</strong></p><p>不是。它们解决的是 DNS 安全的不同层面。</p><p><strong>DoH</strong> 解决的是 DNS 查询的<strong>传输安全</strong>问题。它将 DNS 查询加密，防止中间人（ISP、GFW）读取或篡改查询内容。但 DoH 不改变 DNS 查询发生的位置——查询仍然在本地发起，只是传输过程变成了加密的。</p><p><strong>Fake-IP</strong> 解决的是 DNS 查询的<strong>发生位置</strong>问题。它让需要代理的域名根本不在本地进行真实 DNS 查询——本地只分配一个假 IP 占位，真正的 DNS 查询在远端代理节点完成。</p><p>两者互补而非互斥。推荐的配置是：Fake-IP 模式 + DoH 格式的 nameserver。Fake-IP 确保代理域名不在本地解析；DoH 确保直连域名的 DNS 查询（发往国内 DNS）也是加密的，不被运营商劫持或篡改。</p><p><strong>Q：Wireshark 抓包看到有 DNS 查询，但目标地址是 127.0.0.1，这算泄漏吗？</strong></p><p>不算。发往 <code>127.0.0.1</code>（本地回环地址）的 DNS 查询是应用程序向代理客户端的本地 DNS 监听端口发送的查询请求。这些查询不会离开你的设备，也不会经过任何外部网络。它们会被代理客户端接收并处理——走 Fake-IP 映射或通过配置的 DNS 服务器进行加密查询。</p><p>真正的泄漏是 DNS 查询发往了外部 IP 地址（如你 ISP 的 DNS 服务器地址），而不是本地回环地址。</p>]]>
    </content>
    <id>https://blog.e.show/posts/dns-leak/</id>
    <link href="https://blog.e.show/posts/dns-leak/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>DNS 泄漏意味着你的 ISP 仍然知道你在访问哪些网站。解释泄漏原理、检测方法和预防措施。</summary>
    <title>DNS 泄漏是什么、怎么检测、怎么防</title>
    <updated>2026-05-11T21:40:36.948Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="GFW 与审查" scheme="https://blog.e.show/categories/GFW-%E4%B8%8E%E5%AE%A1%E6%9F%A5/"/>
    <category term="TLS" scheme="https://blog.e.show/tags/TLS/"/>
    <category term="ECH" scheme="https://blog.e.show/tags/ECH/"/>
    <category term="加密" scheme="https://blog.e.show/tags/%E5%8A%A0%E5%AF%86/"/>
    <category term="GFW" scheme="https://blog.e.show/tags/GFW/"/>
    <category term="SNI" scheme="https://blog.e.show/tags/SNI/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：TLS 握手中的 SNI 字段是明文传输的，GFW 正是利用它来判断你访问的是什么网站。ECH（Encrypted Client Hello）旨在加密整个 Client Hello 的敏感部分，从协议层面消除 SNI 暴露。然而，GFW 已经开始直接封锁带有 ECH 扩展的连接。本文分析 ECH 的工作原理、GFW 的应对手段、ECH 与 Reality 的路线差异，以及 ECH 真正发挥作用所需要的条件。</p></blockquote><h2 id="SNI-暴露问题：TLS-握手的阿喀琉斯之踵"><a href="#SNI-暴露问题：TLS-握手的阿喀琉斯之踵" class="headerlink" title="SNI 暴露问题：TLS 握手的阿喀琉斯之踵"></a>SNI 暴露问题：TLS 握手的阿喀琉斯之踵</h2><p>TLS 协议的设计目标是保护通信内容不被窃听和篡改。在 TLS 1.3 中，握手完成后的所有数据都是加密的，外部观察者无法读取任何应用层内容。但问题出在握手过程本身。</p><p>在 TLS 握手的第一步，客户端向服务器发送 <strong>Client Hello</strong> 消息。这条消息包含了大量连接参数，其中有一个关键字段叫做 <strong>SNI（Server Name Indication）</strong>。SNI 的作用是告诉服务器”我想连接的是哪个域名”，这在同一 IP 上托管多个域名的场景下是必要的——服务器需要根据域名来选择正确的 TLS 证书。</p><p>问题在于：<strong>SNI 字段是以明文发送的</strong>。</p><p>这意味着任何处于网络路径上的中间设备（ISP、防火墙、GFW）都可以直接读取你要访问的域名，即使后续的所有通信内容都是加密的。对于 GFW 来说，这是一个极其方便的审查点：</p><ul><li>不需要解密任何内容，只需要读取握手阶段的明文字段</li><li>可以精准地按域名进行过滤和封锁</li><li>对性能的影响极小，适合大规模部署</li></ul><p>实际上，SNI 过滤已经是 GFW 封锁特定网站的主要手段之一。当你尝试与一个被封锁的域名建立 TLS 连接时，GFW 会在读取到 SNI 后主动发送 RST 包来中断连接。</p><p>这就是整个问题的根源：<strong>TLS 保护了通信内容，却没有保护”你要和谁通信”这个事实</strong>。</p><h2 id="ECH-是什么"><a href="#ECH-是什么" class="headerlink" title="ECH 是什么"></a>ECH 是什么</h2><p><strong>ECH（Encrypted Client Hello）</strong> 是 IETF 正在推进的一项 TLS 扩展标准，编号为 <code>draft-ietf-tls-esni</code>。它的前身是 ESNI（Encrypted SNI），但 ESNI 只加密了 SNI 一个字段，设计上存在局限性。ECH 将加密范围扩大到了整个 Client Hello 的敏感部分，是 ESNI 的全面升级。</p><p>ECH 的核心目标只有一个：<strong>让网络中间设备无法从 TLS 握手中获取连接目标的信息</strong>。</p><p>具体来说，ECH 将原本单一的 Client Hello 拆分成两层：</p><ul><li><strong>外层（Outer Client Hello）</strong>：以明文发送，包含一个”掩护”用的 SNI，通常指向 CDN 的域名</li><li><strong>内层（Inner Client Hello）</strong>：被加密，包含真实的 SNI 和其他敏感握手参数</li></ul><p>这样一来，中间设备只能看到外层的掩护域名，无法得知客户端实际要连接的是哪个网站。</p><h2 id="工作原理：双层-Client-Hello"><a href="#工作原理：双层-Client-Hello" class="headerlink" title="工作原理：双层 Client Hello"></a>工作原理：双层 Client Hello</h2><p>ECH 的运作依赖于一个预先分发的公钥。整个流程如下：</p><h3 id="密钥获取"><a href="#密钥获取" class="headerlink" title="密钥获取"></a>密钥获取</h3><p>客户端在发起 TLS 连接之前，需要通过 <strong>DNS HTTPS 记录</strong>（也叫 SVCB 记录）获取目标域名的 ECH 配置，其中包含服务器的 ECH 公钥。这个公钥用于加密内层 Client Hello。</p><p>例如，查询 <code>example.com</code> 的 DNS HTTPS 记录，可能会返回类似这样的信息：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">example.com.  IN HTTPS 1 . alpn=&quot;h2&quot; ech=&quot;AEX+...&quot;</span><br></pre></td></tr></table></figure><p>其中 <code>ech=</code> 字段就包含了 ECH 的公钥配置。</p><h3 id="握手流程"><a href="#握手流程" class="headerlink" title="握手流程"></a>握手流程</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">sequenceDiagram</span><br><span class="line">    participant C as 客户端</span><br><span class="line">    participant DNS as DNS 服务器</span><br><span class="line">    participant CDN as CDN / 前端服务器</span><br><span class="line">    participant S as 目标服务器</span><br><span class="line"></span><br><span class="line">    C-&gt;&gt;DNS: 查询 example.com 的 HTTPS 记录</span><br><span class="line">    DNS--&gt;&gt;C: 返回 ECH 公钥配置</span><br><span class="line"></span><br><span class="line">    Note over C: 用 ECH 公钥加密&lt;br/&gt;Inner Client Hello</span><br><span class="line"></span><br><span class="line">    C-&gt;&gt;CDN: Outer Client Hello&lt;br/&gt;SNI = cdn.example.net（掩护）&lt;br/&gt;+ 加密的 Inner Client Hello&lt;br/&gt;（真实 SNI = example.com）</span><br><span class="line"></span><br><span class="line">    Note over CDN: 解密 Inner Client Hello&lt;br/&gt;获取真实 SNI</span><br><span class="line"></span><br><span class="line">    CDN-&gt;&gt;S: 转发连接到目标服务器</span><br><span class="line">    S--&gt;&gt;C: Server Hello + 完成握手</span><br><span class="line"></span><br><span class="line">    Note over C,S: 后续通信完全加密</span><br></pre></td></tr></table></figure><p>以上流程的关键点：</p><ol><li><strong>外层 SNI 是掩护</strong>：中间设备看到的 SNI 是 CDN 的域名（如 <code>cdn.example.net</code>），而不是真实的目标域名</li><li><strong>内层被加密</strong>：真实的 SNI 和其他敏感参数被 ECH 公钥加密，只有前端服务器能解密</li><li><strong>依赖 DNS</strong>：ECH 公钥通过 DNS HTTPS 记录分发，因此也需要加密 DNS（如 DoH&#x2F;DoT）来防止公钥被篡改或窃取</li></ol><h2 id="浏览器支持"><a href="#浏览器支持" class="headerlink" title="浏览器支持"></a>浏览器支持</h2><p>截至目前，主流浏览器对 ECH 的支持情况如下：</p><table><thead><tr><th>浏览器</th><th>ECH 支持状态</th></tr></thead><tbody><tr><td>Firefox</td><td>自 Firefox 118 起默认启用 ECH（需要启用 DoH）</td></tr><tr><td>Chrome</td><td>自 Chrome 117 起支持 ECH（需要启用安全 DNS）</td></tr><tr><td>Safari</td><td>部分版本中开始实验性支持</td></tr><tr><td>Edge</td><td>跟随 Chromium 内核，支持与 Chrome 基本一致</td></tr></tbody></table><p>需要注意的是，浏览器启用 ECH 有一个<strong>前提条件</strong>：必须同时使用加密 DNS（DoH 或 DoT）。这很好理解——如果 DNS 查询本身是明文的，攻击者可以直接从 DNS 响应中获取 ECH 配置，或者篡改 DNS 返回结果来移除 ECH 公钥。</p><p>此外，服务端也需要支持 ECH。目前 <strong>Cloudflare</strong> 是最积极的推动者，已经为其平台上托管的所有域名默认启用了 ECH 支持。</p><h2 id="GFW-的应对：直接封锁-ECH"><a href="#GFW-的应对：直接封锁-ECH" class="headerlink" title="GFW 的应对：直接封锁 ECH"></a>GFW 的应对：直接封锁 ECH</h2><p>既然 ECH 的目的是隐藏 SNI，GFW 的对策非常直接——<strong>检测到 ECH 扩展，就封锁整个连接</strong>。</p><p>ECH 在 TLS 协议中以一个特定的 <strong>TLS 扩展</strong>形式存在，扩展类型编号为 <code>0xfe0d</code>（十进制 65037）。这个扩展出现在 Client Hello 的扩展列表中，而扩展列表本身是明文的。这意味着：</p><ul><li>GFW 不需要解密任何内容</li><li>只需要检查 Client Hello 的扩展列表中是否包含 <code>0xfe0d</code> 类型的扩展</li><li>一旦检测到，直接丢弃数据包或发送 RST 中断连接</li></ul><p>实测表明，GFW 确实在实施这种封锁策略。使用启用了 ECH 的浏览器访问 Cloudflare 托管的网站时，如果 DNS 返回了 ECH 配置，浏览器会尝试使用 ECH 握手，而这些连接会被 GFW 阻断。浏览器在 ECH 握手失败后通常会回退到普通的 TLS 握手（不带 ECH），此时连接可以成功建立，但 SNI 又暴露了。</p><h2 id="为什么-GFW-能封-ECH"><a href="#为什么-GFW-能封-ECH" class="headerlink" title="为什么 GFW 能封 ECH"></a>为什么 GFW 能封 ECH</h2><p>有人可能会问：ECH 不是把内层加密了吗？为什么 GFW 还是能检测和封锁？</p><p>原因在于 ECH 有两个无法隐藏的特征：</p><h3 id="1-ECH-扩展标识本身是明文的"><a href="#1-ECH-扩展标识本身是明文的" class="headerlink" title="1. ECH 扩展标识本身是明文的"></a>1. ECH 扩展标识本身是明文的</h3><p>TLS Client Hello 的格式是固定的：先是协议版本、随机数、加密套件列表，然后是扩展列表。每个扩展都有一个类型编号和长度，这些元数据是明文的。ECH 扩展的类型编号 <code>0xfe0d</code> 就像一面旗帜，告诉所有中间设备”这个连接正在使用 ECH”。</p><p>ECH 加密的是扩展的<strong>内容</strong>（即内层 Client Hello），而不是扩展的<strong>存在性</strong>。</p><h3 id="2-外层与内层-SNI-的差异"><a href="#2-外层与内层-SNI-的差异" class="headerlink" title="2. 外层与内层 SNI 的差异"></a>2. 外层与内层 SNI 的差异</h3><p>即使不看扩展标识，外层 Client Hello 的 SNI 指向 CDN 域名本身就是一个可检测的特征。GFW 可以通过以下方式进行关联分析：</p><ul><li>外层 SNI 指向的 CDN 域名通常是少数几个固定的值</li><li>大量不同用户的连接都使用相同的外层 SNI，但来自不同的 IP 地址</li><li>这种流量模式与正常的 CDN 访问有可辨别的差异</li></ul><p>总结一下：<strong>ECH 加密了 SNI 的内容，但无法隐藏自己正在使用 ECH 的事实</strong>。在当前阶段，使用 ECH 本身就是一个可被检测和封锁的特征。</p><h2 id="ECH-vs-Reality：两条不同的技术路线"><a href="#ECH-vs-Reality：两条不同的技术路线" class="headerlink" title="ECH vs Reality：两条不同的技术路线"></a>ECH vs Reality：两条不同的技术路线</h2><p>ECH 和 VLESS+Reality 都在尝试解决 SNI 暴露的问题，但思路完全不同。</p><table><thead><tr><th>对比维度</th><th>ECH</th><th>Reality</th></tr></thead><tbody><tr><td>方法论</td><td>正面解决：加密 SNI</td><td>侧面绕过：借用合法网站的证书和 SNI</td></tr><tr><td>标准化</td><td>IETF 标准草案，主流浏览器支持</td><td>非标准，代理社区自研</td></tr><tr><td>是否依赖 CDN</td><td>是，需要 CDN 支持 ECH</td><td>否，独立运行</td></tr><tr><td>GFW 可检测性</td><td>高：ECH 扩展明确可识别</td><td>低：流量与正常 HTTPS 几乎无法区分</td></tr><tr><td>适用场景</td><td>通用的隐私保护</td><td>专门的审查规避</td></tr><tr><td>部署方式</td><td>浏览器 + 服务端 + 加密 DNS</td><td>代理客户端 + 代理服务端</td></tr></tbody></table><p><strong>ECH 是”正面突破”</strong>：它试图通过加密来从根本上消除 SNI 暴露，是一种协议层面的解决方案。它的目标不仅仅是绕过审查，而是保护所有用户的连接隐私。</p><p><strong>Reality 是”侧面迂回”</strong>：它不依赖 ECH，而是让代理服务器伪装成一个完全合法的 HTTPS 网站。代理连接的 SNI 填写的就是那个合法网站的域名，TLS 握手中使用的也是那个网站的真实证书。GFW 看到的是一个完全正常的 HTTPS 连接，没有任何异常特征。</p><p>在当前 GFW 已经封锁 ECH 的情况下，Reality 的实用性显然更强。但从长远来看，ECH 如果能普及，将从根本上改变格局。</p><h2 id="未来展望：当-ECH-变成默认行为"><a href="#未来展望：当-ECH-变成默认行为" class="headerlink" title="未来展望：当 ECH 变成默认行为"></a>未来展望：当 ECH 变成默认行为</h2><p>ECH 目前面临的困境是一个典型的<strong>先有鸡还是先有蛋</strong>的问题：</p><ul><li>ECH 用户太少 → GFW 可以直接封锁 ECH 而不影响正常流量</li><li>GFW 封锁 ECH → 更少的用户能使用 ECH</li><li>更少的用户使用 ECH → ECH 推广更加困难</li></ul><p>但这个僵局有一个理论上的破解点：<strong>如果 ECH 成为 TLS 标准的默认行为</strong>。</p><p>设想一个未来场景：所有主流浏览器默认启用 ECH，所有主流 CDN 和网站服务器默认支持 ECH，所有 TLS 连接都携带 ECH 扩展。在这种情况下：</p><ul><li><strong>封锁 ECH &#x3D; 封锁所有 HTTPS 连接</strong></li><li>这将导致整个互联网的 HTTPS 通信中断</li><li>GFW 无法承受这样的代价</li></ul><p>这就像 HTTPS 本身的普及历程。在早期，HTTPS 只有银行和电商网站使用，如果当时封锁 HTTPS，影响范围有限。但当 HTTPS 成为所有网站的默认选项后，封锁 HTTPS 就等于封锁整个互联网——这是任何审查系统都无法接受的代价。</p><p>ECH 需要走同样的路。从”少数网站支持的可选功能”变成”所有网站默认启用的标准行为”。</p><h3 id="但这需要很长时间"><a href="#但这需要很长时间" class="headerlink" title="但这需要很长时间"></a>但这需要很长时间</h3><p>ECH 的全面普及面临多个现实障碍：</p><ol><li><strong>标准尚未最终确定</strong>：<code>draft-ietf-tls-esni</code> 仍然是草案状态，虽然已经接近完成，但正式成为 RFC 还需要时间</li><li><strong>服务端部署缓慢</strong>：除了 Cloudflare，其他 CDN 和服务提供商对 ECH 的支持进度参差不齐</li><li><strong>加密 DNS 是前提</strong>：ECH 需要 DoH&#x2F;DoT 配合才有意义，而加密 DNS 本身在很多地区也面临限制</li><li><strong>企业网络阻力</strong>：很多企业依赖 SNI 来进行流量审查和安全监控，它们可能不愿意放弃这个能力</li><li><strong>兼容性问题</strong>：一些老旧的中间设备（防火墙、负载均衡器）可能无法正确处理 ECH 扩展，导致连接失败</li></ol><p>乐观估计，ECH 成为 TLS 生态的默认行为可能需要<strong>数年时间</strong>。在这段过渡期内，ECH 对于审查规避的实际作用有限。</p><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="ECH-和-ESNI-有什么区别？"><a href="#ECH-和-ESNI-有什么区别？" class="headerlink" title="ECH 和 ESNI 有什么区别？"></a>ECH 和 ESNI 有什么区别？</h3><p>ESNI（Encrypted SNI）是 ECH 的前身，只加密了 Client Hello 中的 SNI 字段。ECH 是全面升级，加密了整个 Client Hello 的内层，包括 SNI、ALPN 等所有敏感参数。ESNI 已经被废弃，由 ECH 取代。</p><h3 id="为什么-ECH-需要加密-DNS？"><a href="#为什么-ECH-需要加密-DNS？" class="headerlink" title="为什么 ECH 需要加密 DNS？"></a>为什么 ECH 需要加密 DNS？</h3><p>ECH 的公钥通过 DNS HTTPS 记录分发。如果 DNS 查询是明文的，GFW 可以：(1) 读取 DNS 响应获知你要访问的域名；(2) 篡改 DNS 响应移除 ECH 公钥，使客户端无法使用 ECH。因此必须配合 DoH 或 DoT 使用。</p><h3 id="现在使用-ECH-能绕过-GFW-吗？"><a href="#现在使用-ECH-能绕过-GFW-吗？" class="headerlink" title="现在使用 ECH 能绕过 GFW 吗？"></a>现在使用 ECH 能绕过 GFW 吗？</h3><p>不能。GFW 已经在检测并封锁带有 ECH 扩展的 TLS 连接。使用 ECH 不但不能绕过审查，反而会因为连接被阻断而导致访问失败。浏览器通常会在 ECH 失败后回退到普通 TLS，此时 SNI 仍然是暴露的。</p><h3 id="ECH-对日常隐私有帮助吗？"><a href="#ECH-对日常隐私有帮助吗？" class="headerlink" title="ECH 对日常隐私有帮助吗？"></a>ECH 对日常隐私有帮助吗？</h3><p>在不存在主动审查封锁的网络环境中，ECH 确实能有效防止 ISP 和其他中间设备通过 SNI 监控你的访问目标。对于关注隐私的用户来说，ECH + 加密 DNS 是有意义的组合。</p><h3 id="Reality-协议未来会被-ECH-取代吗？"><a href="#Reality-协议未来会被-ECH-取代吗？" class="headerlink" title="Reality 协议未来会被 ECH 取代吗？"></a>Reality 协议未来会被 ECH 取代吗？</h3><p>短期内不会。两者解决的问题有交集但不完全相同。ECH 是通用的隐私保护标准，Reality 是专门针对审查规避设计的方案。即使 ECH 完全普及，代理协议仍然有其存在价值，只是在对抗 SNI 暴露这个具体问题上，ECH 可能会让 Reality 的这一优势变得不那么关键。</p><h2 id="延伸阅读"><a href="#延伸阅读" class="headerlink" title="延伸阅读"></a>延伸阅读</h2><ul><li><a href="https://datatracker.ietf.org/doc/draft-ietf-tls-esni/">ECH 标准草案（draft-ietf-tls-esni）</a></li><li><a href="https://blog.cloudflare.com/encrypted-client-hello/">Cloudflare ECH 介绍博客</a></li><li><a href="https://github.com/XTLS/REALITY">REALITY 项目</a></li></ul>]]>
    </content>
    <id>https://blog.e.show/posts/ech-future/</id>
    <link href="https://blog.e.show/posts/ech-future/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>ECH 加密 TLS 握手中的 SNI 字段，理论上让 GFW 无法得知连接目标。但 GFW 已经在封锁 ECH 连接。</summary>
    <title>ECH（Encrypted Client Hello）：未来能解决问题吗</title>
    <updated>2026-05-09T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="DNS 专题" scheme="https://blog.e.show/categories/DNS-%E4%B8%93%E9%A2%98/"/>
    <category term="DNS" scheme="https://blog.e.show/tags/DNS/"/>
    <category term="加密" scheme="https://blog.e.show/tags/%E5%8A%A0%E5%AF%86/"/>
    <category term="DoH" scheme="https://blog.e.show/tags/DoH/"/>
    <category term="DoT" scheme="https://blog.e.show/tags/DoT/"/>
    <category term="DoQ" scheme="https://blog.e.show/tags/DoQ/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>: 传统 DNS 查询以明文传输，容易被监听和篡改（DNS 污染）。加密 DNS 协议通过加密 DNS 查询来保护隐私和防止篡改。主流的加密 DNS 协议包括 DNS over HTTPS (DoH)、DNS over TLS (DoT) 和 DNS over QUIC (DoQ)。本文对比三者的原理、优劣和在代理场景中的选择。</p></blockquote><hr><h2 id="为什么需要加密-DNS"><a href="#为什么需要加密-DNS" class="headerlink" title="为什么需要加密 DNS"></a>为什么需要加密 DNS</h2><p>传统 DNS 使用 UDP 协议的 53 端口，查询和响应内容完全明文，没有任何加密或完整性校验。这意味着网络路径上的任何节点都能看到你在查什么域名、得到了什么结果，也能随意篡改返回的结果。</p><p>具体来说，明文 DNS 面临以下威胁：</p><p><strong>窃听。</strong> 你的 ISP（网络运营商）可以完整记录你的所有 DNS 查询。你访问了哪些网站、什么时间访问、访问了多少次——DNS 日志里一清二楚。部分运营商会利用这些数据进行广告投放或用户画像分析。在公共 Wi-Fi 环境下，同一网络内的任何人都可以抓包看到你的 DNS 请求。</p><p><strong>篡改（DNS 污染）。</strong> GFW 对明文 DNS 的利用是最直接的：当你查询被封锁域名的 IP 地址时，GFW 会抢先返回一个伪造的响应，把域名指向错误的 IP。这就是 DNS 污染。由于传统 DNS 没有验证机制，你的设备无法分辨收到的响应是来自真正的 DNS 服务器还是 GFW 的注入。结果就是，即使你的代理完全正常，DNS 污染也会在更前面的环节把连接搞坏。</p><p><strong>中间人攻击。</strong> 在没有加密的情况下，网络中间的任何设备（路由器、交换机、透明代理）都可以拦截 DNS 请求、修改响应内容，或者把请求重定向到另一个 DNS 服务器。用户对此完全无感知。</p><p>加密 DNS 协议解决两个核心问题：</p><ol><li><strong>隐私（Privacy）</strong>——加密传输使第三方无法看到你的 DNS 查询内容</li><li><strong>完整性（Integrity）</strong>——加密和认证机制使第三方无法篡改 DNS 响应</li></ol><p>目前主流的加密 DNS 协议有三种：DoH、DoT 和 DoQ。它们的目标相同，但实现方式不同，各有优劣。</p><hr><h2 id="DNS-over-HTTPS-DoH"><a href="#DNS-over-HTTPS-DoH" class="headerlink" title="DNS over HTTPS (DoH)"></a>DNS over HTTPS (DoH)</h2><h3 id="原理"><a href="#原理" class="headerlink" title="原理"></a>原理</h3><p>DoH 将 DNS 查询封装在标准的 HTTPS 请求中。DNS 客户端向 DoH 服务器发送一个 HTTPS 请求（通常是 POST 或 GET），请求体中包含 DNS 查询的二进制数据（wire format），服务器返回的 HTTPS 响应体中包含 DNS 应答。</p><p>整个过程跑在标准的 HTTPS 协议栈上：TCP 连接 → TLS 握手 → HTTP&#x2F;2 或 HTTP&#x2F;3 传输。DNS 查询在外部观察者看来就是一个普通的 HTTPS 请求，与你访问网页时发送的 HTTPS 请求在形式上没有区别。</p><p>DoH 使用 TCP 端口 443——这与所有 HTTPS 网站使用的端口完全相同。</p><h3 id="常见-DoH-地址格式"><a href="#常见-DoH-地址格式" class="headerlink" title="常见 DoH 地址格式"></a>常见 DoH 地址格式</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">https://doh.pub/dns-query             # 腾讯 DNSPod</span><br><span class="line">https://dns.alidns.com/dns-query      # 阿里 DNS</span><br><span class="line">https://cloudflare-dns.com/dns-query  # Cloudflare</span><br><span class="line">https://dns.google/dns-query          # Google</span><br><span class="line">https://doh.360.cn/dns-query          # 360 DNS</span><br></pre></td></tr></table></figure><h3 id="优势"><a href="#优势" class="headerlink" title="优势"></a>优势</h3><p><strong>极难封锁。</strong> DoH 运行在 443 端口上，这是全球 HTTPS 流量使用的标准端口。封锁 443 端口等于封锁整个互联网，任何防火墙都不会这么做。而且 DoH 流量在网络层面上与普通 HTTPS 请求无法区分——它们使用相同的端口、相同的 TLS 协议、相同的 HTTP 协议。要精确识别并阻断 DoH 流量，需要进行深度包检测（DPI）来分析连接的目标域名（通过 SNI 或 IP 地址），这比封锁一个专用端口的成本高得多。</p><p><strong>客户端支持广泛。</strong> 几乎所有主流代理客户端（Clash、sing-box、V2Ray、Shadowrocket、Surge、Quantumult X）都支持 DoH。主流浏览器（Chrome、Firefox、Edge、Safari）内置了 DoH 支持。Windows、macOS、iOS、Android 的操作系统层面也已支持 DoH。这意味着无论你用什么设备、什么软件，DoH 都能用。</p><p><strong>可穿透 HTTP 代理。</strong> 在某些受限网络环境中（如企业网络只允许通过 HTTP 代理上网），DoH 可以通过 HTTP 代理正常工作，因为它本身就是 HTTP 协议。</p><p><strong>连接复用。</strong> DoH 基于 HTTP&#x2F;2，支持在一个 TCP 连接上多路复用多个 DNS 查询。建立连接后，后续查询不需要重新握手，延迟显著降低。</p><h3 id="劣势"><a href="#劣势" class="headerlink" title="劣势"></a>劣势</h3><p><strong>首次查询延迟较高。</strong> 第一次连接 DoH 服务器时，需要完成 TCP 三次握手 + TLS 握手 + HTTP 协商，总共可能需要 2-3 个 RTT。相比传统 DNS 的单次 UDP 往返，首次查询确实更慢。不过，连接建立后会保持，后续查询延迟与传统 DNS 基本持平。</p><p><strong>HTTP 协议开销。</strong> 每个 DNS 查询都需要包装成 HTTP 请求，增加了 HTTP 头部等额外数据。对于单次查询来说，数据量的增加是可以忽略的，但相比 DoT 直接在 TLS 上传输 DNS 数据，DoH 确实多了一层 HTTP 的封装。</p><p><strong>DNS 服务器可见客户端 IP。</strong> DoH 服务器能看到你的真实源 IP 地址。虽然加密保护了查询内容不被第三方看到，但 DNS 服务器本身仍然知道是谁在查询什么域名。这是所有直连式加密 DNS 协议的共同局限，不是 DoH 特有的问题。</p><p><img src="/images/inline/doh-diagram.jpg" alt="DNS over HTTPS 工作原理"><br><em>图片来源：<a href="https://heimdalsecurity.com/">Heimdal Security</a></em></p><hr><h2 id="DNS-over-TLS-DoT"><a href="#DNS-over-TLS-DoT" class="headerlink" title="DNS over TLS (DoT)"></a>DNS over TLS (DoT)</h2><h3 id="原理-1"><a href="#原理-1" class="headerlink" title="原理"></a>原理</h3><p>DoT 是最早标准化的加密 DNS 协议（RFC 7858，2016 年发布）。它的思路比 DoH 更直接：在 DNS 客户端和服务器之间建立一条 TLS 加密隧道，DNS 查询直接在这条加密隧道中传输，不经过 HTTP 层。</p><p>DoT 使用专用的 TCP 端口 853。客户端连接到服务器的 853 端口，完成 TLS 握手后，在加密通道中发送和接收标准格式的 DNS 消息。</p><h3 id="常见-DoT-地址格式"><a href="#常见-DoT-地址格式" class="headerlink" title="常见 DoT 地址格式"></a>常见 DoT 地址格式</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">tls://dns.alidns.com:853    # 阿里 DNS</span><br><span class="line">tls://1.1.1.1:853           # Cloudflare</span><br><span class="line">tls://8.8.8.8:853           # Google</span><br><span class="line">tls://dot.pub:853           # 腾讯 DNSPod</span><br></pre></td></tr></table></figure><h3 id="优势-1"><a href="#优势-1" class="headerlink" title="优势"></a>优势</h3><p><strong>协议开销更低。</strong> DoT 直接在 TLS 上传输 DNS 消息，不需要 HTTP 层的封装（HTTP 头部、分帧等）。每次查询的数据量比 DoH 略小。</p><p><strong>纯 DNS 解析速度略快。</strong> 在不考虑封锁的理想环境下，DoT 由于少了 HTTP 层的处理，单次查询的延迟比 DoH 略低（通常只差几毫秒，实际体感不明显）。</p><p><strong>协议设计简洁。</strong> DoT 是专门为 DNS 加密设计的，不依赖复杂的 HTTP 协议栈。实现和调试相对简单。</p><h3 id="劣势-1"><a href="#劣势-1" class="headerlink" title="劣势"></a>劣势</h3><p><strong>极易被封锁——这是 DoT 最致命的缺点。</strong> DoT 使用专用端口 853，这个端口除了加密 DNS 没有其他用途。防火墙只需要一条规则——阻断所有目标端口为 853 的 TCP 连接——就能彻底封杀 DoT。不需要深度包检测，不需要分析流量内容，单纯的端口封锁就够了。</p><p><strong>GFW 已经在封锁 853 端口。</strong> 在中国大陆的网络环境中，连接境外服务器的 853 端口经常不通或不稳定。即使连接国内 DoT 服务器，也可能因为运营商层面的策略而不可靠。这意味着在中国实际使用中，DoT 的可用性远不如 DoH。</p><p><strong>客户端支持不如 DoH 广泛。</strong> 虽然大部分代理客户端支持 DoT，但主流浏览器对 DoT 的原生支持很少。在需要系统级 DNS 加密的场景下，DoT 的可选方案比 DoH 少。</p><p><strong>一旦被识别就是靶子。</strong> 853 端口的流量100%是加密 DNS，这个端口本身就是一个信号。网络管理员或 ISP 看到你在连接某个 IP 的 853 端口，立刻就知道你在使用加密 DNS。这在某些环境下可能引起额外注意。</p><hr><h2 id="DNS-over-QUIC-DoQ"><a href="#DNS-over-QUIC-DoQ" class="headerlink" title="DNS over QUIC (DoQ)"></a>DNS over QUIC (DoQ)</h2><h3 id="原理-2"><a href="#原理-2" class="headerlink" title="原理"></a>原理</h3><p>DoQ 是最新的加密 DNS 协议（<a href="https://datatracker.ietf.org/doc/rfc9250/">RFC 9250</a>，2022 年发布）。它基于 QUIC 传输协议，使用 UDP 传输，默认端口为 853（与 DoT 相同的端口号，但因为 QUIC 跑在 UDP 上，所以不会冲突）。</p><p>QUIC 是 Google 开发、IETF 标准化的下一代传输协议，已经被 HTTP&#x2F;3 采用。QUIC 将传输层和加密层合二为一，在 UDP 上实现了类似 TCP + TLS 的可靠传输和加密，同时还有一些独特优势。</p><h3 id="常见-DoQ-地址格式"><a href="#常见-DoQ-地址格式" class="headerlink" title="常见 DoQ 地址格式"></a>常见 DoQ 地址格式</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">quic://dns.adguard.com:853     # AdGuard</span><br><span class="line">quic://unfiltered.adguard-dns.com:853</span><br></pre></td></tr></table></figure><h3 id="优势-2"><a href="#优势-2" class="headerlink" title="优势"></a>优势</h3><p><strong>0-RTT 连接建立。</strong> QUIC 支持 0-RTT（零往返时间）连接恢复：如果客户端之前连接过某个 DoQ 服务器，再次连接时可以在第一个数据包中就携带 DNS 查询，完全省去握手延迟。这是三种加密 DNS 协议中理论延迟最低的。</p><p><strong>多路复用无队头阻塞。</strong> QUIC 的多路复用是在传输层实现的，不同 DNS 查询在不同的 QUIC stream 上独立传输。一个查询的丢包或延迟不会影响其他查询。而 DoH 和 DoT 基于 TCP，如果一个数据包丢失，后续所有数据包都要等待重传（队头阻塞）。</p><p><strong>连接迁移。</strong> QUIC 使用连接 ID 而非 IP+端口 来标识连接。当设备网络切换时（比如从 Wi-Fi 切换到 4G），QUIC 连接可以无缝迁移而不需要重新握手。</p><h3 id="劣势-2"><a href="#劣势-2" class="headerlink" title="劣势"></a>劣势</h3><p><strong>服务器支持极为有限。</strong> 截至 2026 年，提供 DoQ 服务的 DNS 服务器屈指可数。国内几乎没有公共 DoQ 服务器，国际上也只有 AdGuard 等少数几家提供。这直接限制了 DoQ 的实用性。</p><p><strong>客户端支持有限。</strong> 虽然 AdGuard、部分版本的 sing-box 等支持 DoQ，但主流代理客户端（如 Clash Meta&#x2F;mihomo）对 DoQ 的支持不够成熟或尚未实现。浏览器和操作系统层面更是基本没有原生 DoQ 支持。</p><p><strong>UDP 在中国可能受限。</strong> 部分运营商和网络环境对 UDP 流量有限速或封锁策略。QUIC 流量（包括 DoQ）在某些网络下可能表现不稳定，甚至完全不可用。这与 DoT 被封锁 853 端口是不同的问题，但结果类似——在中国不够可靠。</p><p><strong>协议太新，生态不成熟。</strong> DoQ 标准化时间很短，整个生态还在早期阶段。遇到问题时，可参考的文档、社区讨论、排查经验都比 DoH 和 DoT 少得多。在生产环境中使用需要承担更高的不确定性。</p><hr><h2 id="三种协议对比"><a href="#三种协议对比" class="headerlink" title="三种协议对比"></a>三种协议对比</h2><table><thead><tr><th>特性</th><th>DoH</th><th>DoT</th><th>DoQ</th></tr></thead><tbody><tr><td>标准</td><td>RFC 8484 (2018)</td><td>RFC 7858 (2016)</td><td>RFC 9250 (2022)</td></tr><tr><td>传输层</td><td>HTTPS (TCP 443)</td><td>TLS (TCP 853)</td><td>QUIC (UDP 853)</td></tr><tr><td>抗封锁能力</td><td>强</td><td>弱</td><td>弱</td></tr><tr><td>首次连接延迟</td><td>较高（2-3 RTT）</td><td>中等（2 RTT）</td><td>低（1 RTT，恢复连接 0-RTT）</td></tr><tr><td>协议开销</td><td>中等（HTTP 层）</td><td>较低</td><td>较低</td></tr><tr><td>部署成熟度</td><td>高</td><td>中</td><td>低</td></tr><tr><td>客户端支持</td><td>广泛</td><td>较广</td><td>有限</td></tr><tr><td>可用服务器数量</td><td>很多</td><td>较多</td><td>很少</td></tr><tr><td>在中国的可用性</td><td>好</td><td>差（端口常被封）</td><td>差（UDP 限制）</td></tr><tr><td>多路复用</td><td>有（HTTP&#x2F;2）</td><td>无原生支持</td><td>有（QUIC stream）</td></tr><tr><td>队头阻塞</td><td>存在（TCP 层）</td><td>存在（TCP 层）</td><td>不存在</td></tr></tbody></table><p>综合来看，DoH 是目前在中国网络环境下唯一具有实际可用性的加密 DNS 协议。DoT 因为端口封锁在中国基本不可用，DoQ 因为生态不成熟和 UDP 限制也不推荐在生产环境使用。</p><hr><h2 id="在代理场景中的选择"><a href="#在代理场景中的选择" class="headerlink" title="在代理场景中的选择"></a>在代理场景中的选择</h2><h3 id="推荐方案：国内-DoH-作为-nameserver"><a href="#推荐方案：国内-DoH-作为-nameserver" class="headerlink" title="推荐方案：国内 DoH 作为 nameserver"></a>推荐方案：国内 DoH 作为 nameserver</h3><p>在代理客户端中，推荐使用国内 DoH 作为 nameserver：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">enhanced-mode:</span> <span class="string">fake-ip</span></span><br><span class="line">  <span class="attr">nameserver:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://doh.pub/dns-query</span>         <span class="comment"># 腾讯 DNSPod DoH</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://dns.alidns.com/dns-query</span>  <span class="comment"># 阿里云 DoH</span></span><br></pre></td></tr></table></figure><p>这个配置只需要两行就够了。不需要配置 fallback，不需要配置 DoT，不需要配置国际 DNS。</p><h3 id="为什么推荐-DoH"><a href="#为什么推荐-DoH" class="headerlink" title="为什么推荐 DoH"></a>为什么推荐 DoH</h3><p><strong>可靠性第一。</strong> 443 端口不会被封锁，DoH 流量与正常 HTTPS 不可区分。在中国任何网络环境下，DoH 都能稳定工作。代理客户端的 DNS 需要 7x24 可用——如果 DNS 不通，整个代理就废了。可靠性是选择加密 DNS 协议最重要的标准，没有之一。</p><p><strong>国内 DoH 服务器延迟极低。</strong> 腾讯和阿里的 DoH 服务器在国内有大量节点，从中国大陆连接延迟通常在 10-30ms 以内。连接建立后复用连接，后续查询延迟更低。对于 Fake-IP 模式下只需要解析国内直连域名的场景，国内 DoH 完全够用。</p><p><strong>不需要国际 DoH。</strong> 在 Fake-IP 模式下，走代理的域名根本不在本地解析——它们由远端代理节点负责。本地 DNS 只解析直连域名（基本全是国内域名），所以国内 DoH 就够了。配置 Cloudflare 或 Google 的 DoH 不仅多余，反而因为需要出境连接而增加延迟和不确定性。</p><p><strong>配置最简单。</strong> 不需要纠结 DoT 端口通不通、DoQ 客户端支不支持。两个国内 DoH 地址，配完收工。</p><h3 id="为什么不推荐-DoT"><a href="#为什么不推荐-DoT" class="headerlink" title="为什么不推荐 DoT"></a>为什么不推荐 DoT</h3><p>在中国代理场景下，DoT 没有任何优于 DoH 的地方：</p><ul><li><strong>端口 853 被封锁的风险太高。</strong> GFW 和部分运营商已经对 853 端口实施了不同程度的限制。你的 DoT 今天能用，不代表明天还能用。一旦端口被封，你的整个 DNS 解析就断了。</li><li><strong>“延迟略低”的优势可以忽略。</strong> DoT 比 DoH 省去了 HTTP 层，理论延迟低几毫秒。但在实际使用中，这几毫秒的差距完全感知不到。而 DoT 因为端口问题带来的可用性风险，远超这点延迟优势。</li><li><strong>在代理场景中没有额外好处。</strong> 代理客户端只需要一个能用的 DNS 来解析直连域名。DoH 完全能胜任，不需要为了理论上微不足道的性能差异而承担可用性风险。</li></ul><h3 id="为什么不推荐-DoQ（目前）"><a href="#为什么不推荐-DoQ（目前）" class="headerlink" title="为什么不推荐 DoQ（目前）"></a>为什么不推荐 DoQ（目前）</h3><p>DoQ 的技术设计确实先进，但截至 2026 年，还不适合在代理场景中作为主力 DNS 使用：</p><ul><li><strong>可用服务器太少。</strong> 国内没有公共 DoQ 服务器，国际上只有 AdGuard 等少数几家。没有国内服务器意味着延迟高、连接不稳定。</li><li><strong>客户端支持不成熟。</strong> 主流代理客户端对 DoQ 的支持参差不齐，有些根本不支持，有些虽然支持但实现不够稳定。</li><li><strong>UDP 在中国受限。</strong> 部分运营商对 UDP 有 QoS 限制甚至丢包，这直接影响 QUIC 协议的可靠性。</li><li><strong>未来可期。</strong> 随着 QUIC&#x2F;HTTP&#x2F;3 的普及，DoQ 的生态会逐步成熟。等到国内有稳定的 DoQ 服务器、主流客户端完善了 DoQ 支持，可以重新评估。但现在不是换到 DoQ 的时候。</li></ul><h3 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h3><p><strong>Fake-IP 模式下，nameserver 只解析直连域名。</strong> 走代理的域名由远端节点解析，本地 DNS 不参与。所以 nameserver 里只需要配置国内 DNS，不需要配置国际 DNS。</p><p><strong>不需要配置 fallback。</strong> 在 Fake-IP 模式下，不存在”国内 DNS 被污染导致走错规则”的问题。路由决策基于域名而非 IP，DNS 污染影响不了分流准确性。fallback 是 Redir-Host 时代的产物，在 Fake-IP + DoH 的架构下没有意义。</p><p><strong>浏览器内置 DoH 可能冲突。</strong> Chrome、Firefox 等浏览器有自己的 DoH 设置。在 TUN 模式下，代理客户端会接管所有 DNS 请求，浏览器的 DoH 设置不会生效，不冲突。但在系统代理模式下，浏览器可能绕过代理客户端的 DNS 直接使用自己的 DoH，导致解析结果与预期不符。建议在使用代理客户端时关闭浏览器内置的 DoH 功能，让代理客户端统一处理。</p><hr><h2 id="常用-DoH-服务器"><a href="#常用-DoH-服务器" class="headerlink" title="常用 DoH 服务器"></a>常用 DoH 服务器</h2><h3 id="国内（推荐用于-nameserver）"><a href="#国内（推荐用于-nameserver）" class="headerlink" title="国内（推荐用于 nameserver）"></a>国内（推荐用于 nameserver）</h3><table><thead><tr><th>服务商</th><th>DoH 地址</th><th>说明</th></tr></thead><tbody><tr><td><a href="https://www.dnspod.cn/">腾讯 DNSPod</a></td><td><code>https://doh.pub/dns-query</code></td><td>推荐，稳定快速，国内节点多</td></tr><tr><td><a href="https://alidns.com/">阿里云 DNS</a></td><td><code>https://dns.alidns.com/dns-query</code></td><td>推荐，覆盖广，延迟低</td></tr><tr><td>360 DNS</td><td><code>https://doh.360.cn/dns-query</code></td><td>备选，覆盖一般</td></tr></tbody></table><h3 id="国际（通过代理访问，一般不需要配置）"><a href="#国际（通过代理访问，一般不需要配置）" class="headerlink" title="国际（通过代理访问，一般不需要配置）"></a>国际（通过代理访问，一般不需要配置）</h3><table><thead><tr><th>服务商</th><th>DoH 地址</th><th>说明</th></tr></thead><tbody><tr><td><a href="https://developers.cloudflare.com/1.1.1.1/">Cloudflare</a></td><td><code>https://cloudflare-dns.com/dns-query</code></td><td>全球最快之一</td></tr><tr><td>Google</td><td><code>https://dns.google/dns-query</code></td><td>知名度最高</td></tr><tr><td>Quad9</td><td><code>https://dns.quad9.net/dns-query</code></td><td>安全优先，过滤恶意域名</td></tr></tbody></table><p>在 Fake-IP 代理架构下，国际 DoH 服务器无需手动配置——代理节点在境外解析时会自动使用当地的 DNS。</p><hr><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><p><strong>Q：普通用户需要手动配置加密 DNS 吗？</strong></p><p>如果你已经在使用代理客户端并且配置了 Fake-IP 模式 + 国内 DoH 作为 nameserver，你的 DNS 隐私和安全已经得到了充分保护。直连域名通过加密 DoH 解析，代理域名在远端解析，本地根本不产生明文 DNS 查询。不需要再额外在系统层面或浏览器层面配置加密 DNS。</p><p><strong>Q：浏览器的 DoH 和代理客户端的 DNS 会冲突吗？</strong></p><p>取决于代理客户端的工作模式。在 TUN 模式下，代理客户端接管了系统网络栈，所有 DNS 请求（包括浏览器发出的 DoH 请求）都会被代理客户端拦截和处理，浏览器的 DoH 设置实际上不会生效。在系统代理模式下，浏览器可能绕过代理客户端的 DNS 处理，直接使用自己配置的 DoH 服务器进行解析。这可能导致解析结果与代理客户端的分流规则不匹配。建议在系统代理模式下关闭浏览器内置的 DoH，让代理客户端统一管理 DNS。</p><p><strong>Q：DoH 会影响网速吗？</strong></p><p>首次连接 DoH 服务器时需要完成 TLS 握手，可能增加几十毫秒的延迟。但连接建立后会保持复用，后续 DNS 查询的延迟与传统明文 DNS 基本相同。对整体上网速度的影响可以忽略不计。在 Fake-IP 模式下，走代理的域名在本地甚至不需要做真正的 DNS 解析（返回假 IP 是瞬间完成的），所以 DoH 的延迟只影响直连域名的解析，影响范围更小。</p><p><strong>Q：用了 DoH 还需要用 Fake-IP 吗？</strong></p><p>需要，两者解决的是不同层面的问题。DoH 保护的是 DNS 查询过程——让第三方无法窃听或篡改你的 DNS 请求和响应。Fake-IP 保护的是查询本身是否发生——走代理的域名根本不在本地解析，避免 DNS 查询行为暴露你的访问意图。即使用了 DoH，如果本地对 google.com 做了 DNS 查询（哪怕是加密的），ISP 仍然能通过目标 IP（DoH 服务器的 IP）和流量模式推断你在使用加密 DNS。而 Fake-IP 直接让这个查询不存在。最佳实践是两者结合使用：Fake-IP + 国内 DoH。</p><p><strong>Q：自建 DNS 服务器比用公共 DoH 更安全吗？</strong></p><p>自建 DNS 递归服务器（如 AdGuard Home、Pi-hole + Unbound）可以消除对第三方 DNS 服务商的信任依赖。但在代理场景下，这通常不是必需的。Fake-IP 模式下，你的 nameserver DNS 只解析国内直连域名（如 baidu.com、taobao.com），这些域名本身不敏感。使用腾讯或阿里的公共 DoH 解析这些国内域名，隐私风险极低。自建 DNS 的运维成本（服务器维护、DNS 记录更新、上游 DNS 选择）远大于它带来的边际安全收益。除非你有特殊的隐私需求或网络控制需求，否则不建议在代理场景中自建 DNS。</p>]]>
    </content>
    <id>https://blog.e.show/posts/encrypted-dns/</id>
    <link href="https://blog.e.show/posts/encrypted-dns/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>DoH、DoT、DoQ 三种加密 DNS 协议对比。在代理场景中推荐使用国内 DoH。</summary>
    <title>DoH / DoT / DoQ：加密 DNS 协议选择</title>
    <updated>2026-05-11T21:40:36.948Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="运营与架构" scheme="https://blog.e.show/categories/%E8%BF%90%E8%90%A5%E4%B8%8E%E6%9E%B6%E6%9E%84/"/>
    <category term="故障转移" scheme="https://blog.e.show/tags/%E6%95%85%E9%9A%9C%E8%BD%AC%E7%A7%BB/"/>
    <category term="健康检查" scheme="https://blog.e.show/tags/%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5/"/>
    <category term="自动切换" scheme="https://blog.e.show/tags/%E8%87%AA%E5%8A%A8%E5%88%87%E6%8D%A2/"/>
    <category term="运维" scheme="https://blog.e.show/tags/%E8%BF%90%E7%BB%B4/"/>
    <category term="高可用" scheme="https://blog.e.show/tags/%E9%AB%98%E5%8F%AF%E7%94%A8/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：在代理服务的运营中，节点故障是无法完全避免的——IP 被封、服务器宕机、线路劣化都可能随时发生。真正区分服务质量的不是”节点会不会出问题”，而是”出问题后多快能恢复”。本文系统讨论故障检测的方法和自动切换的实现策略，帮你构建高可用的代理服务架构。</p></blockquote><hr><h2 id="故障类型分析"><a href="#故障类型分析" class="headerlink" title="故障类型分析"></a>故障类型分析</h2><p>要设计有效的故障转移策略，首先需要理解代理节点可能遭遇的各类故障。不同类型的故障有不同的表现、检测难度和恢复方式。</p><h3 id="IP-被-GFW-封锁"><a href="#IP-被-GFW-封锁" class="headerlink" title="IP 被 GFW 封锁"></a>IP 被 GFW 封锁</h3><p>这是最常见也最令人头疼的故障类型。表现为节点突然无法连接，TCP 握手超时。GFW 的封锁可能是全端口封锁（整个 IP 不可达），也可能是特定端口封锁。</p><p><strong>特征</strong>：从中国大陆无法连接，但从海外仍可正常访问。ping 不通或极高丢包率。封锁通常是持久性的——被封的 IP 短期内不会自动解封。</p><p><strong>恢复方式</strong>：更换 IP 地址。这是唯一可靠的恢复手段。有些运营者会保留一批备用 IP，有些则通过云服务商 API 动态更换。</p><h3 id="服务器宕机"><a href="#服务器宕机" class="headerlink" title="服务器宕机"></a>服务器宕机</h3><p>服务器本身的硬件故障、操作系统崩溃、或云服务商的基础设施问题导致服务器不可用。</p><p><strong>特征</strong>：从任何位置都无法连接。如果是云服务商问题，通常会影响同一数据中心的多台服务器。</p><p><strong>恢复方式</strong>：等待服务商修复；或在其他服务器上重新部署。如果有自动化部署体系，恢复时间可以控制在分钟级。</p><h3 id="ISP-线路问题"><a href="#ISP-线路问题" class="headerlink" title="ISP 线路问题"></a>ISP 线路问题</h3><p>不是 GFW 主动封锁，而是运营商之间的线路拥塞或路由变更导致的连接质量下降。</p><p><strong>特征</strong>：不是完全不能连接，而是延迟大幅增加、丢包率升高、速度明显下降。通常有时间规律——晚高峰（20:00-23:00）严重，凌晨恢复。可能只影响特定运营商（如联通用户正常但电信用户卡顿）。</p><p><strong>恢复方式</strong>：等待线路恢复；或切换到经过不同线路的备用节点。使用 IPLC&#x2F;IEPL 等专线可以避免此类问题，但成本较高。</p><h3 id="证书过期"><a href="#证书过期" class="headerlink" title="证书过期"></a>证书过期</h3><p>使用 TLS 证书的协议配置（如 VLESS+TLS+WebSocket）中，Let’s Encrypt 证书每 90 天需要续签。如果自动续签失败，客户端会因证书过期而拒绝连接。</p><p><strong>特征</strong>：客户端报告 TLS 握手失败或证书验证错误。服务本身仍在运行，只是 TLS 层面出问题。</p><p><strong>恢复方式</strong>：手动或自动续签证书并重启服务。使用 Reality 协议可以完全避免证书管理问题，因为 Reality 不需要自己的 TLS 证书。</p><h3 id="后端进程崩溃"><a href="#后端进程崩溃" class="headerlink" title="后端进程崩溃"></a>后端进程崩溃</h3><p>代理后端（XrayR、V2bX 等）的进程因 bug、内存溢出或配置错误而崩溃。</p><p><strong>特征</strong>：端口不再监听，但服务器本身仍可通过 SSH 登录。systemd 或 Docker 的自动重启机制通常会在几秒内恢复进程。</p><p><strong>恢复方式</strong>：如果配置了 systemd 的 <code>Restart=on-failure</code> 或 Docker 的 <code>restart: always</code>，进程会自动重启。否则需要手动重启服务。</p><hr><h2 id="故障检测方法"><a href="#故障检测方法" class="headerlink" title="故障检测方法"></a>故障检测方法</h2><p>检测速度直接决定恢复速度。检测方法从简单到复杂分为三个层次。</p><h3 id="第一层：TCP-连接检测"><a href="#第一层：TCP-连接检测" class="headerlink" title="第一层：TCP 连接检测"></a>第一层：TCP 连接检测</h3><p>最基本的检测方式——尝试与节点的服务端口建立 TCP 连接。如果连接超时或被拒绝，则判定节点不可用。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 简单的 TCP 端口检测脚本</span></span><br><span class="line"><span class="comment">#!/bin/bash</span></span><br><span class="line">HOST=<span class="string">&quot;1.2.3.4&quot;</span></span><br><span class="line">PORT=443</span><br><span class="line">TIMEOUT=5</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> <span class="built_in">timeout</span> <span class="variable">$TIMEOUT</span> bash -c <span class="string">&quot;echo &gt; /dev/tcp/<span class="variable">$HOST</span>/<span class="variable">$PORT</span>&quot;</span> 2&gt;/dev/null; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;节点 <span class="variable">$HOST</span>:<span class="variable">$PORT</span> 在线&quot;</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;节点 <span class="variable">$HOST</span>:<span class="variable">$PORT</span> 离线！&quot;</span></span><br><span class="line">    <span class="comment"># 触发告警或切换逻辑</span></span><br><span class="line"><span class="keyword">fi</span></span><br></pre></td></tr></table></figure><p><strong>优点</strong>：实现简单，资源消耗极低。</p><p><strong>局限</strong>：只能检测端口是否可达。如果后端进程虽然在监听但已经无法正常处理代理请求（比如与面板的通信中断导致鉴权失败），TCP 检测无法发现这个问题。</p><h3 id="第二层：协议级检测"><a href="#第二层：协议级检测" class="headerlink" title="第二层：协议级检测"></a>第二层：协议级检测</h3><p>在 TCP 连接基础上，模拟代理客户端的行为，实际发起一次代理请求。如果能成功通过代理访问到目标网页，则判定节点正常。</p><p>这种检测方式能发现 TCP 检测遗漏的问题：后端进程运行异常、鉴权失败、协议配置错误等。</p><p><strong>实现方式</strong>：使用代理客户端的 API 接口发起一次测试请求。例如，通过 curl 指定 SOCKS5 代理访问特定 URL：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 通过节点代理访问测试页</span></span><br><span class="line">curl -x socks5://127.0.0.1:1080 \</span><br><span class="line">     --connect-timeout 10 \</span><br><span class="line">     -s -o /dev/null -w <span class="string">&quot;%&#123;http_code&#125;&quot;</span> \</span><br><span class="line">     https://www.google.com/generate_204</span><br></pre></td></tr></table></figure><p>如果返回 HTTP 204，说明代理链路完整可用。</p><h3 id="第三层：业务级检测"><a href="#第三层：业务级检测" class="headerlink" title="第三层：业务级检测"></a>第三层：业务级检测</h3><p>最全面的检测方式——不仅检查代理是否可用，还检查特定业务功能是否正常。例如：</p><ul><li><strong>流媒体解锁检测</strong>：通过节点访问 Netflix、Disney+ 等流媒体的 API 接口，检查是否返回解锁状态</li><li><strong>延迟和速度检测</strong>：不仅要求能连通，还要求延迟低于某个阈值、下载速度高于某个标准</li><li><strong>DNS 解析检测</strong>：检查通过节点进行的 DNS 解析是否返回正确结果</li></ul><p>业务级检测最准确，但实现复杂度和资源消耗也最高。建议将其作为定期（如每小时）的补充检测，而非高频的核心检测手段。</p><hr><h2 id="客户端侧故障转移"><a href="#客户端侧故障转移" class="headerlink" title="客户端侧故障转移"></a>客户端侧故障转移</h2><p>对于终端用户来说，最直接的故障转移发生在客户端——当正在使用的节点不可用时，客户端自动切换到备用节点。</p><h3 id="Clash-的代理组策略"><a href="#Clash-的代理组策略" class="headerlink" title="Clash 的代理组策略"></a>Clash 的代理组策略</h3><p><a href="https://wiki.metacubex.one/">Clash</a> 系客户端提供了完善的代理组机制来实现自动故障转移。</p><p><strong>url-test 策略组</strong>：根据延迟测试结果自动选择最快的节点。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">proxy-groups:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">&quot;自动选择&quot;</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">url-test</span></span><br><span class="line">    <span class="attr">proxies:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">香港节点1</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">香港节点2</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">日本节点1</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">新加坡节点1</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://www.gstatic.com/generate_204&quot;</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">300</span>           <span class="comment"># 每 5 分钟测试一次</span></span><br><span class="line">    <span class="attr">tolerance:</span> <span class="number">50</span>           <span class="comment"># 延迟差异超过 50ms 才切换</span></span><br><span class="line">    <span class="attr">lazy:</span> <span class="literal">true</span>              <span class="comment"># 没有流量时不主动测试</span></span><br></pre></td></tr></table></figure><p><strong>fallback 策略组</strong>：按优先级依次尝试节点，只在当前节点不可用时切换到下一个。这种策略更适合希望固定使用某个节点、只在它不可用时才切换的场景。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">proxy-groups:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">&quot;故障转移&quot;</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">fallback</span></span><br><span class="line">    <span class="attr">proxies:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">首选节点</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">备用节点1</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">备用节点2</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">&quot;https://www.gstatic.com/generate_204&quot;</span></span><br><span class="line">    <span class="attr">interval:</span> <span class="number">300</span></span><br></pre></td></tr></table></figure><p><strong>关键区别</strong>：url-test 总是选最快的，节点切换频繁；fallback 优先使用列表靠前的节点，只在故障时切换，更稳定。</p><h3 id="切换速度优化"><a href="#切换速度优化" class="headerlink" title="切换速度优化"></a>切换速度优化</h3><p>客户端故障转移的速度取决于两个因素：</p><ol><li><strong>检测间隔</strong>（interval）：设置过长会导致故障发现慢，设置过短会增加不必要的检测流量。建议 180-300 秒。</li><li><strong>超时判定</strong>：TCP 连接超时时间通常默认 5 秒。如果节点被封，每次检测都要等 5 秒超时才能判定失败。</li></ol><hr><h2 id="服务端侧故障转移"><a href="#服务端侧故障转移" class="headerlink" title="服务端侧故障转移"></a>服务端侧故障转移</h2><p>客户端故障转移有一个根本局限：它依赖客户端的配置和能力。如果你是服务提供者，不应将所有容错能力交给客户端，而应在服务端实现故障转移。</p><h3 id="DNS-故障转移"><a href="#DNS-故障转移" class="headerlink" title="DNS 故障转移"></a>DNS 故障转移</h3><p>将节点域名的 DNS 解析与健康检查结合。当检测到某个节点不可用时，自动将其从 DNS 记录中移除。</p><p><strong>实现方式</strong>：使用 Cloudflare、AWS Route 53 等 DNS 服务商的 API，配合自定义的健康检查脚本：</p><ol><li>健康检查脚本定期检测所有节点</li><li>发现节点不可用时，通过 DNS 服务商 API 将该节点的 A 记录删除或将域名指向备用节点</li><li>节点恢复后重新添加记录</li></ol><p><strong>局限</strong>：DNS 解析有缓存（TTL），即使你立即修改了记录，客户端缓存的旧 IP 在 TTL 过期前仍然会尝试连接已故障的节点。建议将 TTL 设置为较短的值（如 60 秒），但这会增加 DNS 查询量。</p><h3 id="负载均衡器健康检查"><a href="#负载均衡器健康检查" class="headerlink" title="负载均衡器健康检查"></a>负载均衡器健康检查</h3><p>在节点前部署负载均衡器（如 Nginx、HAProxy），由负载均衡器执行健康检查并自动将流量从故障节点转移到健康节点。</p><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Nginx upstream 健康检查配置</span></span><br><span class="line"><span class="section">upstream</span> proxy_backends &#123;</span><br><span class="line">    <span class="attribute">server</span> node1.example.com:<span class="number">443</span> max_fails=<span class="number">3</span> fail_timeout=<span class="number">30s</span>;</span><br><span class="line">    <span class="attribute">server</span> node2.example.com:<span class="number">443</span> max_fails=<span class="number">3</span> fail_timeout=<span class="number">30s</span>;</span><br><span class="line">    <span class="attribute">server</span> node3.example.com:<span class="number">443</span> backup;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>这种方式对用户完全透明——用户始终连接负载均衡器的地址，后端节点的切换由负载均衡器自动完成。</p><h3 id="自动-IP-更换"><a href="#自动-IP-更换" class="headerlink" title="自动 IP 更换"></a>自动 IP 更换</h3><p>对于 IP 被封的场景，最彻底的服务端故障转移是自动更换 IP。流程为：</p><ol><li>健康检查检测到节点 IP 被封（从海外可达但从国内不可达）</li><li>通过云服务商 API 释放旧 IP，分配新 IP</li><li>更新 DNS 记录指向新 IP</li><li>更新面板中的节点信息</li><li>通过 Telegram 通知运营者</li></ol><p>整个流程可以在 2-5 分钟内完成，用户感知到的中断时间极短。</p><hr><h2 id="监控工具选择"><a href="#监控工具选择" class="headerlink" title="监控工具选择"></a>监控工具选择</h2><h3 id="外部监控服务"><a href="#外部监控服务" class="headerlink" title="外部监控服务"></a>外部监控服务</h3><ul><li><strong>UptimeRobot</strong>：免费版支持 50 个监控器，5 分钟检测间隔。适合监控节点端口可达性。但注意：UptimeRobot 的监测点在海外，它检测的是全球可达性，不等同于从中国大陆的可达性。</li><li><strong>Hetrixtools</strong>：类似 UptimeRobot，提供更细粒度的监控选项。</li></ul><h3 id="自建监控"><a href="#自建监控" class="headerlink" title="自建监控"></a>自建监控</h3><p>对于代理服务来说，从中国大陆发起的检测才是有意义的。自建监控方案：</p><ul><li>在国内服务器上部署检测脚本，定期从国内发起 TCP 连接和代理请求测试</li><li>检测结果写入数据库或推送到 Telegram</li><li>结合 Grafana 展示节点状态仪表板</li></ul><h3 id="Telegram-告警集成"><a href="#Telegram-告警集成" class="headerlink" title="Telegram 告警集成"></a>Telegram 告警集成</h3><p>Telegram Bot 是代理服务运维中最常用的告警渠道。通过 Telegram Bot API 发送告警消息，运营者可以在手机上即时收到节点状态变更通知。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Telegram 告警函数</span></span><br><span class="line"><span class="function"><span class="title">send_alert</span></span>() &#123;</span><br><span class="line">    <span class="built_in">local</span> message=<span class="string">&quot;<span class="variable">$1</span>&quot;</span></span><br><span class="line">    curl -s -X POST <span class="string">&quot;https://api.telegram.org/bot<span class="variable">$&#123;BOT_TOKEN&#125;</span>/sendMessage&quot;</span> \</span><br><span class="line">        -d chat_id=<span class="string">&quot;<span class="variable">$&#123;CHAT_ID&#125;</span>&quot;</span> \</span><br><span class="line">        -d text=<span class="string">&quot;<span class="variable">$&#123;message&#125;</span>&quot;</span> \</span><br><span class="line">        -d parse_mode=<span class="string">&quot;Markdown&quot;</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用示例</span></span><br><span class="line">send_alert <span class="string">&quot;⚠ 节点 HK-01 (1.2.3.4) 已离线，正在执行自动切换...&quot;</span></span><br></pre></td></tr></table></figure><hr><h2 id="恢复时间目标（RTO）"><a href="#恢复时间目标（RTO）" class="headerlink" title="恢复时间目标（RTO）"></a>恢复时间目标（RTO）</h2><p>不同的故障转移方案对应不同的恢复时间目标（Recovery Time Objective）。明确你的 RTO 有助于选择合适的方案。</p><table><thead><tr><th>方案</th><th>典型 RTO</th><th>适用场景</th></tr></thead><tbody><tr><td>客户端 url-test&#x2F;fallback</td><td>30 秒 - 5 分钟</td><td>用户端自动切换，最常用</td></tr><tr><td>DNS 故障转移</td><td>1 - 10 分钟</td><td>取决于 DNS TTL 设置</td></tr><tr><td>负载均衡器</td><td>10 - 30 秒</td><td>对用户完全透明</td></tr><tr><td>自动 IP 更换</td><td>2 - 5 分钟</td><td>需要云服务商 API 支持</td></tr><tr><td>手动恢复</td><td>30 分钟 - 数小时</td><td>无自动化，不推荐</td></tr></tbody></table><hr><h2 id="常见问题（FAQ）"><a href="#常见问题（FAQ）" class="headerlink" title="常见问题（FAQ）"></a>常见问题（FAQ）</h2><h3 id="url-test-和-fallback-应该选哪个？"><a href="#url-test-和-fallback-应该选哪个？" class="headerlink" title="url-test 和 fallback 应该选哪个？"></a>url-test 和 fallback 应该选哪个？</h3><p>如果你希望始终使用最快的节点并且不介意频繁切换，选 url-test。如果你更重视稳定性（比如保持同一出口 IP），选 fallback。对于流媒体解锁等需要 IP 一致性的场景，fallback 更合适。</p><h3 id="健康检查间隔设置多少合适？"><a href="#健康检查间隔设置多少合适？" class="headerlink" title="健康检查间隔设置多少合适？"></a>健康检查间隔设置多少合适？</h3><p>建议 TCP 检测设置为 60-120 秒间隔，协议级检测设置为 300-600 秒间隔。间隔过短会产生大量无效流量，过长则故障发现慢。需要在及时性和资源消耗之间取得平衡。</p><h3 id="DNS-TTL-应该设多短？"><a href="#DNS-TTL-应该设多短？" class="headerlink" title="DNS TTL 应该设多短？"></a>DNS TTL 应该设多短？</h3><p>对于需要快速故障转移的代理服务，建议将 DNS TTL 设为 60-120 秒。更短的 TTL（如 30 秒）虽然能更快切换，但会显著增加 DNS 查询量，部分解析器也可能忽略过短的 TTL。</p><h3 id="自动-IP-更换是否适用于所有云服务商？"><a href="#自动-IP-更换是否适用于所有云服务商？" class="headerlink" title="自动 IP 更换是否适用于所有云服务商？"></a>自动 IP 更换是否适用于所有云服务商？</h3><p>不是。需要云服务商提供弹性 IP 或 IP 更换的 API。Vultr、DigitalOcean、AWS 等主流云服务商支持这一功能。部分小型服务商可能不提供 API，或者 IP 更换有频率限制。</p><h3 id="负载均衡器本身是否会成为单点故障？"><a href="#负载均衡器本身是否会成为单点故障？" class="headerlink" title="负载均衡器本身是否会成为单点故障？"></a>负载均衡器本身是否会成为单点故障？</h3><p>是的。如果只部署一台负载均衡器，它的故障会导致所有后端节点不可达。解决方案是部署多台负载均衡器并配合 DNS 轮询，或使用云服务商提供的托管负载均衡服务。</p><h3 id="故障转移会影响用户的连接体验吗？"><a href="#故障转移会影响用户的连接体验吗？" class="headerlink" title="故障转移会影响用户的连接体验吗？"></a>故障转移会影响用户的连接体验吗？</h3><p>会有短暂中断。TCP 连接切换时，正在传输的连接会断开，需要重新建立。对于 HTTP 浏览来说影响很小（页面刷新即可），但对于实时通话、游戏等长连接场景，用户会感知到中断。</p><hr><h2 id="外部参考"><a href="#外部参考" class="headerlink" title="外部参考"></a>外部参考</h2><ul><li><a href="https://wiki.metacubex.one/">Clash Meta Wiki - 代理组</a></li><li><a href="https://uptimerobot.com/">UptimeRobot 监控服务</a></li><li><a href="https://developers.cloudflare.com/api/">Cloudflare API 文档</a></li><li><a href="https://core.telegram.org/bots/api">Telegram Bot API</a></li></ul>]]>
    </content>
    <id>https://blog.e.show/posts/failover-strategies/</id>
    <link href="https://blog.e.show/posts/failover-strategies/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>节点被封、服务器宕机时如何快速恢复？本文讨论故障检测的方法和自动切换的实现策略。</summary>
    <title>故障检测与自动切换策略</title>
    <updated>2026-05-09T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="DNS 专题" scheme="https://blog.e.show/categories/DNS-%E4%B8%93%E9%A2%98/"/>
    <category term="Clash" scheme="https://blog.e.show/tags/Clash/"/>
    <category term="配置" scheme="https://blog.e.show/tags/%E9%85%8D%E7%BD%AE/"/>
    <category term="DNS" scheme="https://blog.e.show/tags/DNS/"/>
    <category term="Fake-IP" scheme="https://blog.e.show/tags/Fake-IP/"/>
    <category term="Redir-Host" scheme="https://blog.e.show/tags/Redir-Host/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：Fake-IP 和 Redir-Host 是代理客户端处理 DNS 的两种模式。选错模式或配置不当是代理使用中最常见的问题来源。本文用通俗的语言彻底讲清两者的原理、区别和选择。</p></blockquote><h2 id="先说结论"><a href="#先说结论" class="headerlink" title="先说结论"></a>先说结论</h2><ul><li>2026 年，绝大多数用户应该使用 Fake-IP 模式</li><li>Redir-Host 仍有存在价值，但适用场景很少</li><li>网上大量过时教程仍在推荐 Redir-Host + fallback 的配置，这在 Fake-IP 时代是错误的</li></ul><p>如果你只想知道”我该用哪个”，答案就是 Fake-IP。如果你想知道为什么，继续往下读。</p><h2 id="为什么-DNS-模式这么重要"><a href="#为什么-DNS-模式这么重要" class="headerlink" title="为什么 DNS 模式这么重要"></a>为什么 DNS 模式这么重要</h2><p>在代理客户端中，DNS 模式决定了一个根本性的问题：<strong>客户端在什么时候、以什么方式进行 DNS 解析。</strong> 这个决定直接影响三件事：</p><ol><li><strong>连接速度</strong>——DNS 解析越快，网页打开越快</li><li><strong>隐私安全</strong>——DNS 请求如果泄漏，你的 ISP（网络运营商）和 GFW 就知道你在访问什么</li><li><strong>路由准确性</strong>——规则匹配的依据是域名还是 IP，直接决定流量能否被正确分流</li></ol><p>理解这两种模式之前，先回顾一个基础知识：<strong>DNS 解析就是把域名（如 google.com）翻译成 IP 地址（如 142.250.80.46）。</strong> 任何网络连接都必须知道目标 IP 才能建立。所以不管用哪种模式，DNS 解析这一步都无法跳过——区别只在于谁来做、什么时候做。</p><blockquote><p>如果你对 DNS 的基础概念不太熟悉，建议先阅读 <a href="./dns-basics-for-proxy.md">DNS 基础：为什么代理和 DNS 总是一起出问题</a>。</p></blockquote><h2 id="Fake-IP-模式详解"><a href="#Fake-IP-模式详解" class="headerlink" title="Fake-IP 模式详解"></a>Fake-IP 模式详解</h2><h3 id="核心思路"><a href="#核心思路" class="headerlink" title="核心思路"></a>核心思路</h3><p>Fake-IP 的核心设计思路只有一句话：<strong>先不做真正的 DNS 解析，给应用一个假 IP 占位，等确定了路由策略后再决定是否需要真正解析。</strong></p><p>这个”延迟解析”的策略，直接绕开了传统 DNS 面临的大部分问题。</p><h3 id="工作流程：代理域名"><a href="#工作流程：代理域名" class="headerlink" title="工作流程：代理域名"></a>工作流程：代理域名</h3><p>当你访问一个需要走代理的域名（如 google.com）时，Fake-IP 模式的处理流程如下：</p><ol><li>浏览器想访问 google.com，向操作系统发起 DNS 查询请求</li><li>代理客户端拦截这个 DNS 请求（因为客户端接管了系统 DNS）</li><li>客户端<strong>不会</strong>真正去解析 google.com，而是从预设的假 IP 段中分配一个地址，比如 <code>198.18.0.1</code></li><li>客户端在内部维护一张映射表，记录下：<code>198.18.0.1 = google.com</code></li><li>浏览器收到 <code>198.18.0.1</code> 这个”解析结果”，认为 google.com 就在这个地址，于是发起 TCP 连接</li><li>代理客户端再次拦截这个连接请求，查映射表发现 <code>198.18.0.1</code> 对应的是 google.com</li><li>客户端拿 google.com 去匹配分流规则，命中规则：google.com → Proxy（走代理）</li><li>客户端将域名 google.com 发送给远端代理节点，由节点在境外进行真正的 DNS 解析并获取内容</li><li>内容通过加密通道返回给你</li></ol><p>注意关键点：<strong>从头到尾，google.com 的真实 DNS 解析从未在你的本地设备上发生。</strong> 你的 ISP 和 GFW 完全不知道你查询了 google.com——因为你确实没有查询过。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">graph TD</span><br><span class="line">    A[应用请求 google.com] --&gt; B[代理客户端拦截 DNS]</span><br><span class="line">    B --&gt; C[返回假 IP: 198.18.0.1]</span><br><span class="line">    C --&gt; D[应用连接 198.18.0.1]</span><br><span class="line">    D --&gt; E[客户端查表: 198.18.0.1 = google.com]</span><br><span class="line">    E --&gt; F&#123;匹配分流规则&#125;</span><br><span class="line">    F --&gt;|Proxy| G[发送到代理节点]</span><br><span class="line">    G --&gt; H[节点远端解析 google.com]</span><br><span class="line">    H --&gt; I[返回内容]</span><br><span class="line">    F --&gt;|Direct| J[本地 DNS 解析]</span><br><span class="line">    J --&gt; K[直连目标]</span><br><span class="line">    </span><br><span class="line">    style G fill:#4a9,color:#fff</span><br><span class="line">    style J fill:#48f,color:#fff</span><br></pre></td></tr></table></figure><p><img src="/images/inline/fake-ip-diagram.png" alt="Fake-IP 模式工作原理图"><br><em>图片来源：<a href="https://www.csl.cool/">csl.cool</a></em></p><h3 id="工作流程：直连域名"><a href="#工作流程：直连域名" class="headerlink" title="工作流程：直连域名"></a>工作流程：直连域名</h3><p>当你访问一个直连域名（如 baidu.com）时，流程有所不同：</p><ol><li>浏览器想访问 baidu.com，向操作系统发起 DNS 查询请求</li><li>代理客户端拦截 DNS 请求</li><li>客户端返回假 IP，比如 <code>198.18.0.2</code></li><li>客户端记录：<code>198.18.0.2 = baidu.com</code></li><li>浏览器发起对 <code>198.18.0.2</code> 的 TCP 连接</li><li>客户端拦截连接，查映射表找到 baidu.com</li><li>客户端匹配分流规则：baidu.com → Direct（直连）</li><li><strong>此时</strong>客户端才用配置的国内 DNS（如腾讯 DoH、阿里 DoH）去真正解析 baidu.com，获取真实 IP</li><li>客户端建立到真实 IP 的直接连接</li></ol><p>关键点：<strong>真实 DNS 解析发生在路由决策之后。</strong> 只有确认需要直连的域名，才会触发本地 DNS 查询。这意味着 <code>nameserver</code> 里配置的 DNS 服务器只会收到国内域名的查询请求——这正是我们想要的结果。</p><h3 id="关键优势"><a href="#关键优势" class="headerlink" title="关键优势"></a>关键优势</h3><p><strong>彻底杜绝 DNS 泄漏。</strong> 走代理的域名从不在本地解析，DNS 查询只发生在远端代理节点所在的网络。你的 ISP 和 GFW 看不到任何关于这些域名的 DNS 请求。在 Redir-Host 模式下，即使最终走了代理，DNS 查询本身已经暴露了你的访问意图。</p><p><strong>速度极快。</strong> DNS 请求在本地瞬间返回一个假 IP，没有任何网络往返。应用几乎感受不到 DNS 延迟。相比之下，Redir-Host 需要等待真实 DNS 查询完成（通常几十到几百毫秒），如果配置了 fallback，还要等待多个 DNS 服务器的响应并进行比较。</p><p><strong>规则匹配基于域名，极其准确。</strong> 客户端拿到的是原始域名 google.com，直接与分流规则中的域名规则（如 <code>DOMAIN-SUFFIX,google.com</code>）进行匹配。域名是确定的、不会被篡改的。而 Redir-Host 依赖 IP 进行匹配（如 <code>GEOIP,CN</code>），IP 的归属可能不准确，CDN 的 IP 可能随时变化。</p><p><strong>配置简单。</strong> 不需要 fallback、不需要 fallback-filter、不需要担心 DNS 污染。只要在 nameserver 中配置可靠的国内 DNS 就够了。</p><h3 id="Fake-IP-地址范围"><a href="#Fake-IP-地址范围" class="headerlink" title="Fake-IP 地址范围"></a>Fake-IP 地址范围</h3><p>Fake-IP 使用的地址范围默认是 <code>198.18.0.0/15</code>（即 <code>198.18.0.0</code> 到 <code>198.19.255.255</code>），在大多数客户端的配置中写作 <code>198.18.0.1/16</code>。</p><p>这个地址段是 IANA（互联网号码分配机构）保留的基准测试地址段，在真实互联网上永远不会被使用。这意味着：</p><ul><li>这些 IP 只存在于你本地设备和代理客户端之间</li><li>不会和任何真实的网络地址冲突</li><li>永远不会被路由到互联网上</li><li>对你的局域网也没有任何影响</li></ul><p>你不需要修改这个默认值，除非你的网络环境极其特殊（比如你的内网恰好使用了 198.18 段——这几乎不可能发生）。</p><h3 id="fake-ip-filter-是什么"><a href="#fake-ip-filter-是什么" class="headerlink" title="fake-ip-filter 是什么"></a>fake-ip-filter 是什么</h3><p>虽然 Fake-IP 模式适用于绝大多数场景，但确实存在一些服务需要获得真实 IP 地址才能正常工作。<code>fake-ip-filter</code> 就是告诉客户端：<strong>对于这些域名，不要返回假 IP，而是进行真实的 DNS 解析并返回真实 IP。</strong></p><p>需要加入 fake-ip-filter 的典型场景：</p><p><strong>局域网设备发现。</strong> mDNS、SSDP 等协议用于局域网内设备的自动发现（如打印机、NAS、智能音箱）。这些协议依赖真实的局域网 IP 地址来建立设备间的连接。如果返回一个 <code>198.18.x.x</code> 的假地址，设备发现会完全失败。需要过滤的域名包括 <code>*.lan</code>、<code>*.local</code>、<code>*.localhost</code>。</p><p><strong>Windows 网络连接检测。</strong> Windows 系统通过访问特定域名来判断当前是否有互联网连接（系统托盘的网络图标会据此显示”已连接”或”无 Internet 连接”）。如果这些域名返回假 IP，Windows 可能误判为没有网络连接。需要过滤的域名包括 <code>*.msftconnecttest.com</code>、<code>dns.msftncsi.com</code>。</p><p><strong>NTP 时间同步。</strong> 系统时间同步服务需要连接到真实的 NTP 服务器。如果返回假 IP，时间同步会失败，可能导致 TLS 证书验证出错（证书有有效期，时间不准就无法正确验证）。需要过滤的域名包括 <code>time.*.com</code>、<code>ntp.*.com</code>。</p><p><strong>STUN 协议。</strong> WebRTC（视频通话、语音聊天）和部分 VoIP 服务使用 STUN 服务器来发现自己的公网 IP 和 NAT 类型。如果 STUN 服务器的域名返回假 IP，NAT 穿透会失败，导致通话无法建立。需要过滤的域名包括 <code>+.stun.*.*</code>。</p><p><strong>部分游戏。</strong> 少数在线游戏的联机系统（尤其是 P2P 模式的游戏）需要知道真实 IP 来建立玩家间的直接连接。如果你发现某个游戏联机有问题，可以尝试把它的相关域名加入 fake-ip-filter。</p><p>一个典型的 fake-ip-filter 配置：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">fake-ip-filter:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;*.lan&#x27;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;*.local&#x27;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;*.localhost&#x27;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;dns.msftncsi.com&#x27;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;www.msftncsi.com&#x27;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;*.msftconnecttest.com&#x27;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;time.*.com&#x27;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;ntp.*.com&#x27;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;+.stun.*.*&#x27;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;+.stun.*.*.*&#x27;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;localhost.ptlogin2.qq.com&#x27;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&#x27;lens.l.google.com&#x27;</span></span><br></pre></td></tr></table></figure><h2 id="Redir-Host-模式详解"><a href="#Redir-Host-模式详解" class="headerlink" title="Redir-Host 模式详解"></a>Redir-Host 模式详解</h2><h3 id="核心思路-1"><a href="#核心思路-1" class="headerlink" title="核心思路"></a>核心思路</h3><p>Redir-Host 的逻辑是传统思路：<strong>先做真实的 DNS 解析，拿到 IP 之后再决定路由。</strong></p><p>这个思路看似直观，但在中国大陆的网络环境下会遇到一个根本性问题：DNS 污染。</p><h3 id="工作流程"><a href="#工作流程" class="headerlink" title="工作流程"></a>工作流程</h3><ol><li>浏览器想访问 google.com，发起 DNS 查询</li><li>代理客户端拦截 DNS 请求</li><li>客户端<strong>真正去解析</strong> google.com——向配置的 DNS 服务器发送查询</li><li>这里出现第一个问题：如果使用国内 DNS（如 114.114.114.114），GFW 会拦截查询并返回一个被污染的假 IP</li><li>为了解决这个问题，Redir-Host 模式引入了 <strong>fallback 机制</strong>：同时向 nameserver（通常是国内 DNS）和 fallback（通常是海外 DNS，如 Google 的 DoH）发送查询</li><li>客户端收到两边的结果后，使用 fallback-filter 规则进行比较：<ul><li>如果 nameserver 返回的 IP 经过 GEOIP 查询属于中国 → 认为没被污染，使用 nameserver 的结果</li><li>如果 nameserver 返回的 IP 不属于中国 → 可能被污染了，使用 fallback 的结果</li></ul></li><li>客户端拿到最终的 IP 结果，去匹配分流规则（基于 IP 的规则，如 <code>GEOIP,CN</code>）</li><li>根据匹配结果决定走代理还是直连</li></ol><h3 id="问题在哪"><a href="#问题在哪" class="headerlink" title="问题在哪"></a>问题在哪</h3><p><strong>更多 DNS 查询意味着更高的延迟。</strong> 每一个新域名的首次访问，都需要等待真实的 DNS 解析完成。如果配置了 fallback，还要等待海外 DNS 的响应。海外 DNS 即使用了 DoH，从中国大陆访问也至少需要 100-300 毫秒。这些延迟直接加在每一次新连接的建立过程中。</p><p><strong>fallback 判断逻辑本身就不可靠。</strong> 上面第 6 步的判断依据是”nameserver 返回的 IP 归属地是否为中国”。但这个逻辑有明显的漏洞：</p><ul><li>有些境外网站使用了国内 CDN 节点（IP 归属地是中国），按上述逻辑会被认为”没被污染”，从而使用 nameserver 的结果——但 nameserver 返回的可能恰恰是被污染的 IP</li><li>GFW 的 DNS 污染可能返回一个境外 IP（而非传统的 <code>127.0.0.1</code>），这时 GEOIP 判断发现”不是中国 IP”，会触发 fallback——但 fallback 的海外 DNS 也可能被干扰</li></ul><p><strong>基于 IP 的路由匹配不如基于域名准确。</strong> Redir-Host 拿到的是 IP 地址，路由匹配依赖 <code>GEOIP</code> 和 <code>IP-CIDR</code> 等规则。问题在于：</p><ul><li>CDN 的 IP 地址经常变化，今天这个 IP 属于香港，明天可能分配到新加坡</li><li>有些 CDN 的 IP 归属地是境外，但实际服务的是国内用户，这种情况下 GEOIP 会将其误判为”需要代理”</li><li>同一个 IP 段可能同时服务于需要代理和不需要代理的网站</li></ul><p><strong>DNS 泄漏风险。</strong> 无论最终路由结果如何，DNS 查询已经发生了。你的 ISP 能看到你在查询 google.com、youtube.com 这些域名。虽然 DoH 可以加密 DNS 查询本身不被运营商劫持，但 DNS 查询的目标服务器（如 8.8.8.8）本身就告诉了 GFW 你可能在访问境外服务。</p><p><strong>配置复杂度显著增加。</strong> 你需要正确配置 nameserver、fallback、fallback-filter 三个部分，每个部分都有自己的参数和注意事项。配置错误的概率远高于 Fake-IP 模式。</p><h3 id="什么时候还需要-Redir-Host"><a href="#什么时候还需要-Redir-Host" class="headerlink" title="什么时候还需要 Redir-Host"></a>什么时候还需要 Redir-Host</h3><p>坦白说，2026 年几乎没有普通用户需要使用 Redir-Host 模式的场景。以下是仅存的少数例外：</p><ul><li><strong>特定企业网络环境</strong>：某些企业内网的应用依赖真实的 DNS 解析结果来进行内部路由或认证，Fake-IP 会干扰这些流程</li><li><strong>对 DNS 解析结果有特殊依赖的应用</strong>：极少数应用会验证 DNS 返回的 IP 是否”合理”，收到 198.18.x.x 会拒绝连接</li><li><strong>需要基于 IP 进行精确路由的场景</strong>：某些高级用户需要根据解析出的真实 IP 来做细粒度的路由决策</li></ul><p>对于这些场景，更好的解决方案通常是：使用 Fake-IP 模式，但把有特殊需求的域名加入 <code>fake-ip-filter</code>。只有在 fake-ip-filter 无法解决问题的极端情况下，才需要考虑切换到 Redir-Host。</p><h2 id="对比表"><a href="#对比表" class="headerlink" title="对比表"></a>对比表</h2><table><thead><tr><th>维度</th><th>Fake-IP</th><th>Redir-Host</th></tr></thead><tbody><tr><td>DNS 解析时机</td><td>路由决策后（先匹配规则，再解析）</td><td>路由决策前（先解析，再匹配规则）</td></tr><tr><td>解析速度</td><td>极快（本地瞬间返回假 IP）</td><td>较慢（需要等待真实 DNS 查询）</td></tr><tr><td>DNS 泄漏风险</td><td>几乎为零（代理域名从不在本地解析）</td><td>需要精心配置才能降低</td></tr><tr><td>规则匹配方式</td><td>基于域名（精确、稳定）</td><td>基于 IP（可能不准确、受 CDN 影响）</td></tr><tr><td>配置复杂度</td><td>简单（只需 nameserver）</td><td>复杂（需要 nameserver + fallback + filter）</td></tr><tr><td>CDN 兼容性</td><td>好（直连域名在本地用国内 DNS 解析）</td><td>可能出问题（fallback 逻辑可能返回错误节点）</td></tr><tr><td>对应用的影响</td><td>极少数应用可能缓存假 IP（关代理后需清缓存）</td><td>无</td></tr><tr><td>DNS 污染影响</td><td>无（代理域名不经过本地 DNS）</td><td>大（需要 fallback 机制来对抗）</td></tr><tr><td>适合的用户</td><td>所有用户</td><td>有特殊需求的高级用户</td></tr></tbody></table><h2 id="最常见的配置错误"><a href="#最常见的配置错误" class="headerlink" title="最常见的配置错误"></a>最常见的配置错误</h2><h3 id="错误一：Fake-IP-模式下配置-fallback"><a href="#错误一：Fake-IP-模式下配置-fallback" class="headerlink" title="错误一：Fake-IP 模式下配置 fallback"></a>错误一：Fake-IP 模式下配置 fallback</h3><p>这是<strong>最高频</strong>的 DNS 配置错误，没有之一。你在网上搜索”Clash DNS 配置”，至少一半的教程会给出类似这样的配置：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># ❌ 错误配置</span></span><br><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">enhanced-mode:</span> <span class="string">fake-ip</span></span><br><span class="line">  <span class="attr">nameserver:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://doh.pub/dns-query</span></span><br><span class="line">  <span class="attr">fallback:</span>                          <span class="comment"># ← Fake-IP 下不需要这个</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://dns.google/dns-query</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://cloudflare-dns.com/dns-query</span></span><br><span class="line">  <span class="attr">fallback-filter:</span>                   <span class="comment"># ← 这个也不需要</span></span><br><span class="line">    <span class="attr">geoip:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">geoip-code:</span> <span class="string">CN</span></span><br><span class="line">    <span class="attr">ipcidr:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">240.0</span><span class="number">.0</span><span class="number">.0</span><span class="string">/4</span></span><br></pre></td></tr></table></figure><p>为什么这是错误的？让我逐条解释：</p><p><strong>fallback 是 Redir-Host 的概念，用于对抗 DNS 污染。</strong> 在 Redir-Host 模式下，客户端需要做真实 DNS 解析，国内 DNS 的结果可能被污染，所以需要用海外 DNS 作为 fallback 来交叉验证。但在 Fake-IP 模式下，nameserver 只负责解析<strong>直连域名</strong>——这些域名本来就是 baidu.com、taobao.com 这样的国内域名，用国内 DNS 解析它们是完全正确的，不存在被污染的问题。走代理的域名（google.com、youtube.com）根本不会触发本地 DNS 解析。</p><p><strong>加了 fallback 的后果：</strong></p><ol><li><strong>增加不必要的延迟。</strong> 每次直连域名的 DNS 解析，都会同时向 nameserver 和 fallback 发送查询。fallback 配置的是 Google DNS 或 Cloudflare DNS 等海外服务，从中国大陆访问这些服务器需要额外的几百毫秒。对于本来就应该秒回的国内域名，这是纯粹的性能浪费。</li><li><strong>可能导致 DNS 泄漏。</strong> 部分国内域名的查询请求会被发送到海外 DNS 服务器。虽然内容是国内域名，但这些查询流量本身会经过 GFW，可能引起不必要的关注。</li><li><strong>增加配置复杂度和出错概率。</strong> fallback-filter 的 geoip、geosite、ipcidr 等条件需要正确配置，任何一个参数错误都可能导致 DNS 解析异常。</li></ol><h3 id="错误二：nameserver-中混入海外-DNS"><a href="#错误二：nameserver-中混入海外-DNS" class="headerlink" title="错误二：nameserver 中混入海外 DNS"></a>错误二：nameserver 中混入海外 DNS</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># ❌ 错误配置</span></span><br><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">enhanced-mode:</span> <span class="string">fake-ip</span></span><br><span class="line">  <span class="attr">nameserver:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://doh.pub/dns-query</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://dns.google/dns-query</span>    <span class="comment"># ← 不应该放在这里</span></span><br></pre></td></tr></table></figure><p>在 Fake-IP 模式下，nameserver 只用于解析直连域名。如果 nameserver 中包含海外 DNS，国内域名的解析请求也会被发送到 Google DNS。Google DNS 返回的 CDN 节点可能是美国或香港的服务器，导致你直连访问这些海外 CDN，速度大幅下降。</p><p>nameserver 应该只包含<strong>国内 DNS 服务器</strong>——因为它只会被用来解析国内域名。</p><h3 id="错误三：同时开启-Fake-IP-和自定义-hosts"><a href="#错误三：同时开启-Fake-IP-和自定义-hosts" class="headerlink" title="错误三：同时开启 Fake-IP 和自定义 hosts"></a>错误三：同时开启 Fake-IP 和自定义 hosts</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># ⚠️ 需要注意的配置</span></span><br><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">enhanced-mode:</span> <span class="string">fake-ip</span></span><br><span class="line">  <span class="attr">use-hosts:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">hosts:</span></span><br><span class="line">    <span class="attr">&#x27;example.com&#x27;:</span> <span class="number">1.2</span><span class="number">.3</span><span class="number">.4</span></span><br></pre></td></tr></table></figure><p>如果你在 Fake-IP 模式下配置了 hosts，被 hosts 覆盖的域名会直接返回你指定的 IP，绕过 Fake-IP 的映射机制。这意味着这些域名的流量不会经过代理客户端的规则匹配——它们直接被发送到你指定的 IP。如果这个 IP 是一个需要代理才能访问的地址，连接就会失败。</p><p>如果你确实需要使用 hosts，请确保只对不需要代理的域名使用。</p><h3 id="正确配置"><a href="#正确配置" class="headerlink" title="正确配置"></a>正确配置</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># ✅ 正确的 Fake-IP DNS 配置</span></span><br><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">listen:</span> <span class="number">0.0</span><span class="number">.0</span><span class="number">.0</span><span class="string">:1053</span></span><br><span class="line">  <span class="attr">ipv6:</span> <span class="literal">false</span></span><br><span class="line">  <span class="attr">enhanced-mode:</span> <span class="string">fake-ip</span></span><br><span class="line">  <span class="attr">fake-ip-range:</span> <span class="number">198.18</span><span class="number">.0</span><span class="number">.1</span><span class="string">/16</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">nameserver:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://doh.pub/dns-query</span>        <span class="comment"># 腾讯 DoH</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">https://dns.alidns.com/dns-query</span>  <span class="comment"># 阿里 DoH</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">fake-ip-filter:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;*.lan&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;*.local&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;*.localhost&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;dns.msftncsi.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;www.msftncsi.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;*.msftconnecttest.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;time.*.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;ntp.*.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;+.stun.*.*&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;+.stun.*.*.*&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;localhost.ptlogin2.qq.com&#x27;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&#x27;lens.l.google.com&#x27;</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># 不需要 fallback</span></span><br><span class="line">  <span class="comment"># 不需要 fallback-filter</span></span><br></pre></td></tr></table></figure><p>这个配置的逻辑非常清晰：</p><ul><li><code>enhanced-mode: fake-ip</code>：使用 Fake-IP 模式</li><li><code>nameserver</code> 只配置国内 DNS，因为只有直连域名会用到它</li><li><code>fake-ip-filter</code> 列出需要真实 IP 的域名</li><li>没有 fallback，因为 Fake-IP 模式不需要它</li></ul><blockquote><p>更多客户端的具体配置方法，参见 <a href="./dns-best-practices.md">各客户端 DNS 配置最佳实践</a>。</p></blockquote><h2 id="Fake-IP-的技术细节"><a href="#Fake-IP-的技术细节" class="headerlink" title="Fake-IP 的技术细节"></a>Fake-IP 的技术细节</h2><p>如果你对 Fake-IP 的内部实现感兴趣，这一节提供更深入的技术解释。</p><h3 id="映射表的工作方式"><a href="#映射表的工作方式" class="headerlink" title="映射表的工作方式"></a>映射表的工作方式</h3><p>代理客户端内部维护了一张双向映射表：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">198.18.0.1 ↔ google.com</span><br><span class="line">198.18.0.2 ↔ baidu.com</span><br><span class="line">198.18.0.3 ↔ youtube.com</span><br><span class="line">198.18.0.4 ↔ taobao.com</span><br><span class="line">...</span><br></pre></td></tr></table></figure><p>这张表的大小受限于 fake-ip-range 的地址空间。以 <code>198.18.0.1/16</code> 为例，可用的地址数量约为 65,534 个。当地址用完后，客户端会采用 LRU（Least Recently Used）策略回收最久未使用的地址并重新分配。</p><p>对于绝大多数用户来说，65,534 个地址绰绰有余。一个重度互联网用户一天内访问的不同域名数量通常在几百到几千之间，远低于这个上限。</p><h3 id="TTL-与缓存"><a href="#TTL-与缓存" class="headerlink" title="TTL 与缓存"></a>TTL 与缓存</h3><p>Fake-IP 模式下，客户端返回给应用的 DNS 应答通常设置一个非常短的 TTL（如 1 秒）。这意味着应用不会长期缓存这个假 IP，下次访问同一域名时会重新向客户端发起 DNS 查询。</p><p>之所以这样设计，是因为如果应用长期缓存了假 IP，当用户关闭代理后，应用仍然会尝试连接这个不存在的 198.18.x.x 地址，导致连接失败。短 TTL 可以减少这种问题发生的概率。</p><p>但问题不能完全消除——某些应用（尤其是一些桌面客户端和游戏）会忽略 TTL，在进程存活期间一直缓存 DNS 结果。这就是为什么关闭代理后有时候需要重启应用或清除系统 DNS 缓存。</p><h3 id="与-TUN-模式的配合"><a href="#与-TUN-模式的配合" class="headerlink" title="与 TUN 模式的配合"></a>与 TUN 模式的配合</h3><p>Fake-IP 模式通常与 TUN 模式配合使用效果最佳。TUN 模式在系统中创建一个虚拟网卡，所有网络流量都经过这个虚拟网卡，代理客户端可以完整地拦截和处理每一个连接请求。</p><p>在系统代理模式下，只有通过 HTTP&#x2F;SOCKS 代理的流量才会被处理。某些应用不遵循系统代理设置，可能直接发起网络连接，绕过代理。TUN 模式可以解决这个问题，确保所有应用的流量——包括 DNS 请求——都被代理客户端接管。</p><blockquote><p>关于 TUN 模式和系统代理的区别，参见 <a href="../software/tun-vs-system-proxy.md">TUN 模式 vs 系统代理</a>。</p></blockquote><h2 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h2><h3 id="Q-关掉代理后网页打不开，是-Fake-IP-的问题吗？"><a href="#Q-关掉代理后网页打不开，是-Fake-IP-的问题吗？" class="headerlink" title="Q: 关掉代理后网页打不开，是 Fake-IP 的问题吗？"></a>Q: 关掉代理后网页打不开，是 Fake-IP 的问题吗？</h3><p>很可能是。当代理开启时，浏览器访问某个域名获得了假 IP（如 198.18.0.5），并将这个结果缓存了起来。关闭代理后，代理客户端不再拦截流量，浏览器尝试连接 198.18.0.5——但这个地址在互联网上不存在，自然连不上。</p><p>解决方法有三种（从快到慢）：</p><ol><li><strong>清除浏览器 DNS 缓存</strong>：在 Chrome 中访问 <code>chrome://net-internals/#dns</code>，点击”Clear host cache”</li><li><strong>清除系统 DNS 缓存</strong>：打开命令提示符，运行 <code>ipconfig /flushdns</code></li><li><strong>重启浏览器</strong>：关闭所有浏览器窗口再重新打开</li></ol><p>如果你经常需要开关代理，养成关闭代理后清除 DNS 缓存的习惯会省去很多麻烦。</p><h3 id="Q-Fake-IP-会影响网速吗？"><a href="#Q-Fake-IP-会影响网速吗？" class="headerlink" title="Q: Fake-IP 会影响网速吗？"></a>Q: Fake-IP 会影响网速吗？</h3><p>不会。Fake-IP 只影响 DNS 环节——它改变的是 DNS 的解析方式和时机，不涉及实际的数据传输。当连接建立后，数据传输的路径和速度与没有 Fake-IP 时完全一样。</p><p>实际上，Fake-IP 反而会让连接建立更快——因为传统的 DNS 解析需要等待网络往返（通常几十毫秒），而 Fake-IP 在本地瞬间返回，省去了这部分等待时间。</p><h3 id="Q-游戏能用-Fake-IP-吗？"><a href="#Q-游戏能用-Fake-IP-吗？" class="headerlink" title="Q: 游戏能用 Fake-IP 吗？"></a>Q: 游戏能用 Fake-IP 吗？</h3><p>绝大多数在线游戏在 Fake-IP 模式下可以正常工作。但少数游戏可能出现问题，原因通常是：</p><ul><li><strong>P2P 联机游戏</strong>：需要通过 STUN 服务器发现自己的公网 IP 来建立玩家间的直接连接。解决方法：将游戏相关的 STUN 服务器域名加入 fake-ip-filter</li><li><strong>反作弊系统</strong>：某些游戏的反作弊系统会检查网络环境，发现 198.18.x.x 地址可能触发异常检测。解决方法：将游戏域名加入 fake-ip-filter</li><li><strong>游戏内置 DNS</strong>：少数游戏自己做 DNS 解析而不走系统 DNS，这种情况下 Fake-IP 无法拦截其 DNS 请求。解决方法：使用 TUN 模式确保所有流量被接管</li></ul><p>遇到游戏联机问题时，首先尝试将游戏相关域名加入 fake-ip-filter。如果问题依然存在，检查代理客户端的连接日志，确认游戏流量是否被正确路由。</p><h3 id="Q-为什么网上很多教程还在教-Redir-Host-fallback？"><a href="#Q-为什么网上很多教程还在教-Redir-Host-fallback？" class="headerlink" title="Q: 为什么网上很多教程还在教 Redir-Host + fallback？"></a>Q: 为什么网上很多教程还在教 Redir-Host + fallback？</h3><p>主要有三个原因：</p><ol><li><p><strong>教程过时。</strong> 这些教程大多写于 2020-2022 年，当时 Fake-IP 功能在部分客户端中还不够成熟，Redir-Host + fallback 是当时的主流方案。但到了 2026 年，Fake-IP 在 Clash Meta（<a href="https://github.com/MetaCubeX/mihomo">mihomo</a>）、Surge、Shadowrocket 等所有主流客户端中都已经非常成熟和稳定。更多信息可参考 <a href="https://wiki.metacubex.one/">Clash Wiki</a>。</p></li><li><p><strong>抄袭传播。</strong> 大量中文教程互相抄袭，一篇错误的教程会被复制到几十个不同的博客和论坛。很多作者并不真正理解 DNS 配置的原理，只是搬运了别人的配置文件。如果源头教程是 Redir-Host 时代的产物，所有下游都会继续传播错误信息。</p></li><li><p><strong>对 Fake-IP 的误解。</strong> 一些用户看到”假 IP”这个概念就心生疑虑，担心”假的 IP 能正常上网吗？”。这种顾虑完全不必要——Fake-IP 只是 DNS 环节的占位符，实际连接使用的要么是远端解析的真实 IP（代理域名），要么是本地解析的真实 IP（直连域名）。数据传输从来不经过假 IP。</p></li></ol><h3 id="Q-我用了-Fake-IP-但某个网站打不开，怎么排查？"><a href="#Q-我用了-Fake-IP-但某个网站打不开，怎么排查？" class="headerlink" title="Q: 我用了 Fake-IP 但某个网站打不开，怎么排查？"></a>Q: 我用了 Fake-IP 但某个网站打不开，怎么排查？</h3><p>按以下步骤排查：</p><ol><li><strong>检查连接日志</strong>：打开代理客户端的连接日志，找到该网站的域名。确认它匹配了哪条规则，走了代理还是直连</li><li><strong>如果走了代理</strong>：问题可能在代理节点本身（节点挂了、IP 被封了、节点网络异常），尝试切换到其他节点</li><li><strong>如果走了直连</strong>：问题可能在分流规则（一个应该代理的域名被误判为直连），检查你的规则配置</li><li><strong>如果该域名在 fake-ip-filter 中</strong>：它获得了真实 IP，但这个 IP 可能被 GFW 封锁了。考虑将它从 fake-ip-filter 中移除，让它走正常的 Fake-IP 流程</li><li><strong>清除缓存</strong>：清除浏览器缓存和系统 DNS 缓存，排除缓存导致的问题</li></ol><blockquote><p>更系统的排查方法，参见 <a href="../troubleshooting/fake-ip-dns-issues.md">Fake-IP 模式下的 DNS 问题排查</a>。</p></blockquote><h3 id="Q-Fake-IP-模式下-nameserver-应该配几个-DNS？"><a href="#Q-Fake-IP-模式下-nameserver-应该配几个-DNS？" class="headerlink" title="Q: Fake-IP 模式下 nameserver 应该配几个 DNS？"></a>Q: Fake-IP 模式下 nameserver 应该配几个 DNS？</h3><p>推荐配置 2 个国内 DNS 服务器，实现冗余。最常见的组合是腾讯 DoH（<code>https://doh.pub/dns-query</code>）和阿里 DoH（<code>https://dns.alidns.com/dns-query</code>）。</p><p>不建议配太多。每增加一个 DNS 服务器，客户端可能会并行发送查询到所有服务器，增加不必要的网络流量。2 个就足够保证可用性了——一个挂了还有另一个。</p><p>也不建议使用传统的明文 DNS（如 <code>114.114.114.114</code>）。虽然在 Fake-IP 模式下 nameserver 只解析国内域名，不存在被 GFW 污染的风险，但明文 DNS 查询可能被运营商劫持或篡改（比如将你重定向到运营商的广告页面）。DoH 加密了 DNS 请求本身，避免了运营商劫持。</p>]]>
    </content>
    <id>https://blog.e.show/posts/fake-ip-vs-redir-host/</id>
    <link href="https://blog.e.show/posts/fake-ip-vs-redir-host/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>2026 年绝大多数用户应该使用 Fake-IP 模式。彻底讲清两种 DNS 处理模式的原理和区别。</summary>
    <title>Fake-IP vs Redir-Host：一次讲清楚</title>
    <updated>2026-05-11T21:40:36.949Z</updated>
  </entry>
  <entry>
    <author>
      <name>ednovas</name>
    </author>
    <category term="排障手册" scheme="https://blog.e.show/categories/%E6%8E%92%E9%9A%9C%E6%89%8B%E5%86%8C/"/>
    <category term="Clash" scheme="https://blog.e.show/tags/Clash/"/>
    <category term="配置" scheme="https://blog.e.show/tags/%E9%85%8D%E7%BD%AE/"/>
    <category term="排障" scheme="https://blog.e.show/tags/%E6%8E%92%E9%9A%9C/"/>
    <category term="DNS" scheme="https://blog.e.show/tags/DNS/"/>
    <category term="Fake-IP" scheme="https://blog.e.show/tags/Fake-IP/"/>
    <content>
      <![CDATA[<blockquote><p><strong>摘要</strong>：Fake-IP 是目前主流代理客户端推荐的 DNS 处理模式，它通过返回假 IP 地址来避免 DNS 泄漏和污染问题。然而，正因为”假 IP”的机制，它也会引入一些特有的问题——关闭代理后网页打不开、某些应用无法正常工作、局域网设备发现失败等。本文逐一分析这些问题的根因，并提供明确的解决方案。</p></blockquote><hr><h2 id="问题一：关闭代理后网页打不开"><a href="#问题一：关闭代理后网页打不开" class="headerlink" title="问题一：关闭代理后网页打不开"></a>问题一：关闭代理后网页打不开</h2><h3 id="症状"><a href="#症状" class="headerlink" title="症状"></a>症状</h3><p>使用 Fake-IP 模式的代理客户端（如 Clash、Mihomo 等）正常工作时一切正常，但关闭代理后，部分或全部网页无法加载，浏览器显示连接超时或 DNS 解析失败。重启浏览器后可能恢复，但有时需要等待较长时间才能正常上网。</p><h3 id="原因分析"><a href="#原因分析" class="headerlink" title="原因分析"></a>原因分析</h3><p>问题出在 DNS 缓存上。Fake-IP 模式下，代理客户端对 DNS 请求返回的是 <code>198.18.x.x</code> 段的假 IP 地址。操作系统和浏览器都会缓存 DNS 解析结果。当你关闭代理后：</p><ol><li>操作系统的 DNS 缓存中仍然保留着 <code>google.com → 198.18.0.5</code> 这样的假映射</li><li>浏览器尝试连接 <code>198.18.0.5</code>，但这个地址是代理客户端的虚拟地址段，代理关闭后不再有程序监听</li><li>连接超时，网页无法加载</li></ol><p>浏览器自身也有 DNS 缓存（Chrome 有独立的 DNS cache），这使得问题更加顽固——即使操作系统的 DNS 缓存被清除，浏览器缓存中的假 IP 仍可能导致连接失败。</p><h3 id="解决方案"><a href="#解决方案" class="headerlink" title="解决方案"></a>解决方案</h3><p><strong>方法一：清除系统 DNS 缓存</strong></p><p>关闭代理后，立即清除操作系统的 DNS 缓存：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Windows</span></span><br><span class="line">ipconfig /flushdns</span><br><span class="line"></span><br><span class="line"><span class="comment"># macOS</span></span><br><span class="line"><span class="built_in">sudo</span> dscacheutil -flushcache &amp;&amp; <span class="built_in">sudo</span> killall -HUP mDNSResponder</span><br><span class="line"></span><br><span class="line"><span class="comment"># Linux</span></span><br><span class="line"><span class="built_in">sudo</span> systemd-resolve --flush-caches</span><br></pre></td></tr></table></figure><p><strong>方法二：清除浏览器 DNS 缓存</strong></p><p>在 Chrome 中访问 <code>chrome://net-internals/#dns</code>，点击”Clear host cache”清除浏览器内部的 DNS 缓存。Firefox 等浏览器也有类似的内部页面。</p><p><strong>方法三：配置代理客户端在退出时自动清除缓存</strong></p><p>部分 Clash 客户端（如 Clash Verge Rev）支持在关闭时自动刷新系统 DNS 缓存。在客户端设置中查找相关选项并启用。</p><p><strong>方法四：使用 TUN 模式的 auto-redir 功能</strong></p><p>部分客户端在 TUN 模式下会在关闭时自动恢复系统网络配置，包括清理 DNS 缓存。确保使用 TUN 模式而非系统代理模式，可以减少此问题的发生。</p><hr><h2 id="问题二：部分应用无法正常工作"><a href="#问题二：部分应用无法正常工作" class="headerlink" title="问题二：部分应用无法正常工作"></a>问题二：部分应用无法正常工作</h2><h3 id="症状-1"><a href="#症状-1" class="headerlink" title="症状"></a>症状</h3><p>开启 Fake-IP 模式后，大多数应用正常，但某些特定应用出现异常：无法登录、功能不完整、或者直接报错。常见的问题应用包括：部分游戏客户端、某些企业 VPN、物联网设备配套 APP、部分银行类应用等。</p><h3 id="原因分析-1"><a href="#原因分析-1" class="headerlink" title="原因分析"></a>原因分析</h3><p>这些应用需要获取目标域名的<strong>真实 IP 地址</strong>才能正常工作。原因各异：</p><ul><li><strong>游戏客户端</strong>：某些游戏使用 IP 地址做连接验证或 P2P 匹配，假 IP 导致验证失败或无法匹配到玩家</li><li><strong>企业 VPN</strong>：VPN 客户端可能验证 DNS 解析结果与预期 IP 范围是否匹配，假 IP 不在预期范围内</li><li><strong>物联网 APP</strong>：设备发现协议依赖本地网络的真实 IP 通信</li><li><strong>银行 APP</strong>：安全检测机制可能检查 DNS 解析结果的合理性</li></ul><h3 id="解决方案-1"><a href="#解决方案-1" class="headerlink" title="解决方案"></a>解决方案</h3><p>将这些应用所使用的域名添加到 <code>fake-ip-filter</code> 列表中。被列入 <code>fake-ip-filter</code> 的域名不会返回假 IP，而是进行真实的 DNS 解析。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Clash / Mihomo 配置</span></span><br><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">enhanced-mode:</span> <span class="string">fake-ip</span></span><br><span class="line">  <span class="attr">fake-ip-range:</span> <span class="number">198.18</span><span class="number">.0</span><span class="number">.1</span><span class="string">/16</span></span><br><span class="line">  <span class="attr">fake-ip-filter:</span></span><br><span class="line">    <span class="comment"># 特定应用域名</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.battlenet.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.blizzard.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.stun.*.*&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.stun.*.*.*&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;lens.l.google.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.n]intendoserver.net&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.srv.nintendo.net&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.stun.playstation.net&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.sonyentertainmentnetwork.com&quot;</span></span><br></pre></td></tr></table></figure><p><strong>如何确定哪些域名需要加入 filter？</strong></p><ol><li>在代理客户端的日志中查找该应用的 DNS 请求记录</li><li>将该应用的相关域名逐一添加到 <code>fake-ip-filter</code></li><li>测试应用是否恢复正常</li></ol><hr><h2 id="问题三：局域网设备发现失败"><a href="#问题三：局域网设备发现失败" class="headerlink" title="问题三：局域网设备发现失败"></a>问题三：局域网设备发现失败</h2><h3 id="症状-2"><a href="#症状-2" class="headerlink" title="症状"></a>症状</h3><p>开启 Fake-IP 模式后，无法在局域网中发现其他设备。例如：AirPlay 找不到 Apple TV、Chromecast 投屏失败、NAS 无法在文件管理器中显示、打印机搜索不到等。</p><h3 id="原因分析-2"><a href="#原因分析-2" class="headerlink" title="原因分析"></a>原因分析</h3><p>局域网设备发现依赖的协议（如 mDNS&#x2F;Bonjour、SSDP&#x2F;UPnP）使用特定的域名后缀（<code>.local</code>、<code>.lan</code> 等）。在 Fake-IP 模式下，这些域名的 DNS 请求也被拦截并返回了假 IP，导致设备发现协议无法正常工作。</p><p>具体来说：</p><ul><li><strong>mDNS</strong>（多播 DNS）使用 <code>.local</code> 后缀进行局域网设备发现。当 <code>.local</code> 域名被返回假 IP 后，设备间的通信被破坏</li><li><strong>SSDP</strong> 使用组播地址 <code>239.255.255.250</code> 进行设备发现，虽然不直接走 DNS，但部分实现可能依赖 DNS 解析</li><li><strong>NetBIOS</strong> 和 <strong>LLMNR</strong> 是 Windows 环境下的局域网名称解析协议，同样受到 Fake-IP 干扰</li></ul><h3 id="解决方案-2"><a href="#解决方案-2" class="headerlink" title="解决方案"></a>解决方案</h3><p>将局域网相关的域名后缀添加到 <code>fake-ip-filter</code>：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">fake-ip-filter:</span></span><br><span class="line">    <span class="comment"># 局域网设备发现</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.local&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.lan&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.home.arpa&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.localdomain&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.local&quot;</span></span><br></pre></td></tr></table></figure><hr><h2 id="问题四：Windows-显示”无-Internet-连接”"><a href="#问题四：Windows-显示”无-Internet-连接”" class="headerlink" title="问题四：Windows 显示”无 Internet 连接”"></a>问题四：Windows 显示”无 Internet 连接”</h2><h3 id="症状-3"><a href="#症状-3" class="headerlink" title="症状"></a>症状</h3><p>开启 Fake-IP 代理后，Windows 任务栏的网络图标显示”无 Internet 连接”（出现一个小地球或黄色感叹号），但实际上网页可以正常访问。部分应用因为检测到系统报告”无网络”而拒绝联网。</p><h3 id="原因分析-3"><a href="#原因分析-3" class="headerlink" title="原因分析"></a>原因分析</h3><p>Windows 通过 NCSI（Network Connectivity Status Indicator）机制检测网络连接状态。NCSI 会访问特定的微软域名来判断是否有 Internet 连接：</p><ul><li><code>www.msftconnecttest.com</code> — HTTP 连接测试</li><li><code>dns.msftncsi.com</code> — DNS 解析测试</li><li><code>ipv6.msftconnecttest.com</code> — IPv6 连接测试</li></ul><p>在 Fake-IP 模式下，这些域名被返回了假 IP。Windows 的 NCSI 模块尝试连接假 IP，连接失败或返回非预期内容，于是判定”没有 Internet 连接”。</p><h3 id="解决方案-3"><a href="#解决方案-3" class="headerlink" title="解决方案"></a>解决方案</h3><p>将微软的网络连接检测域名添加到 <code>fake-ip-filter</code>：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">fake-ip-filter:</span></span><br><span class="line">    <span class="comment"># Windows 网络连接检测</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.msftconnecttest.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.msftncsi.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;www.msftconnecttest.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;www.msftncsi.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;ipv6.msftconnecttest.com&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># macOS / iOS 网络连接检测</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;captive.apple.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.apple.com.cn&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># Android 网络连接检测</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;connectivitycheck.gstatic.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;connectivitycheck.android.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;clients3.google.com&quot;</span></span><br></pre></td></tr></table></figure><p>同样的问题也会出现在 macOS（访问 <code>captive.apple.com</code> 检测）和 Android（访问 <code>connectivitycheck.gstatic.com</code> 检测）上，一并加入 filter 即可。</p><hr><h2 id="问题五：NTP-时间同步异常"><a href="#问题五：NTP-时间同步异常" class="headerlink" title="问题五：NTP 时间同步异常"></a>问题五：NTP 时间同步异常</h2><h3 id="症状-4"><a href="#症状-4" class="headerlink" title="症状"></a>症状</h3><p>系统时间出现偏差，或者手动触发时间同步时失败。在严重情况下，时间偏差可能导致 TLS 证书验证失败（证书的有效期基于时间判断），进而引发代理连接异常。</p><h3 id="原因分析-4"><a href="#原因分析-4" class="headerlink" title="原因分析"></a>原因分析</h3><p>NTP（Network Time Protocol）客户端通过域名解析来找到时间服务器的 IP 地址。常见的 NTP 域名如 <code>time.windows.com</code>、<code>ntp.aliyun.com</code> 等。Fake-IP 模式返回假 IP 后，NTP 客户端尝试与假 IP 同步时间，自然会失败。</p><p>更关键的是，NTP 使用 UDP 协议，而 Fake-IP 的假 IP 映射在 TUN 模式下主要处理 TCP 流量。UDP 到假 IP 的数据包通常会被直接丢弃。</p><h3 id="解决方案-4"><a href="#解决方案-4" class="headerlink" title="解决方案"></a>解决方案</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">fake-ip-filter:</span></span><br><span class="line">    <span class="comment"># NTP 时间同步</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time.*.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time.*.gov&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time.*.edu.cn&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time.*.apple.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time-ios.apple.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time-macos.apple.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;ntp.*.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;ntp.aliyun.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;pool.ntp.org&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.pool.ntp.org&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time.windows.com&quot;</span></span><br></pre></td></tr></table></figure><hr><h2 id="问题六：游戏-P2P-联机问题"><a href="#问题六：游戏-P2P-联机问题" class="headerlink" title="问题六：游戏 P2P 联机问题"></a>问题六：游戏 P2P 联机问题</h2><h3 id="症状-5"><a href="#症状-5" class="headerlink" title="症状"></a>症状</h3><p>某些依赖 P2P（点对点）连接的在线游戏无法正常联机。玩家可能看到”NAT 类型严格”的提示，或者直接无法与其他玩家匹配。</p><h3 id="原因分析-5"><a href="#原因分析-5" class="headerlink" title="原因分析"></a>原因分析</h3><p>P2P 联机需要通过 STUN（Session Traversal Utilities for NAT）服务器来检测自身的 NAT 类型和公网地址。STUN 请求需要获取服务器的真实 IP 地址，并且使用 UDP 协议通信。Fake-IP 返回的假 IP 无法用于 STUN 协议。</p><p>此外，某些游戏平台（如任天堂在线服务）会验证 STUN 返回的 IP 地址与实际连接 IP 的一致性，假 IP 会导致验证失败。</p><h3 id="解决方案-5"><a href="#解决方案-5" class="headerlink" title="解决方案"></a>解决方案</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">fake-ip-filter:</span></span><br><span class="line">    <span class="comment"># STUN 服务器</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.stun.*.*&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.stun.*.*.*&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.stun.*.*.*.*&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;stun.*.*&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;stun.*.*.*&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># 游戏平台</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.n]intendoserver.net&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.srv.nintendo.net&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.stun.playstation.net&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.sonyentertainmentnetwork.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.battlenet.com.cn&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.wargaming.net&quot;</span></span><br></pre></td></tr></table></figure><hr><h2 id="调试方法"><a href="#调试方法" class="headerlink" title="调试方法"></a>调试方法</h2><p>当遇到 Fake-IP 相关的未知问题时，以下调试方法可以帮助定位原因。</p><h3 id="启用-Clash-调试日志"><a href="#启用-Clash-调试日志" class="headerlink" title="启用 Clash 调试日志"></a>启用 Clash 调试日志</h3><p>在 Clash 配置文件中将日志级别设置为 <code>debug</code>：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">log-level:</span> <span class="string">debug</span></span><br></pre></td></tr></table></figure><p>然后在日志中搜索问题应用发起的 DNS 请求。如果看到某个域名被分配了 <code>198.18.x.x</code> 的地址，而该域名本应返回真实 IP，就找到了问题所在。</p><h3 id="检查-DNS-解析路径"><a href="#检查-DNS-解析路径" class="headerlink" title="检查 DNS 解析路径"></a>检查 DNS 解析路径</h3><p>使用 <code>nslookup</code> 或 <code>dig</code> 在代理开启和关闭时分别查询同一域名：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 代理开启时查询</span></span><br><span class="line">nslookup example.com 127.0.0.1</span><br><span class="line"></span><br><span class="line"><span class="comment"># 如果返回 198.18.x.x，说明这个域名走了 Fake-IP</span></span><br><span class="line"><span class="comment"># 如果需要真实 IP，就应该加入 fake-ip-filter</span></span><br></pre></td></tr></table></figure><h3 id="使用-Clash-Dashboard-查看"><a href="#使用-Clash-Dashboard-查看" class="headerlink" title="使用 Clash Dashboard 查看"></a>使用 Clash Dashboard 查看</h3><p>大多数 Clash 客户端都提供了 Dashboard（控制面板），其中可以查看实时的 DNS 查询记录和连接日志。通过 Dashboard 可以直观地看到哪些域名被分配了假 IP、哪些走了真实解析。</p><hr><h2 id="完整-fake-ip-filter-模板"><a href="#完整-fake-ip-filter-模板" class="headerlink" title="完整 fake-ip-filter 模板"></a>完整 fake-ip-filter 模板</h2><p>以下是一个经过实践验证的完整 <code>fake-ip-filter</code> 配置模板，涵盖了上述所有场景：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">dns:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">listen:</span> <span class="number">0.0</span><span class="number">.0</span><span class="number">.0</span><span class="string">:1053</span></span><br><span class="line">  <span class="attr">enhanced-mode:</span> <span class="string">fake-ip</span></span><br><span class="line">  <span class="attr">fake-ip-range:</span> <span class="number">198.18</span><span class="number">.0</span><span class="number">.1</span><span class="string">/16</span></span><br><span class="line">  <span class="attr">fake-ip-filter:</span></span><br><span class="line">    <span class="comment"># === 局域网 / 设备发现 ===</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.local&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.lan&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.home.arpa&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.localdomain&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># === 系统网络连接检测 ===</span></span><br><span class="line">    <span class="comment"># Windows</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.msftconnecttest.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.msftncsi.com&quot;</span></span><br><span class="line">    <span class="comment"># macOS / iOS</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;captive.apple.com&quot;</span></span><br><span class="line">    <span class="comment"># Android</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;connectivitycheck.gstatic.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;connectivitycheck.android.com&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># === NTP 时间同步 ===</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time.*.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time.*.gov&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time.*.edu.cn&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time.*.apple.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time-ios.apple.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time-macos.apple.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;ntp.*.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;ntp.aliyun.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;pool.ntp.org&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.pool.ntp.org&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;time.windows.com&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># === STUN / P2P ===</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.stun.*.*&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.stun.*.*.*&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.stun.*.*.*.*&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;stun.*.*&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;stun.*.*.*&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># === 游戏平台 ===</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.srv.nintendo.net&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.stun.playstation.net&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.sonyentertainmentnetwork.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.battlenet.com.cn&quot;</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment"># === 其他需要真实 IP 的服务 ===</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;lens.l.google.com&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;+.nflxvideo.net&quot;</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&quot;*.mcdn.bilivideo.cn&quot;</span></span><br></pre></td></tr></table></figure><hr><h2 id="常见问题（FAQ）"><a href="#常见问题（FAQ）" class="headerlink" title="常见问题（FAQ）"></a>常见问题（FAQ）</h2><h3 id="Fake-IP-模式和-Redir-Host-模式该选哪个？"><a href="#Fake-IP-模式和-Redir-Host-模式该选哪个？" class="headerlink" title="Fake-IP 模式和 Redir-Host 模式该选哪个？"></a>Fake-IP 模式和 Redir-Host 模式该选哪个？</h3><p>绝大多数场景推荐 Fake-IP。它速度更快（DNS 请求本地即返回，无需等待上游解析）、更安全（走代理的域名不会在本地做 DNS 解析，避免 DNS 泄漏）、规则匹配更准确。Redir-Host 只在极少数对真实 IP 有强依赖且 fake-ip-filter 无法覆盖的场景中才需要考虑。详见 <a href="/posts/fake-ip-vs-redir-host/">Fake-IP vs Redir-Host 详解</a>。</p><h3 id="fake-ip-filter-加太多条目会影响性能吗？"><a href="#fake-ip-filter-加太多条目会影响性能吗？" class="headerlink" title="fake-ip-filter 加太多条目会影响性能吗？"></a>fake-ip-filter 加太多条目会影响性能吗？</h3><p>不会有明显影响。filter 列表的匹配是高效的字符串匹配操作，即使有几百条规则，对性能的影响也可以忽略不计。但 filter 中的域名会走真实 DNS 解析，增加这些域名的首次访问延迟。</p><h3 id="198-18-0-0-16-这个地址段会和我的网络冲突吗？"><a href="#198-18-0-0-16-这个地址段会和我的网络冲突吗？" class="headerlink" title="198.18.0.0&#x2F;16 这个地址段会和我的网络冲突吗？"></a>198.18.0.0&#x2F;16 这个地址段会和我的网络冲突吗？</h3><p>通常不会。<code>198.18.0.0/15</code> 是 RFC 2544 定义的基准测试保留地址段，正常网络不会使用。但如果你的环境中确实使用了这个地址段（极少见），可以在配置中修改 <code>fake-ip-range</code> 为其他未使用的私有地址段，如 <code>28.0.0.1/8</code>。</p><h3 id="为什么加入-filter-后某些域名还是返回假-IP？"><a href="#为什么加入-filter-后某些域名还是返回假-IP？" class="headerlink" title="为什么加入 filter 后某些域名还是返回假 IP？"></a>为什么加入 filter 后某些域名还是返回假 IP？</h3><p>可能的原因：配置文件中 filter 的通配符写法不正确（注意 <code>*</code> 和 <code>+</code> 的区别：<code>*</code> 匹配任意字符，<code>+</code> 在 Clash 中匹配一级或多级子域名）；配置修改后没有重启客户端或重新加载配置；浏览器或系统的 DNS 缓存中仍然保留了旧的假 IP 记录。</p><h3 id="可以对所有域名都不使用-Fake-IP-吗？"><a href="#可以对所有域名都不使用-Fake-IP-吗？" class="headerlink" title="可以对所有域名都不使用 Fake-IP 吗？"></a>可以对所有域名都不使用 Fake-IP 吗？</h3><p>技术上可以——把 enhanced-mode 设为 redir-host 就是这个效果。但这样做会失去 Fake-IP 的所有优势。更合理的做法是保持 Fake-IP 模式，只把确实需要真实 IP 的域名加入 filter。</p><h3 id="TUN-模式和-Fake-IP-必须一起使用吗？"><a href="#TUN-模式和-Fake-IP-必须一起使用吗？" class="headerlink" title="TUN 模式和 Fake-IP 必须一起使用吗？"></a>TUN 模式和 Fake-IP 必须一起使用吗？</h3><p>不是必须的，但推荐一起使用。TUN 模式接管系统全部流量，配合 Fake-IP 可以实现最完善的 DNS 防泄漏。如果使用系统代理模式，部分应用可能绕过代理直接发起 DNS 查询，Fake-IP 对这些查询不生效。详见 <a href="/posts/dns-best-practices/">DNS 最佳实践</a>。</p><hr><h2 id="外部参考"><a href="#外部参考" class="headerlink" title="外部参考"></a>外部参考</h2><ul><li><a href="/posts/fake-ip-vs-redir-host/">Fake-IP vs Redir-Host 详解</a> — 两种 DNS 模式的深入对比</li><li><a href="/posts/dns-best-practices/">DNS 配置最佳实践</a> — 各客户端的 DNS 推荐配置</li><li><a href="https://wiki.metacubex.one/">Clash Meta Wiki</a> — Clash Meta 官方文档</li><li><a href="https://datatracker.ietf.org/doc/html/rfc2544">RFC 2544</a> — 198.18.0.0&#x2F;15 地址段的定义</li></ul>]]>
    </content>
    <id>https://blog.e.show/posts/fake-ip-dns-issues/</id>
    <link href="https://blog.e.show/posts/fake-ip-dns-issues/"/>
    <published>2026-05-09T16:00:00.000Z</published>
    <summary>Fake-IP 模式虽然是推荐方案，但也可能遇到特定问题——关闭代理后网页打不开、部分应用异常、局域网设备发现失败等。</summary>
    <title>Fake-IP 模式下的 DNS 问题排查</title>
    <updated>2026-05-09T16:00:00.000Z</updated>
  </entry>
</feed>
