3x-ui 一台服务器开两个节点:Reality + Hysteria2 自动切换
不翻车编辑部 · 更新于

服务器上只有一个节点,它的端口被封,就全断了。在同一台服务器上再开一个不同协议、不同端口的节点,再让 Clash 订阅自动切换,平时走 Reality,Reality 连不上就自动换到 Hysteria2(下文简称 HY2)。2026 年 10 月 15 日,我们在测试服务器(3x-ui v3.10.2)上配好以后,把 Reality 的端口故意改错来模拟被封:第 1 次访问 Google 失败,从第 2 次起全部正常,走的是备用节点。
这篇有视频版:YouTube 上看《节点被封就全断?同一台服务器再开一个,自动切换》。
先说清楚它管不了的情况:整个 IP 被封,两个节点会一起断,那只能换 IP,做法见 VPS 被墙了怎么办。
为什么换协议、换端口?
上一篇讲过,防火长城拉黑服务器时,有时只封一个端口。原来的 Reality 走 TCP 443,备用的 HY2 走 UDP 8443,两条路互不相干,封了一条,另一条还能用。
| 主力 | 备用 | |
|---|---|---|
| 协议 | VLESS + Reality | Hysteria2 |
| 传输 | TCP | UDP |
| 端口 | 443 | 8443 |
主力还没建的,先按完整教程建好 Reality 节点。
第 1 步:建 HY2 节点
入站 → 添加入站,协议选 hysteria。面板里叫这个名字,导出来的就是 hysteria2:// 链接。

备注写一个自己认得的(我们用 bufanche-hy2),端口改成 8443。

传输这一页保持默认。它默认带一层 Salamander 混淆(面板上的说明是 Scrambles each packet into random-looking bytes,把每个包打乱成看不出规律的字节),密码面板自动填好,不用改。

安全这一页是 TLS。点 「从面板设置证书」,公钥、私钥路径会自动填成 /root/cert/ip/fullchain.pem 和 privkey.pem,也就是装面板时申请的那张 IP 证书。

再把嗅探打开,点创建。入站列表多了一行:8443、hysteria、UDP。

第 2 步:放行 UDP 端口
这一步最容易错:HY2 走 UDP,放行的也必须是 UDP。
ufw allow 8443/udp
服务商后台有安全组的,也要放开 UDP 8443。只放了 TCP,HY2 是连不上的。
第 3 步:用户关联两个节点
客户端页面,编辑原来的用户,关联入站里再勾上 bufanche-hy2,保存。这样同一个用户、同一条订阅里,就有两个节点了。

这时客户端更新订阅,代理组里已经能看到两个节点,可以手动选。但手动切太麻烦,下一步让它自己换。
第 4 步:订阅里加自动切换
面板设置 → 订阅设置 → Clash / Mihomo,「启用路由」要开着。把原来填三行直连规则的框,整段换成下面这些,保存,重启面板:
proxy-groups:
- name: PROXY
type: fallback
proxies: [主力, 备用]
url: https://www.gstatic.com/generate_204
interval: 300
- name: 主力
type: select
include-all: true
filter: reality
- name: 备用
type: select
include-all: true
filter: hy2
rules:
- GEOSITE,private,DIRECT
- GEOSITE,cn,DIRECT
- GEOIP,CN,DIRECT
意思是:
- 节点名字里带
reality的进「主力」组,带hy2的进「备用」组。 - 最上面的 PROXY 组用
fallback:按顺序用第一个能连上的,每 300 秒(5 分钟)检查一次。 rules下面是原来的三行国内直连规则,别漏了。
**按名字分组是关键。**你的入站备注里没有 reality、hy2 这几个字的话,把两个 filter: 后面换成你自己备注里的字,否则分组是空的。
为什么不直接用一个 include-all 的 fallback 组?我们试过,那样节点按名字排序,bufanche-hy2 排在 bufanche-reality 前面,备用反倒成了主力。分成两组,顺序就由 proxies: [主力, 备用] 说了算。
客户端看到的样子
客户端更新订阅,代理组变成三个:PROXY 是 Fallback,当前用「主力」;主力里是 Reality 节点,备用里是 HY2 节点。下图是 Mac 上的 Clash Verge Rev 2.5.8,iPhone 上的 Clash Mi 用的是同一个内核,也认这个写法。

实测:Reality 被封时会怎样?
我们在电脑上用 mihomo(Clash Verge 自带的内核)加载同一份订阅,每秒访问一次 Google,记下结果和 PROXY 当前用的组。
订阅原样时:
第 1 次访问 Google:HTTP 204 PROXY 当前用:主力
第 2 次访问 Google:HTTP 204 PROXY 当前用:主力
第 3 次访问 Google:HTTP 204 PROXY 当前用:主力
把订阅里 Reality 节点的端口从 443 改成 444(服务器上没有这个端口,连接会超时,和端口被封时的表现一样):
第 1 次访问 Google:HTTP 000 PROXY 当前用:备用
第 2 次访问 Google:HTTP 204 PROXY 当前用:备用
第 3 次访问 Google:HTTP 204 PROXY 当前用:备用
第 4 次访问 Google:HTTP 204 PROXY 当前用:备用
第 5 次访问 Google:HTTP 204 PROXY 当前用:备用
第 1 次请求撞上了连不上的主力,失败(HTTP 000),之后已经切到备用,全部正常。主力恢复以后,下一次检查(最多 5 分钟)就会切回来。
两点提醒
- 有的网络对 UDP 不太友好,HY2 可能慢,甚至连不上,要看你那边的网络,所以让它当备用、Reality 当主力。HY2 在丢包多的线路上反而更快,我们在 Hysteria2 和 VLESS 丢包对比里测过。
- 备用节点平时也点一下,确认它是好的。别等主力被封了,才发现备用早就连不上。
常见问题对照
| 现象 | 先查什么 |
|---|---|
| HY2 连不上 | 放行的是不是 UDP(ufw 和安全组) |
| 订阅里没有 HY2 节点 | 用户的「关联入站」有没有勾上 HY2 |
| 没有自动切换,还是一个 PROXY 选择组 | 订阅设置里那段保存了没有、面板重启了没有 |
| 主力或备用组是空的 | filter: 和入站备注里的字对不对得上 |
| 两个节点一起断 | 整个 IP 被封了,见 VPS 被墙了怎么办 |
常见问题
**HY2 一定要用 8443 吗?**不用,任何没被占用的端口都行,记得放行的是 UDP。严格说 UDP 443 和 TCP 443 也不冲突,但用个不同的数字,排查时不容易搞混。
**小火箭能用这个订阅吗?**这里用的是 Clash 订阅里的代理组写法,小火箭不读这个。iPhone 用 Clash Mi。
**fallback 和 url-test 有什么区别?**fallback 按你写的顺序用第一个能连上的,适合“主力 + 备用”;url-test 挑延迟最低的,会在两个节点之间来回换。
**一定要放在面板里吗?在客户端里自己写行不行?**也行,但面板里写一次,所有用户的订阅都带上,换手机、换电脑不用再配。
资料来源
核对日期均为 2026 年 10 月 15 日。
- 3x-ui 文档:入站(支持的协议,Hysteria2 选 hysteria)
- 3x-ui 文档:订阅
- 3x-ui v3.10.2 源码
internal/sub/clash_service.go:默认只有一个 PROXY 选择组;路由框里写 YAML 时,proxy-groups会整个替换默认组,rules合并在MATCH,PROXY前面 - mihomo 文档:代理组
- 测试服务器 3x-ui v3.10.2 实机截图;Mac 上 Clash Verge Rev 2.5.8(mihomo v1.19.32)实测输出
