使用iptables转发端口范围
如果需要将本地的 UDP 端口范围 20000-40000
转发到 1.1.1.1
的 UDP 端口范围 50000-60000
,只需在 iptables
规则中将协议改为 udp
。以下是设置步骤:
1. 确保启用 IP 转发
永久启用端口转发
nano /etc/sysctl.conf
复制
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
添加到 /etc/sysctl.conf
,
然后运行:
sysctl -p
2. 设置 iptables
端口转发规则(UDP)
(1)ipv4端口转发
使用以下 iptables
命令将 UDP 的端口范围 20000-40000
转发到 1.1.1.1
的 UDP 端口范围 50000-60000
:
iptables -t nat -A PREROUTING -p udp --dport 20000:40000 -j DNAT --to-destination 1.1.1.1:50000-60000
iptables -t nat -A POSTROUTING -p udp -d 1.1.1.1 --dport 50000:60000 -j MASQUERADE
(2)ipv6端口转发
将本地的 UDP 端口 20000-40000
转发到目标 IPv6 地址 2001:db8::1
的端口范围 50000-60000
。
sudo ip6tables -t nat -A PREROUTING -p udp --dport 20000:40000 -j DNAT --to-destination [2001:db8::1]:50000-60000
sudo ip6tables -t nat -A POSTROUTING -p udp -d 2001:db8::1 --dport 50000:60000 -j MASQUERADE
3. 规则说明
- PREROUTING 规则将本地接收到的 UDP 流量(目标端口范围
20000-40000
)转发到1.1.1.1
的50000-60000
端口范围。 - MASQUERADE 规则用于 NAT(网络地址转换),使得流量的返回路径正常。
4. 保存 iptables
规则
为了确保规则在重启后生效,保存 iptables
规则:
- 在 Debian/Ubuntu 系统中,可以使用
iptables-persistent
工具:
apt-get install iptables-persistent
netfilter-persistent save
完成以上步骤后,本地的 UDP 端口 20000-40000
会转发到 1.1.1.1
的 UDP 端口范围 50000-60000
。