SNI(Server Name Indication)
SNI 是 TLS 握手过程中的一个字段,用来告诉服务器客户端想要访问的具体域名,让同一个 IP 地址上部署的多个不同网站能被正确区分和路由。
SNI 本身是一项通用的网络技术,解决的是「一个 IP 上跑多个网站时,服务器怎么知道该把请求交给哪个网站」这个问题。因为传统 TLS 握手里 SNI 通常以明文形式传输,网络中间设备(包括审查设备)可以直接读取这个字段,判断你正在访问哪个域名并针对性处理——这也是为什么代理协议的分流规则里经常会用「按 SNI/域名匹配」来判断流量该走代理还是直连,以及为什么 ECH 这类技术要专门把 SNI 也加密起来。
在分流规则里,“按域名分流”和“按 SNI 分流”经常被放在一起讨论,因为对于加密的 HTTPS 流量,客户端软件很多时候正是靠读取 SNI 字段来判断这个连接要访问的域名,进而决定该匹配哪一条分流规则,具体可以参考分流规则 / 规则集。
常见误区与自查
- 误区:看不到网页内容,别人就看不到你访问了什么。SNI 往往是明文,网络中间设备可以读到你访问的域名,被加密的是内容本身。
- 自查:理解这一点有助于配置分流规则时选择“域名”类规则;涉及隐私的场景,要清楚 ECH 与 DNS 加密各自保护的边界。
相关术语
你可能还想看: