↓ 跳过正文
  1. 文章/
  2. 2026 年文章归档/

SNI 阻断是什么?TLS 握手阶段被掐的表现

·876 字·2 分钟
作者
吾便宜
SNI 阻断原理示意图

插图来源:Storyset

先说 SNI 是干嘛的
#

你访问一个 HTTPS 网站时,浏览器要先和服务器"握手"。握手的第一步,浏览器会明文告诉服务器:“我想访问的是 www.example.com”。这个明文报上名的字段,就叫 SNI(服务器名称指示)。

为什么要明文?因为一台服务器上可能托管着上百个网站,服务器得先知道你要找谁,才能拿出对应的证书。SNI 就是握手阶段的"报名字"环节。

SNI 阻断是怎么回事
#

既然 SNI 是明文的,那中间设备就能看到你在访问哪个网站。SNI 阻断就是:在握手阶段看到 SNI 是某个目标,直接把连接掐断。你的浏览器会看到"连接被重置"之类的错误,页面一片白。

被 SNI 阻断时的典型症状
#

  • 特定网站打不开,换浏览器、清缓存都没用。
  • 同一个网站,HTTP 能开(如果还支持的话),HTTPS 不行。
  • 开代理后能打开,关掉就不行——因为代理把 SNI 藏在了隧道里。
  • 有意思的是:同一 IP 上的其他网站能正常打开,只有目标网站不行。这是 SNI 阻断区别于 IP 封锁的关键特征。

它和 DNS 污染的区别
#

这两个经常被搞混,一张表分清:

SNI 阻断DNS 污染
发生阶段TLS 握手时域名解析时
现象连接被重置、打不开解析到错误的 IP,跳到奇怪页面
针对目标按域名精确打击按域名,但可能误伤
绕过思路把流量包进隧道(代理/VPN)换可信 DNS 或同样走代理

简单记:DNS 污染是"指错路",SNI 阻断是"认出你然后拦下"。

普通人需要做什么
#

  • 大多数情况下什么都不用做:你用的代理本身就是 SNI 阻断的解法,流量进隧道后 SNI 对外不可见。
  • 如果你发现"开了代理某个站还是打不开",那可能不是 SNI 的问题,按IP 被墙排查走。
  • 对技术细节感兴趣:Trojan 协议的设计就是围绕"让 SNI 和握手看起来正常"展开的;Cloudflare 相关的握手异常见这篇。

一句话总结
#

SNI 是握手时明文报的名字,SNI 阻断就是按名字拦人。代理把名字藏进隧道,问题自然消失。理解这个概念,很多"为什么这个站打不开"的疑惑就通了。

相关文章

ECH 加密 ClientHello 科普:对科学上网意味着什么

·1304 字·3 分钟
插图来源:Storyset 问:SNI 是什么,为什么它是个问题? # 答:你访问一个 HTTPS 网站时,TLS 握手第一步(ClientHello)里的 SNI 字段,明文写着你要访问的域名。网页内容是加密的,但"你要去哪"这件事是公开的。基于 SNI 的识别和阻断,一直是最廉价有效的手段之一。