S-UI SNI 配置教程:伪装域名怎么选,TLS 参数怎么填
S-UI 面板里配置 Reality、VLESS TLS 这类协议时,经常会碰到 SNI 这个字段,很多教程一带而过让"随便填一个",但选得不合适容易导致连接不稳定甚至直接被识别。这篇教程把 SNI 是什么、该怎么选、配套的 TLS 参数怎么设置说清楚。
SNI 是什么,为什么要配置它
SNI(Server Name Indication)是 TLS 握手过程中客户端告诉服务器"我要访问哪个域名"的一个字段。在没有 SNI 之前,一台服务器上如果部署了多个不同域名的 HTTPS 站点,服务器不知道该出示哪张证书;有了 SNI,客户端在握手一开始就把目标域名亮出来,服务器才能返回对应的证书。
这个机制在自建节点场景里被借用来做伪装:客户端连接时 SNI 填的是一个知名、正规的域名,观察流量的第三方看到的握手信息显示"正在访问某个知名网站",从流量特征上更不容易被针对性识别或限速。
SNI 该怎么选
几个基本原则:
- 选访问量大、常年在线的域名,比如
www.bing.com、www.apple.com、www.microsoft.com、www.cloudflare.com这类,本身访问频率高,不容易显得突兀。 - 不需要自己拥有这个域名,只是借用它在 TLS 握手阶段的"身份",不涉及实际跳转访问。
- 避免选择本身就容易被审查或封锁的域名,选一个本身访问就不通畅的域名做伪装,等于伪装还没生效先出问题。
- 不同节点可以用不同的 SNI,如果同时跑多个节点,故意错开用不同域名,能进一步分散流量特征。
在 S-UI 里配置 SNI
以 VLESS Reality 入站为例(Reality 本身就是围绕 SNI 伪装设计的协议):
- 进入入站管理,编辑或新建 VLESS Reality 入站。
- 找到 SNI / 目标域名(有的版本界面上写作
Dest或Server Name)这个字段,填入前面选好的域名,比如www.bing.com。 - 端口一般跟着填
443,因为大部分知名网站的 HTTPS 服务都在这个端口,跟真实网站的访问习惯保持一致。 - 保存后,客户端连接时会自动带上这个 SNI 参数,不需要在客户端额外配置。
如果是普通的 VLESS/Trojan TLS 入站(不是 Reality),SNI 的配置逻辑类似,只是这种情况通常需要你自己有一个真实域名并配置好证书,具体证书申请流程可以参考 S-UI面板申请和配置SSL证书,SNI 这块跟证书是两个独立的配置项,不要混在一起理解。
配套的 TLS 参数:ALPN 和指纹伪装
光配 SNI 还不够完整,这两个参数也建议一起看一下:
ALPN(应用层协议协商)
大部分场景默认选 h2 或者 h2,http/1.1 就够用,这个字段决定 TLS 握手后协商使用的应用层协议,跟真实浏览器访问网站时的行为保持一致,没有特殊需求不用改。
指纹伪装(uTLS Fingerprint)
指纹伪装是指让 TLS 握手包的特征模拟成某个真实浏览器(比如 Chrome、Firefox、Safari)发出的样子,而不是一眼就能看出是代理软件的握手包。S-UI 里如果入站类型支持这个参数,一般可以选 chrome、firefox、safari、random 等选项,选 chrome 是比较主流稳妥的选择,因为 Chrome 市场占有率最高,伪装成它的握手特征相对不容易显得异常。
常见问题排查
配置完之后如果发现连接不稳定,按这个顺序检查:
- SNI 域名本身能不能正常访问:在本地浏览器直接打开这个域名,如果它自己都访问不通,伪装自然也没意义。
- 端口是不是配成了 443:跟真实网站的访问习惯不一致,容易显得可疑。
- 客户端和服务端的指纹伪装参数是否匹配:部分协议要求两边这个字段严格一致,不一致会导致握手失败。
如果这台机器上还没搭好基础的节点,可以先回顾 S-UI面板搭建教程 或者 S-UI配置VLESS Reality节点教程,把节点先跑起来,再回来调整这些 TLS 细节参数。