SNI 阻断是一种利用 TLS 握手中明文传输的 SNI(服务器名称指示)字段识别并切断特定网站连接的网络封锁技术,常见于大规模网络审查系统,是 HTTPS 时代封锁网站的主要手段之一,也是理解翻墙原理的重要概念。

| 类型 | 网络审查与封锁技术 |
| 作用层面 | TLS 握手(Client Hello) |
| 封锁粒度 | 按域名精确封锁 |
| 典型表现 | 连接被重置、网页无法打开 |
| 主要对策 | ECH 加密握手、代理与 VPN |
| 相关协议 | TLS、HTTPS、ECH |
SNI 阻断(SNI Blocking)是一种基于 TLS 握手中服务器名称指示(Server Name Indication,简称 SNI)字段实施的网络封锁技术:防火墙通过读取明文传输的 SNI 识别用户要访问的网站域名,并对命中黑名单的连接进行中断。
SNI 是 TLS 协议的一个扩展。由于一个 IP 地址上往往托管着多个 HTTPS 网站,客户端需要在握手最开始的 Client Hello 消息中写明自己想访问的域名,服务器才能返回对应的证书。问题在于,传统 TLS 握手中这个字段是明文的——位于网络路径上的审查设备无需解密任何加密内容,就能直接看到用户访问的目标域名。
当审查系统检测到 SNI 中出现被封锁的域名时,常见做法是向通信双方发送伪造的 TCP RST(重置)包强行断开连接,或直接丢弃后续数据包,表现为网页一直转圈、提示「连接被重置」。与 DNS 污染、IP 封锁相比,SNI 阻断粒度更精确:它按域名封锁,即使更换 DNS、即使目标网站与其他正常网站共用 IP,也依然会被拦截。
针对 SNI 阻断,技术社区发展出多种对策:一是 ECH(Encrypted Client Hello),将 SNI 等握手信息加密,使中间设备无法读取真实域名,但该扩展本身也可能被审查方整体干扰;二是通过代理或 VPN,让本地发出的 TLS 握手指向代理服务器而非目标网站,常见翻墙协议大多以此思路工作;三是域前置等技巧,即握手中填写允许访问的域名、实际请求另一站点,不过主流云厂商已普遍限制这种做法。
问:SNI 阻断和 DNS 污染有什么区别?答:DNS 污染发生在域名解析阶段,返回错误 IP;SNI 阻断发生在 TLS 握手阶段,即使解析到正确 IP、连接已建立,也会因明文域名命中黑名单而被切断,因此仅更换 DNS 无法绕过。
问:为什么网站换了 IP 还是打不开?答:因为 SNI 阻断按域名而非 IP 识别目标,只要握手中出现被封锁的域名,无论服务器 IP 如何变化都会被拦截。
问:ECH 能彻底解决 SNI 阻断吗?答:ECH 从协议层面加密了域名信息,是根本性的改进方向,但它依赖浏览器、网站和 DNS 基础设施共同支持,且审查方可能对 ECH 流量本身进行干扰,目前还不能视为一劳永逸的方案。

| 类型 | 网络审查与封锁技术 |
| 作用层面 | TLS 握手(Client Hello) |
| 封锁粒度 | 按域名精确封锁 |
| 典型表现 | 连接被重置、网页无法打开 |
| 主要对策 | ECH 加密握手、代理与 VPN |
| 相关协议 | TLS、HTTPS、ECH |
登录 后参与讨论
暂无讨论,来发表第一条评论吧