我们的需求是由SNAT和DNAT合作完成的。简而言之就是我们的客户机上将服务器设置为我们的跳板机,则数据包发送到跳板机上,然后修改源IP和目标IP地址,重新转发给后面真实的目标服务器上,以此完成整个流量转发过程。
1、开启IP_FORWARD
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p
2、使用 IPTABLES,转发TCP、UDP流量
iptables -t nat -A PREROUTING -p tcp --dport 12XXX -j DNAT --to-destination 100.XX.XX.XX:12XXX
iptables -t nat -A POSTROUTING -p tcp -d 100.XX.XX.XX --dport 12XXX -j SNAT --to-source 139.XX.XX.XX
iptables -t nat -A PREROUTING -p udp --dport 12XXX -j DNAT --to-destination 100.XX.XX.XX:12XXX
iptables -t nat -A POSTROUTING -p udp -d 100.XX.XX.XX --dport 12XXX -j SNAT --to-source 139.XX.XX.XX
其中 100.XX.XX.XX:12XXX 是目标服务器的 IP 与 端口,139.XX.XX.XX 是阿里云ECS的公网 IP(若 ECS 为专用网络,则填写内网IP)。
3、保存 IPTABLES
#这里使用 iptables-persistent 保存iptables配置,也可以使用其他方法保存
apt-get install iptables-persistent
netfilter-persistent save
将代理程序客户端的 IP 改为阿里云 ECS 的公网 IP,建立连接,代理程序流量就会通过阿里云中转。
需要注意的是,并非所有机房都支持转发,各个机房网络环境也不同,具体操作过程中需要根据实际情况,找到合适的线路。