<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SNI on 飞鸽跳转</title><link>https://feige301.com/zh-cn/tags/sni/</link><description>Recent content in SNI on 飞鸽跳转</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 05 May 2026 17:30:55 +0800</lastBuildDate><atom:link href="https://feige301.com/zh-cn/tags/sni/index.xml" rel="self" type="application/rss+xml"/><item><title>Cloudflare ECH：加密SNI如何终结域名握手阻断？</title><link>https://feige301.com/zh-cn/posts/2026/cloudflare-ech-encrypted-sni-how-it-ends-domain-handshake-blocking.html</link><pubDate>Tue, 05 May 2026 17:30:55 +0800</pubDate><guid>https://feige301.com/zh-cn/posts/2026/cloudflare-ech-encrypted-sni-how-it-ends-domain-handshake-blocking.html</guid><description>&lt;p>在当前数字化浪潮席卷全球的背景下，互联网已经渗透到我们日常生活的方方面面。无论是企业运营、数字娱乐还是个人通信，稳定的网络连通性都显得至关重要。然而，即使我们已经广泛部署了HTTPS，保障了数据传输内容的加密，但表面的安全之下，仍存在着一些根深蒂固的问题，影响着网站的全球可达性与用户体验。&lt;/p>
&lt;p>&lt;strong>问题的背景与困境&lt;/strong>&lt;/p>
&lt;p>随着网络安全的意识日益增强，TLS（传输层安全协议）与HTTPS的普及率达到了前所未有的高度。我们普遍认为，一旦网站启用了HTTPS，其通信内容就得到了端到端的加密保护，中间的监听者无法窥探传输的实际数据。这在很大程度上是正确的，它有效阻止了中间人窃听敏感信息，如登录凭据、交易数据等。&lt;/p>
&lt;p>然而，网络通信并非仅仅是数据的传输，它首先需要建立连接。在这个连接建立的过程中，即使是HTTPS，也存在着一些“元数据”的泄露，这些元数据虽然不是实际的业务内容，但却能透露出客户端试图访问的具体域名信息。其中最典型的就是SNI（Server Name Indication）字段。&lt;/p>
&lt;p>正是这种SNI明文泄露，在某些“局部局域网环境”或“特定网络区域”中，被一些“中间设备”或“流量网关”所利用。它们能够识别出用户试图访问的特定域名，并基于此信息对连接进行干预，导致所谓的“域名握手阻断”或“连接阻断”。对于网站管理员、运维人员和开发者而言，这无疑是一个巨大的困境。网站明明部署了HTTPS，服务器运行正常，但在某些区域用户却无法访问，表现为浏览器显示“无法连接到服务器”、“连接被重置”等错误，业务因此受损，用户体验大打折扣，而问题的根源却难以准确定位。&lt;/p>
&lt;p>在这样的背景下，我们不禁要问：有没有一种技术，能够从根本上解决这种基于元数据泄露的连接阻断问题，真正实现端到端的隐私保护，即便是域名本身也无法被窥探？答案是肯定的，这就是我们今天要深入探讨的——Cloudflare ECH（Encrypted Client Hello）。&lt;/p>
&lt;h3 id="sni透明的信封与脆弱性">
 SNI：透明的信封与脆弱性
 &lt;a class="anchor" href="#sni%e9%80%8f%e6%98%8e%e7%9a%84%e4%bf%a1%e5%b0%81%e4%b8%8e%e8%84%86%e5%bc%b1%e6%80%a7">#&lt;/a>
&lt;/h3>
&lt;p>要理解ECH的价值，我们首先需要回顾一下传统HTTPS通信中的SNI（Server Name Indication）是如何工作的，以及它为何成为被利用的突破口。&lt;/p>
&lt;p>&lt;strong>SNI的工作原理&lt;/strong>&lt;/p>
&lt;p>在HTTP/1.1时代，一个IP地址通常只对应一个域名。但随着虚拟主机技术的发展，一台服务器能够托管成百上千个域名，它们共享同一个IP地址。当客户端发起TLS握手请求时，服务器需要知道客户端想要访问哪个域名，才能为其提供正确的TLS证书。如果服务器上有多个域名（例如&lt;code>example.com&lt;/code>和&lt;code>anothersite.com&lt;/code>），而客户端不告知目标域名，服务器就无法知道应该返回哪个域名的证书。&lt;/p>
&lt;p>为了解决这个问题，TLS协议在2003年引入了SNI扩展。SNI允许客户端在TLS握手的第一条消息，即&lt;code>Client Hello&lt;/code>消息中，以明文形式包含其要连接的域名。这就好比你去一家大型酒店办理入住手续。前台（服务器）有很多房间（虚拟主机上的网站），你要告诉前台你的预订信息（SNI），比如你预订的是“A房间”（&lt;code>example.com&lt;/code>），前台才能找到对应的房间钥匙（TLS证书）给你。虽然你拿到钥匙后会用它打开一个加密的门（建立加密连接），但你预订的房间号，在办理手续时是公开透明的。&lt;/p>
&lt;p>&lt;strong>SNI带来的脆弱性&lt;/strong>&lt;/p>
&lt;p>SNI解决了虚拟主机环境下证书选择的问题，极大地提高了服务器资源的利用率。然而，它的“明文传输”特性也留下了一个安全与隐私的隐患。在TLS握手过程中，&lt;code>Client Hello&lt;/code>消息是未加密的，因此其中的SNI字段可以被网络路径上的任何“中间设备”或“流量网关”轻易读取。&lt;/p>
&lt;p>这些设备，如“DPI（深度包检测）设备”，能够对流经其网络的数据包进行深入分析。当它们检测到特定SNI字段时，就可以识别出用户正在尝试访问的具体域名。这种识别能力，在某些“局部局域网环境”或“特定网络区域”中，被用于实施精确的网络干预。&lt;/p>
&lt;h3 id="域名握手阻断的原理与影响">
 域名握手阻断的原理与影响
 &lt;a class="anchor" href="#%e5%9f%9f%e5%90%8d%e6%8f%a1%e6%89%8b%e9%98%bb%e6%96%ad%e7%9a%84%e5%8e%9f%e7%90%86%e4%b8%8e%e5%bd%b1%e5%93%8d">#&lt;/a>
&lt;/h3>
&lt;p>基于SNI的域名握手阻断是一种常见的网络干预手段。它的原理相对直观，但对网站的可用性却有着灾难性的影响。&lt;/p>
&lt;p>&lt;strong>阻断机制解析&lt;/strong>&lt;/p>
&lt;p>当客户端向服务器发起TLS连接时，首先发送&lt;code>Client Hello&lt;/code>消息。这个消息包含了SNI字段，明确指出了客户端期望访问的域名。如果网络路径上的“中间设备”或“流量网关”（例如“某地区运营商”部署的DPI设备）被配置为监控并阻止对特定域名的访问，一旦它们在&lt;code>Client Hello&lt;/code>消息中检测到匹配的SNI，便会立即采取行动。&lt;/p>
&lt;p>常见的阻断方式包括：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>发送TCP RST（Reset）包：&lt;/strong> 这是最常见也是最直接的阻断方式。DPI设备在检测到目标SNI后，会立即伪造一个TCP RST包，发送给客户端和服务器。客户端和服务器接收到这个RST包后，会认为连接被对方强制关闭，从而中断TLS握手过程。用户在浏览器中看到的是“连接被重置”或“无法连接到服务器”的错误。&lt;/li>
&lt;li>&lt;strong>直接丢弃数据包：&lt;/strong> DPI设备也可以选择静默地丢弃包含特定SNI的&lt;code>Client Hello&lt;/code>消息，或者后续的TLS握手数据包。这会导致客户端一直等待服务器响应，最终因超时而失败。用户体验可能是页面加载缓慢，最终显示“连接超时”或“无法访问此网站”。&lt;/li>
&lt;li>&lt;strong>流量重定向/劫持：&lt;/strong> 在更复杂的情况下，DPI设备可能将流量重定向到另一个地址，或者注入虚假信息，虽然这更接近于DNS劫持或HTTP劫持，但核心仍是利用了明文SNI对流量路径的控制。&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>案例植入：韩国等区域的SNI阻断事件&lt;/strong>&lt;/p>
&lt;p>我们曾观察到，在一些“特定网络区域”，特别是像韩国这样的局部局域网环境，一些“某地区运营商”为了实施网络管理策略，曾利用SNI明文传输的特性，对访问某些“高并发商业站点”或“数字娱乐平台”的流量进行连接阻断。&lt;/p>
&lt;p>&lt;strong>技术细节分析：&lt;/strong> 在这一案例中，“某地区运营商”的网络中部署的“DPI设备”扮演了关键角色。当用户尝试访问特定的“高并发商业站点”时，其浏览器发出的&lt;code>Client Hello&lt;/code>消息中包含了这些站点的明文域名（SNI）。这些“DPI设备”在识别到这些预设的SNI模式后，会立刻向用户的设备和目标服务器发送伪造的TCP RST包。这些伪造的RST包会使得正常的TCP连接在TLS握手阶段就被强制中断，从而阻止用户与目标网站建立起安全的通信通道。&lt;/p>
&lt;p>&lt;strong>造成的影响：&lt;/strong> 这种技术性的阻断行为直接导致了：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>用户无法访问：&lt;/strong> 终端用户无法正常加载这些“高并发商业站点”或“数字娱乐平台”，浏览器通常会显示“连接已重置”或“无法访问此站点”等错误信息。&lt;/li>
&lt;li>&lt;strong>业务中断与流失：&lt;/strong> 对于依赖这些平台提供服务的企业而言，这意味着大量用户无法触达其服务，导致用户流失、广告收入下降、交易中断等一系列严重的业务损失。&lt;/li>
&lt;li>&lt;strong>用户体验受损：&lt;/strong> 用户在尝试访问合法网站时，反复遇到连接失败，严重损害了用户的网络体验和对互联网服务的信任度。&lt;/li>
&lt;/ul>
&lt;p>值得注意的是，这一事件纯粹是技术层面的操作，即利用了网络协议本身的特性（SNI明文）来实现流量控制。我们聚焦于“怎么封的”（基于SNI明文）以及“后果是什么”（网站无法访问，业务受影响），而不涉及任何监管政策或其正当性评价。这清晰地展现了SNI明文在网络连通性上带来的脆弱性，并促使行业思考更深层次的隐私保护技术。&lt;/p>
&lt;h3 id="ech登场加密的信封">
 ECH登场：加密的信封
 &lt;a class="anchor" href="#ech%e7%99%bb%e5%9c%ba%e5%8a%a0%e5%af%86%e7%9a%84%e4%bf%a1%e5%b0%81">#&lt;/a>
&lt;/h3>
&lt;p>正是为了解决SNI明文泄露带来的问题，IETF（互联网工程任务组）在TLS 1.3的基础上，提出了一个关键的扩展：ECH（Encrypted Client Hello），即加密客户端Hello。这项技术旨在从根本上消除SNI泄露的风险，为用户提供更强大的隐私保护和网络连通性。&lt;/p>
&lt;p>&lt;strong>ECH的核心原理&lt;/strong>&lt;/p>
&lt;p>ECH的核心思想非常直接：将TLS握手阶段的&lt;code>Client Hello&lt;/code>消息中的敏感信息，包括SNI以及其他可能被用于指纹识别的数据，在发送前就进行加密。这就好比你给酒店前台递交入住申请，但这次，你的预订房间号（域名）不是写在明信片上，而是写在一个加密的信封里。前台（中间设备）只能看到这个信封是发给他们酒店的，但无法得知信封里的具体内容（你预订的是哪个具体房间）。只有酒店的后台系统（目标服务器）才能解开这个信封，获取真正的预订信息。&lt;/p>
&lt;p>&lt;strong>双层&lt;code>Client Hello&lt;/code>结构&lt;/strong>&lt;/p></description></item></channel></rss>