16
1
1

3X-UI + Hysteria2 端口跳跃 + Clash 订阅 + BBRv3 完整部署教程

文章摘要
|
3X-UI · HYSTERIA2 · CLASH / MIHOMO · BBRv3
3X-UI + Hysteria2 端口跳跃 + Clash 订阅 + BBRv3 完整部署教程

最终效果:在一台 Debian / Ubuntu VPS 上完成 3X-UI 管理面板、Clash/Mihomo 订阅、Hysteria2 UDP 端口跳跃,并按需安装 BBRv3 TCP 内核。每一步都包含命令、预期结果、验证方法和常见错误。

3X-UI v3.xHysteria2Clash / MihomoUDP Port HoppingBBRv3
先记住一个关键结论

Linux 内核的 TCP BBRv3 只作用于 TCP 拥塞控制;Hysteria2 使用 QUIC/UDP,因此 BBRv3 不会直接“加速 Hysteria2”。本文把它们放在一起,是因为一台 VPS 往往同时承载 TCP 与 UDP 服务:Hysteria2 的稳定性优化主要来自 UDP/QUIC 与端口跳跃,BBRv3 则用于 TCP 业务。

先看最终链路,避免把端口跳跃和 BBR 混在一起

Clash / Mihomo订阅或手动配置
UDP 20000-50000客户端随机选择 / 跳跃
iptables / nftables统一重定向
3X-UI Hysteria2示例端口 12448/UDP
Hysteria2 路径QUIC / UDP → 端口跳跃
Linux TCP 路径TCP → BBRv3 / FQ

准备 VPS 与系统环境

目标确认系统、架构、端口和救援条件满足后再安装。
项目建议
系统如果计划安装本文 BBRv3 脚本,建议 Ubuntu 24.04+ 或 Debian 12+
权限root 或可 sudo 的管理员
网络公网 IPv4/IPv6 均可;Hysteria2 需要 UDP 可达
救援能力安装第三方内核前确认 VPS 控制台、救援模式或旧内核启动项可用
bash · 基础检查
cat /etc/os-release
uname -m
uname -r

ss -lntup
iptables --version 2>/dev/null || true
nft --version 2>/dev/null || true
完成标准系统版本和架构确认无误,并知道哪些 TCP/UDP 端口已经被占用。

安装 3X-UI,并记录随机登录信息

目标使用官方脚本安装稳定版 3X-UI,并先确认面板本身能工作。
bash · 3X-UI 官方安装脚本
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

当前官方安装器会生成随机用户名、密码和 Web Base Path。安装完成后不要急着创建节点,先保存终端打印出的登录信息。

bash · 打开管理菜单
x-ui
3X-UI 官方 Overview 界面
3X-UI 官方 Overview 界面。安装后先确认服务、Xray-core 和基础状态正常。
不要长期裸露管理面板

保留随机 Web Base Path,并优先给面板配置 TLS 或反向代理。不要把默认/简单路径和弱密码暴露在公网。

开启订阅,并启用 Clash / Mihomo 输出

目标让客户端以后只维护一个订阅 URL,不必逐个复制节点。

进入 Settings → Subscription。3X-UI 的订阅服务独立于面板服务,官方当前支持原始链接、Xray JSON 和 Clash/Mihomo YAML 三种主要输出。

配置用途
subEnable开启订阅服务
subClashEnable开启 Clash / Mihomo YAML 输出
subPort订阅服务器监听端口;不同版本文档示例可能不同,直接以你当前面板显示值为准
subPath原始订阅路径
subClashPathClash / Mihomo 路径
推荐

订阅内容包含完整连接参数,建议给订阅服务器配置 HTTPS 或放到可信反向代理后面,不要长期使用明文 HTTP。

预期结果客户端详情页可以复制订阅链接,并能看到 Clash/Mihomo 对应入口。

创建 Hysteria2 入站,先只使用一个 UDP 端口

目标先让 Hysteria2 在单端口模式下可用,再叠加端口跳跃,便于排错。

Inbounds → Add Inbound 中选择 Hysteria2。本文继续沿用原教程的示例端口 12448/UDP,你也可以换成自己的未占用 UDP 端口。

项目示例
协议Hysteria2
监听端口12448
传输UDP / QUIC
TLS / SNI按你的证书与域名配置
bash · 检查 UDP 监听
ss -lunp | grep ':12448'
完成标准先用单端口配置成功连接。单端口都不通时,不要直接开始配置 20000-50000 端口范围。

给 Hysteria2 配置 UDP 端口跳跃

目标让客户端可以连接 20000-50000/UDP 中的任意端口,服务器统一重定向到 Hysteria2 的真实监听端口 12448

原教程使用 iptables REDIRECT,这种方式适合 3X-UI / Xray 仍然只监听单个 UDP 端口的场景。

bash · IPv4 端口范围重定向
iptables -t nat -I PREROUTING 1 \
  -p udp --dport 20000:50000 \
  -j REDIRECT --to-ports 12448
三个数字必须对应

20000:50000 是对外跳跃端口范围;12448 是 3X-UI 里 Hysteria2 入站的真实端口。改了其中一个,另外的配置也必须同步。

bash · 验证 NAT 规则
iptables -t nat -L PREROUTING -n -v --line-numbers
预期结果PREROUTING 中出现 UDP 20000:5000012448 的 REDIRECT 规则。

保存防火墙规则,避免服务器重启后失效

目标持久化刚才的端口跳跃 NAT 规则。
bash · Debian / Ubuntu
apt update
apt install -y iptables iptables-persistent

netfilter-persistent save

如果你还没有创建跳跃规则,可以完整执行:

bash · 完整配置
apt update
apt install -y iptables iptables-persistent

iptables -t nat -A PREROUTING \
  -p udp --dport 20000:50000 \
  -j REDIRECT --to-ports 12448

netfilter-persistent save
云厂商安全组也要放行 UDP

系统 iptables 配好了,不代表云平台外层防火墙已经放行。请同时检查安全组 / Firewall 是否允许你实际使用的 UDP 范围。

客户端使用端口范围,并理解跳跃间隔

目标让客户端不再固定连接单一 UDP 端口。

Hysteria2 官方支持在客户端地址中直接使用端口范围,例如:

yaml · Hysteria2 客户端概念示例
server: example.com:20000-50000
transport:
  type: udp
  udp:
    hopInterval: 30s

官方当前还支持随机跳跃间隔:

yaml · 随机跳跃间隔
transport:
  type: udp
  udp:
    minHopInterval: 15s
    maxHopInterval: 45s
订阅兼容性

并不是所有 share link / URI 格式都能无损表达端口范围。若 Clash/Mihomo 订阅生成的配置仍然是单端口,请按客户端能力手动改为端口范围,不要假设所有客户端都会自动识别。

验证 Hysteria2 端口跳跃真的在工作

目标不是“规则存在”就算完成,而是确认计数器和客户端连接都在变化。
bash · 观察 NAT 命中计数
watch -n 2 "iptables -t nat -L PREROUTING -n -v --line-numbers"

然后让客户端使用 example.com:20000-50000 连接。正常情况下,对应 REDIRECT 规则的 packet / byte 计数会增长。

完成标准客户端能够持续使用,NAT 规则计数增长,Hysteria2 单端口 12448/UDP 仍保持监听。

安装 BBRv3 前先检查当前 TCP 状态

目标记录当前内核和拥塞控制状态,方便升级后对比与回滚。
bash · 升级前记录
uname -r
sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
modinfo tcp_bbr 2>/dev/null | grep '^version:' || true
BBRv3 脚本不是 Linux 官方包管理器的一部分

本文沿用原教程使用的 byJoey/Actions-bbr-v3。它会安装第三方构建的 Linux 内核包,因此必须先确认 VPS 提供商有控制台 / Rescue / 旧内核回退方式。

运行 BBRv3 管理脚本并重启

目标安装标准 BBRv3 内核,并在重启后启用 BBR + 合适的队列算法。
bash · 原教程采用的 BBRv3 脚本
bash <(curl -fsSL https://raw.githubusercontent.com/byJoey/Actions-bbr-v3/main/install.sh)

日常使用建议优先选择脚本菜单中的标准 BBRv3,不要一上来就选 Max / 极限测速类模式。安装新内核后按提示重启:

bash · 重启
reboot
不要远程升级完直接关掉 VPS 控制台

先确认新内核能正常启动、SSH 可以重新连接,再继续网络调优。

重启后验证 BBRv3,而不是只看脚本提示

目标用系统命令确认当前运行内核、拥塞控制和队列算法。
bash · 状态检查
uname -r
sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
modinfo tcp_bbr 2>/dev/null | grep '^version:'
检查项正常方向
tcp_congestion_controlbbr
default_qdisc通常使用 fq,也可按脚本选择其它队列
tcp_bbr version脚本应能识别为 BBR v3
再次强调

这一步验证的是 TCP。Hysteria2 是 QUIC/UDP,它的实际状态请看前面的 UDP 监听、NAT 命中和客户端连接。

最终验收:把 3X-UI、订阅、UDP 跳跃和 TCP 分开检查

  • 3X-UI 服务正常,管理面板可以登录。
  • Subscription 已启用,Clash/Mihomo 输出可以生成。
  • Hysteria2 单端口入站可以正常连接。
  • UDP 20000-50000 已重定向到真实节点端口。
  • iptables -t nat -L PREROUTING -n -v 能看到规则命中。
  • 防火墙规则已持久化,重启后仍存在。
  • BBRv3 安装后服务器可以正常重启并恢复 SSH。
  • TCP 拥塞控制显示为 bbr,队列算法符合你的选择。

故障排查:按现象定位,不要反复重装

现象常见原因检查 / 修复
3X-UI 安装后打不开端口未放行、Web Base Path 填错运行 x-ui 查看当前登录信息和端口
Hysteria2 单端口都不通UDP 被安全组拦截、证书/SNI 错误先停用端口跳跃,只排查真实入站端口
20000-50000 没有命中iptables 规则未生效或云防火墙未放行检查 PREROUTING 计数器与安全组 UDP 范围
重启后跳跃失效NAT 规则未持久化重新运行 netfilter-persistent save
Clash 订阅没有 Hysteria2入站未启用、订阅格式/排序设置问题检查 Subscription 设置和客户端 Sub ID
安装 BBRv3 后 SSH 不回来第三方内核启动失败使用 VPS 控制台/救援模式启动旧内核并回滚
BBR 已启用但 Hysteria2 没明显变化误把 TCP BBR 当成 UDP 加速Hysteria2 应通过 QUIC/UDP 参数、网络质量和端口跳跃单独评估

这套组合真正解决的是什么?

3X-UI 负责管理与订阅;Hysteria2 负责 QUIC/UDP 链路;端口跳跃用于在多个 UDP 端口之间切换;BBRv3 则属于 Linux TCP 栈优化。把四者的职责分开理解,才不会出现“装了 BBR 就以为 UDP 一定变快”的误区。

3X-UI 官方:MHSanaei/3x-ui · Hysteria2 官方:v2.hysteria.network · BBRv3 脚本:byJoey/Actions-bbr-v3(第三方)

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

3X-UI + Hysteria2 端口跳跃 + Clash 订阅 + BBRv3 完整部署教程
/archives/3xui-hysteria2-port-hopping-bbrv3
作者
X
发布于
2026-08-31
许可协议
CC BY-NC-SA 4.0

评论

欢迎来到我的博客!