NAT可以方便的完成这种流量穿通功能,即把外网数据通过NAT(中转设备)来穿透进内网,内网数据通过NAT(中转设备)穿透出外网。
那linux下iptables如何实现nat转发?这里将以Debian7主机下的测试为例。
1、开启IP_FORWARD
1 2 3 | vi /etc/sysctl.conf #在文件末添加以下一行(如已有则不必添加,直接将注释解除即可) net.ipv4.ip_forward=1 |
2、使用IPTABLES,转发TCP、UDP流量
1 2 3 4 5 6 7 8 9 | #TCP iptables -t nat -A PREROUTING -p tcp --dport 映射地址 -j DNAT --to-destination 目标地址:目标端口 iptables -t nat -A POSTROUTING -p tcp -d 目标地址 --dport 目标端口 -j SNAT --to-source 映射地址 #UDP iptables -t nat -A PREROUTING -p udp --dport 映射地址 -j DNAT --to-destination 目标地址:目标端口 iptables -t nat -A POSTROUTING -p udp -d 目标地址 --dport 目标端口 -j SNAT --to-source 映射地址 #其中“目标地址:目标端口”是目标服务器的IP与端口,“映射地址”是本机的公网IP。 |
3、保存IPTABLES
1 2 | #这里使用 iptables-save 保存iptables配置,也可以使用其他方法保存。 iptables-save > /etc/iptables.up.rules |
需要注意的是,并非所有服务器环境都支持UDP转发,具体操作过程中需要根据实际情况。