在安装了 Ubuntu 服务器 20.04 和 OpenVPN 的 VPS 上,我需要将所有流量从 vps 公共 IP 的特定端口转发到 VPN 客户端的同一端口。
VPS IP:
vps public ip: 1.1.1.1
vps vpn ip: 10.8.0.1
客户端 IP:
vpn client ip: 10.8.0.2
端口587的端口转发:
1.1.1.1:587 >> 10.8.0.2:587
我尝试在 VPS(1.1.1.1)上运行以下命令:
sudo iptables -t nat -A PREROUTING -p tcp --dport 587 -j DNAT --to-destination 10.8.0.2:587
sudo iptables -t nat -A POSTROUTING -p tcp -d 10.8.0.2 --dport 587 -j SNAT --to-source 1.1.1.1
但数据包没有转发到ip 10.8.0.2。
知道如何配置 iptables 才能实现正确的端口转发吗?
答案1
我发现这个解决方案可以按预期工作:
sudo sysctl net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -p tcp --dport 587 -j DNAT --to-destination 10.8.0.2:587
#exclude "lo" interface, otherwise dns service stop working
sudo iptables -t nat -A POSTROUTING ! -o lo -j MASQUERADE