#1635·hysteria

类似 Xray Reality 的动态证书借用 + 回落机制(Class-Reality for Hysteria 2)

Author: lipeiying032Created Jul 15, 2026Updated Jul 20, 2026
Labelsenhancement

我现在在用 Hysteria 2 和别的服务共用 443 端口,目前靠 SNI+ALPN 或者 nginx 的 sni preread 来做分流。但在一些主动探测比较厉害的网络环境里,感觉 hy2 还是容易被识别出来,尤其跟真实网站挤在同一端口的时候。

之前用过 Xray 的 Reality,它的思路很对我胃口——借用大厂的真实证书,动态签名,不自己持有私钥,而且非授权流量直接回落成真实网站,探测方基本看不出破绽。hy2 要是有类似能力,应该能硬气很多。

我想象的用法(不一定对,你评估)

服务端新增一个模式(比如叫 dynamic-certreality-like),配置大概长这样:

  • dest:要借用的目标网站,比如 www.microsoft.com:443
  • serverNames:允许的 SNI 列表
  • shortId / password:用来快速确认是不是自己客户端(可选)
  • fallback:非 hy2 流量的回落目标(本地服务或者直接透传回 dest

握手阶段的想法:

  • 收到 QUIC Client Hello,先看 SNI。
  • 如果 SNI 匹配且客户端带上了正确标识(shortId 之类),服务端就去上游 dest 拉真实证书链(或者只取公钥),然后用临时密钥对签名出一张短时效证书,完成 hy2 握手。
  • 如果来的不是 hy2 流量,或者探测包,就直接把连接转发给 dest,或者用缓存的真实证书回包,让探测方看到完全正常的微软/其他大厂 TLS 握手。
  • 证书最好能按 SNI 缓存一段时间,减少每次握手都去上游取的延迟。

客户端这边新增一个模式,传入服务端的公钥(shortId 对应的那个),SNI 填大厂域名就行。

为什么我觉得这个有用

  • 现在 masquerade 是静态伪装,证书是自己签的或固定的,指纹跟真实大厂对不上,深度检测可能露馅。
  • nginx 四层分流只能解决路由问题,证书层仍然暴露 hy2 的自签或固定证书,做不到“看起来就是目标网站”。
  • 如果能实现,hy2 在 SNI 白名单、主动探测这类场景下存活率会高很多,而且用户不用自己折腾证书续期。

我知道实现上可能有坑

QUIC 握手比 TCP+TLS 复杂,证书协商那块得处理妥当;证书获取的性能和缓存策略也要设计好;还要防止被别人滥用当跳板(所以 shortId/密钥对控制得做)。Xray 的 Reality 代码可以参考,但协议层差异挺大,工作量估计不小。

使用场景补充

我自己的情况是 VPS 上同时跑 hy2 和网站,想统一走 443,又不想被运营商或墙的主动探测标记。如果 hy2 能像 Reality 那样“隐身”,我就可以放心只用 hy2,不用再额外挂个 Xray 做备份。

如果你觉得这个方向可行,我可以帮忙测试。感谢考虑。