VLESS Reality 的优势来自 TLS 握手层的细节控制。也正因为细节多,很多问题看起来像网络波动,实际是客户端字段和服务端字段没有对齐。尤其是同一份订阅同时给 v2rayN、NekoBox、sing-box、Clash Meta 使用时,字段名会变,但含义不能变。
字段对照
| 字段 | 服务端位置 | 客户端位置 | 检查重点 |
|---|---|---|---|
| SNI / serverName | serverNames | server_name / sni | 必须在允许列表里 |
| dest | realitySettings.dest | 通常不在客户端 | 目标应真实可达 |
| publicKey | 由私钥生成 | public_key / pbk | 复制不能缺字符 |
| shortId | shortIds | short_id / sid | 十六进制长度一致 |
| fingerprint | 无或默认策略 | fingerprint / utls | 多端建议显式设置 |
| flow | client user | flow | 常见为 xtls-rprx-vision |
检查顺序
看服务端。dest 与 serverNames 应指向同一类真实 HTTPS 目标,端口通常是 443。serverNames 里写了多个名称时,客户端选择的 SNI 必须完全命中其中一个,不能自己加前缀或换根域。
再看客户端。v2rayN、NekoBox、sing-box 对字段命名不同,但 publicKey、shortId、serverName 的值应一致。uTLS fingerprint 建议先用 chrome,排障期间不要在多个客户端间混用随机值。
如果你使用配套订阅线路并导出多客户端配置,建议保留一份原始 Reality 参数表,后续哪端导入异常,就和这张表逐项对照。
操作清单
- 服务端私钥与客户端 publicKey 是一组。
- shortId 没有被二维码、换行或备注截断。
- SNI 在 serverNames 列表内。
- fingerprint 显式写为 chrome、firefox 或 safari 之一。
- flow 与客户端支持能力一致。
- 客户端核心版本支持 Reality 与 uTLS 字段。
常见坑
dest 可达不代表 SNI 正确;浏览器能打开目标站,也不代表 Reality 参数匹配。另一个坑是订阅转换器改写字段名时丢掉 fingerprint,导致桌面端正常、移动端异常。还有人把 serverName 写成 URL,带上 https://,这在多数客户端里都是错误写法。