3x-ui支持歇斯底里端口跳跃有段时间了,可是我的手机客户端hiddify支持的不太好,需要自己手动设置一下才可以使用,昨天终于在hiddify客户端成功实现端口跳跃,分享一下自己的经验。
如何在3x-ui面板设置歇斯底里2端口跳跃,网络上有不少经验分享,非常简单,我就不详细写了。
一,端口放行。
大家在3x-ui设置好歇斯底里2后,跳跃端口范围也需要放行,在宝塔面板里设置一下就行,记着放行的端口是udp模式。
二,通过iptables-persistent持久化端口转发规则(方法1)。
1,首先开启系统转发配置∶
在 /etc/sysctl.conf中添加以下代码∶
# 新增:開啟 IPv4 與 IPv6 數據包轉發
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
保存退出,在ssh端执行以下代码,刚配置的代码显示出来,说明配置成功∶
# 載入並使剛才的配置立刻生效
sudo sysctl -p
2,通过iptables-persistent工具持久化转发规则∶
我们需要把跳跃端口范围转发到一个端口上,所以需要在ssh客户端设置端口转发,如果不持久化端口转发规则,服务器一旦重启,转发规则就会消失,所以需要把端口转发规则持久化,每次重启服务器,转发规则就会自动加载,安装持久化工具方法如下∶
# Ubuntu / Debian 系统:
apt-get update
apt-get install -y iptables-persistent
# CentOS / Rocky Linux 系统:
yum install -y iptables-services
systemctl enable iptables
安装完持久化工具后,设置端口转发使用如下命令∶
# 1. 允许 IPv4 端口跳跃转发
iptables -t nat -A PREROUTING -p udp --dport 20000:50000 -j REDIRECT --to-ports 443
# 2. 允许 IPv6 端口跳跃转发(如果你的节点支持 IPv6)
ip6tables -t nat -A PREROUTING -p udp --dport 20000:50000 -j REDIRECT --to-ports 443
记得将上文的 20000:50000 和 443 替换为你面板上的实际数值。
如果修改了跳跃端口,记着运行 netfilter-persistent save 命令更新保存。
如何确定端口转发持久化成功?在ssh端执行一下命令, 如果有active,说明服务正常 ∶
systemctl status netfilter-persistent
三,hiddify客户端设置
我们在3x-ui导出节点数据到剪贴板,然后把数据导入到hiddify客户端,其中端口跳跃的数据并没有成功导入,我们手动设置,编辑节点数据,它有text和tree两种数据模式,我们选择text, 在 "server_port": *****,下方粘贴代码,最后保存数据。
"server_ports": "40000:50000",
记着把上面的40000和50000换成你自己的端口数据。
四,如何验证端口跳跃设置是否成功?
在ssh端执行命令,看 pkts 和 bytes 计数,我们可以浏览视频,执行几次命令,数据有变化,说明端口跳跃设置成功。
查询 IPv4 的转发规则:
iptables -t nat -L PREROUTING -nv --line-numbers
查询 IPv6 的转发规则:
ip6tables -t nat -L PREROUTING -nv --line-numbers
我自己在3x-ui面板设置节点时监听ipv6地址,大家根据自己的情况设置即可。
五,端口转发规则直接写入/etc/ufw/before6.rules(方法2)(推荐)
上面通过iptables-persistent持久化也可以设置端口转发规则,正常使用没有问题。但是重启服务器后,这个持久化工具和宝塔面板ufw会有一个被删除,两者有冲突,所以更明智的做法是把端口转发规则直接写入/etc/ufw/before6.rules ,服务器重启也不会消失,这种方法简单直接。
以我的转发端口规则为例,具体数据根据自己实际情况填写。
首页把以下代码加入before6.rules文件最上方,保存文件∶
# --- Hysteria 本機 IPv6 UDP 端口跳躍開始 ---
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# 將外網 20000-30000 的 UDP 跳躍流量,精準轉發給 Hysteria 實際監聽的公網 IPv6
-A PREROUTING -p udp --dport 20000:30000 -j DNAT --to-destination [你自己的ipv6地址]:55321
# 將外網 40000-50000 的 UDP 跳躍流量,精準轉發給 Hysteria 實際監聽的公網 IPv6
-A PREROUTING -p udp --dport 40000:50000 -j DNAT --to-destination [你自己的ipv6地址]:59713
COMMIT
# --- Hysteria 本機 IPv6 UDP 端口跳躍結束 ---
然后通过下面代码重载防火墙∶
sudo ufw reload
设置完毕,大家可以用上面步骤四的方法测试一下。