banner
Geek

Geek

🧠在家居士 | 🥦素食者 | 🏃🏻马拉松爱好者 | 📡AI降临派 | 过🪜技术资深学者 | 🤖科技狂 | 📤更新狂🆅 https://www.igeekbb.com/
twitter
github

對抗QoS阻斷&限速 Hysteria2 端口跳躍設置

#2023年10月9日更新
- 增加IPV6設定

UDP 限速#

三大運營商對 UDP 的阻斷 & 限速肯定是存在的,至少有 QoS 限制,剛開始還以為南方聯通比較寬容,沒想都是一丘之貉,我遇見的是阻斷,具體表現為 “連續下載或跑大流量3分鐘左右,就直接阻斷,大概再過幾分鐘又恢復連接“,這些限制一般只是單個端口。本篇博文就來說說如何設置 Hysteria2 端口跳躍,以對抗運營商的阻斷和限速。


搭建 Hysteria 2#

關於 Hysteria2 節點的搭建,可以參考上一期《Hysteria2 & VLESS-gRPC-uTLS-REALITY 對比測試


配合 Iptables 實現端口跳躍#

按照 Hysteria 官網的說法,Hysteria 服務端並不能同時監聽多個端口,因此不能在服務器端使用上面的格式作為監聽地址。建議配合 iptables 的 DNAT 將端口轉發到服務器的監聽端口。 [來源]

下面就以我的 Hysteria 2 來演示:端口 5353 端口跳躍 20000-50000

安裝 iptables-persistent#

apt install iptables-persistent

一直 YES&ENTER

image

IPV4 設定#

清空默認規則 & 自定義規則#
iptables -F
iptables -X
允許本地訪問#
iptables -A INPUT -i lo -j ACCEPT
開放 SSH 端口 (默認 22)#
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
開放 HTTP / HTTPS 端口#
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
開放 UDP 端口(5353 替換為自己 Hysteria 的監聽端口)#
iptables -A INPUT -p udp --dport 5353 -j ACCEPT
開放 UDP 端口跳躍範圍(端口範圍為 20000-50000)#
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
添加 NAT 規則 [建議參考]#

將匹配到的 UDP 數據包的目標端口在 20000 到 50000 之間的數據包,重定向到本地服務器的 5353 端口

iptables -t nat -A PREROUTING -p udp --dport 20000:50000 -j DNAT --to-destination :5353
查看 NAT 規則#
iptables -t nat -nL --line

image

IPV6 設定#

清空默認規則 & 自定義規則#
ip6tables -F
ip6tables -X
允許本地訪問#
ip6tables -A INPUT -i lo -j ACCEPT
開放 SSH 端口 (默認 22)#
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
開放 HTTP / HTTPS 端口#
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
開放 UDP 端口(5353 替換為自己 Hysteria 的監聽端口)#
ip6tables -A INPUT -p udp --dport 5353 -j ACCEPT
開放 UDP 端口跳躍範圍(端口範圍為 20000-50000)#
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
添加 NAT 規則 [建議參考]#

將匹配到的 UDP 數據包的目標端口在 20000 到 50000 之間的數據包,重定向到本地服務器的 5353 端口

ip6tables -t nat -A PREROUTING -p udp --dport 20000:50000 -j DNAT --to-destination :5353
查看 NAT 規則#
ip6tables -t nat -nL --line

保存 iptables 規則#

netfilter-persistent save

如果你填寫錯誤,可以使用以下命令刪除 iptables 規則

刪除 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 客戶端的填法

image


以下是 Iptables 卸載步驟

卸載 Iptables#

1、停止 iptables 服務#

sudo systemctl stop iptables

2、禁用 iptables 服務#

sudo systemctl disable iptables

3、卸載 iptables 軟件包#

Debian 系統#
sudo apt-get remove iptables
CentOS 系統#
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

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。