VLESS + Reality + Caddy:一端口三用分流实战
很多人搭节点,都希望"看起来像正常网站"。这篇文章记录我在这台小 VPS 上的做法:同一个 443 端口,三种用途互不干扰。
架构总览
- TCP 443 → xray 的 VLESS + Reality:合法客户端进节点,普通 TLS 请求 fallback 到 Caddy 的真实博客。
- UDP 443 → Hysteria2:合法客户端走 hy2,其余 UDP 流量自然丢弃。
- Caddy → 只负责托管真实静态博客,不做 TLS 终结在前端。
为什么用 Reality
Reality 是一种无需自己持有证书的 TLS 捏造技术。客户端和服务器协商时,握手过程与访问一个真实 HTTPS 站点完全一致,审查设备无法区分"这是在用代理"还是"这是普通浏览"。配合自己的域名,可以做到流量形态与真实访问无异。
核心思想:端口号只是入口,真正决定你是谁的是你握手的姿势。
Fallback 是伪装的关键
xray 的 fallbacks 机制让同一端口上的"陌生 TLS 连接"被转交给本地另一个服务(这里是 Caddy)。于是:
浏览器访问 https://lab.411.cc.cd
→ xray 收到,一看不是 Reality 特征
→ fallback 到 127.0.0.1:8080
→ Caddy 返回正常博客页面
审查者扫描这个端口,得到的是一个完全正常的 HTTPS 博客响应。真实节点流量则藏在同一端口之下,无痕通过。
Hysteria2 为什么站 UDP 443
Hysteria2 基于 QUIC,走 UDP。它把 UDP 443 这个"半空闲"的端口用起来,与 TCP 443 互补:一个负责稳定,一个负责在苛刻网络下的表现。两者协议栈不同、互不冲突。
一点资源观
916MB 内存、单核 EPYC,跑起 xray + sing-box + Caddy 还剩一大半空闲。做代理这事,真不需要多豪华的机器——架构对了,小鸡也能起飞。
本文作为本站搭建过程的记录。相关服务均为本机自用。