UFW 防火墙配置端口转发实现 Hysteria 2 端口跳跃

status
Published
type
Post
slug
how-to-configure-ufw-port-forwarding-for-hysteria2-port-hopping
date
Oct 31, 2024
tags
Shell
Network
Linux
Config
summary
文章记录了 Hysteria 2 协议的简单配置,为了解决国内运营商对 UDP 连接的限制,文章介绍了端口跳跃的配置方法,涵盖了系统端口转发的开启、UFW 转发规则的配置和防火墙规则的设置。此外,还提供了故障排查建议和相关参考资源。

背景

早前曾简单体验过 Hysteria 2 协议
前段时间整理了个人的订阅服务,将 VPS 缩减了一下,成本倒是降了,但相对的体验也下滑了些——线路变差了。于是好好配置了下 Hysteria 2 协议,此处简要记录下。其实只是在原有的记录上扩充了些

Hysteria 2 服务端配置

服务端安装过程此处就不再赘述,如下为大致的配置
listen: :8443 tls: cert: /etc/ssl/cert.pem key: /etc/ssl/private.key auth: type: password password: your-hysteria2-password masquerade: type: proxy proxy: url: https://amazon.com/ rewriteHost: true disableUDP: false udpIdleTimeout: 60s quic: initStreamReceiveWindow: 8388608 maxStreamReceiveWindow: 8388608 initConnReceiveWindow: 20971520 maxConnReceiveWindow: 20971520 maxIdleTimeout: 30s maxIncomingStreams: 1024 disablePathMTUDiscovery: false # https://github.com/Loyalsoldier/v2ray-rules-dat acl: file: /etc/hysteria/acl.txt geoip: /etc/hysteria/geoip.dat geosite: /etc/hysteria/geosite.dat outbounds: - name: direct type: direct # Cloudflare Warp 的 SOCKS5 代理 - name: warp type: socks5 socks5: addr: 127.0.0.1:1234

端口跳跃

国内运营商部分地区存在阻断或限速 UDP 连接的行为。不过,这些限制往往仅限单个端口。端口跳跃可用作此情况的解决方法。

开启系统端口转发

首先需要修改系统配置以启用端口转发功能:
# 编辑 sysctl.conf 文件 sudo vim /etc/sysctl.conf # 添加或修改以下行,如已开启则跳过此步骤 net.ipv4.ip_forward=1 # 应用更改 sudo sysctl -p

配置 UFW 转发规则

编辑 UFW 的 before.rules 文件:
sudo vim /etc/ufw/before.rules
在文件开头的 *filter 部分之前添加以下内容:
*nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] # 端口转发规则 # 将入站流量从端口范围转发到指定端口 -A PREROUTING -p udp --dport 10000:10010 -j REDIRECT --to-port 8443 -A PREROUTING -p udp --dport 18443 -j REDIRECT --to-port 8443 # 确保流量可以正确路由 -A POSTROUTING -j MASQUERADE COMMIT

4. 配置防火墙规则

允许相关端口通过防火墙:
# 允许 Hysteria 2 主端口 sudo ufw allow 8443/udp # 允许端口跳跃范围 sudo ufw allow 10000:10010/udp sudo ufw allow 18443/udp

5. 重启 UFW 使配置生效

sudo ufw disable sudo ufw enable sudo ufw reload

验证配置

可以使用以下命令检查配置是否生效:
# 查看防火墙规则 sudo ufw status verbose # 查看端口转发规则 sudo iptables -t nat -L -n -v

Clash Meta Hysteria 2 配置示例

在 Clash Meta 的配置文件中,可以这样配置 Hysteria 2 协议端口跳跃:
- name: "Hysteria2" type: hysteria2 server: your.server.ip.addr port: 8443 ports: 18443,10000-10010 hop-interval: 30 password: your-hysteria2-password up: "100 Mbps" down: "100 Mbps" sni: amazon.com skip-cert-verify: true alpn: - h3

故障排查

如果配置后发现端口转发不生效,可以检查:
系统端口转发是否已启用:
cat /proc/sys/net/ipv4/ip_forward
UFW 规则是否正确加载:
sudo ufw status numbered
iptables 规则是否生效:
sudo iptables -t nat -L PREROUTING --line-numbers

注意事项

  1. 请确保端口范围不会与系统其他服务冲突
  1. 建议定期检查日志文件以监控转发状态
  1. 配置更改后必须重启 UFW 才能生效
  1. 建议在配置前备份相关配置文件
 

参考资源