#2023年10月9日更新
- 增加IPV6设置
三大运营商对UDP的阻断&限速肯定是存在的,至少有QoS限制,刚开始还以为南方联通比较宽容,没想都是一丘之貉,我遇见的是阻断,具体表现为“连续下载或跑大流量3分钟左右,就直接阻断,大概再过几分钟又恢复连接
“,这些限制一般只是单个端口。本篇博文就来说说如何设置 Hysteria2 端口跳跃,以对抗运营商的阻断和限速。
关于 Hysteria2 节点的搭建,可以参考上一期《Hysteria2 & VLESS-gRPC-uTLS-REALITY 对比测试》
按照 Hysteria 官网的说法,Hysteria 服务端并不能同时监听多个端口,因此不能在服务器端使用上面的格式作为监听地址。建议配合 iptables 的 DNAT 将端口转发到服务器的监听端口。 [来源]
下面就以我的 Hysteria 2 来演示:端口5353 端口跳跃20000-50000
apt install iptables-persistent
一直YES&ENTER
iptables -F
iptables -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p udp --dport 5353 -j ACCEPT
iptables -A INPUT -p udp --dport 20000:50000 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -L
将匹配到的UDP数据包的目标端口在20000到50000之间的数据包,重定向到本地服务器的5353端口
iptables -t nat -A PREROUTING -p udp --dport 20000:50000 -j DNAT --to-destination :5353
iptables -t nat -nL --line
ip6tables -F
ip6tables -X
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
ip6tables -A INPUT -p udp --dport 5353 -j ACCEPT
ip6tables -A INPUT -p udp --dport 20000:50000 -j ACCEPT
ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -P INPUT DROP
ip6tables -P OUTPUT ACCEPT
ip6tables -L
将匹配到的UDP数据包的目标端口在20000到50000之间的数据包,重定向到本地服务器的5353端口
ip6tables -t nat -A PREROUTING -p udp --dport 20000:50000 -j DNAT --to-destination :5353
ip6tables -t nat -nL --line
netfilter-persistent save
如果你填写错误,可以使用以下命令删除iptables规则
删除指定的NAT规则:
iptables -t nat -D PREROUTING <行号>
删除所有NAT规则:
iptables -t nat -F
# 删除所有规则
sudo ip6tables -F
# 删除 INPUT 链中的所有规则
sudo ip6tables -F INPUT
# 删除 INPUT 链中的第一个规则
sudo ip6tables -D INPUT 1
# 禁用 INPUT 链中的第一个规则
sudo ip6tables -I INPUT 1 -j DROP
cat << EOF > /etc/hysteria/config.yaml
listen: :5353 #监听端口
#使用CA证书
acme:
domains:
- www.igeekbb.com #你的域名,需要先解析到服务器ip
email: [email protected]
#使用自签证书
#tls:
# cert: /etc/hysteria/server.crt
# key: /etc/hysteria/server.key
auth:
type: password
password: 123456 #设置认证密码
masquerade:
type: proxy
proxy:
url: https://bing.com #伪装网址
rewriteHost: true
EOF
openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) -keyout /etc/hysteria/server.key -out /etc/hysteria/server.crt -subj "/CN=bing.com" -days 36500 && sudo chown hysteria /etc/hysteria/server.key && sudo chown hysteria /etc/hysteria/server.crt
cat << EOF > /etc/hysteria/config.yaml
listen: :5353 #监听端口
#使用CA证书
#acme:
# domains:
# - www.igeekbb.com #你的域名,需要先解析到服务器ip
# email: [email protected]
#使用自签证书
tls:
cert: /etc/hysteria/server.crt
key: /etc/hysteria/server.key
auth:
type: password
password: 123456 #设置认证密码
masquerade:
type: proxy
proxy:
url: https://bing.com #伪装网址
rewriteHost: true
EOF
这里展示PassWall客户端的填法
以下是Iptables卸载步骤
sudo systemctl stop iptables
sudo systemctl disable iptables
sudo apt-get remove iptables
sudo yum remove iptables
4、删除iptables配置文件&规则
sudo rm -r /etc/iptables/
sudo iptables -F
sudo iptables -X
资料参考: https://github.com/TinrLin/sing-box_-tutorial/tree/main/Hysteria2