通过防火墙nat表实现内外网的转发。扩展:通过两层转发实现跨网段、跨运营商代理等功能。
逻辑图:
实验环境:
client:外网ip:111.206.12.22
nat:
电信外网入口ip:180.149.157.167
电信内网出口ip:10.127.3.167
网通内网入口ip:10.127.132.24
网通外网出口ip:111.206.12.162
server:外网ip:119.167.157.154
实现效果:
电信client 去访问 电信外网入口的50011端口,经过nat转发最后数据包从网通外网出口发向 网通server外网的3733端口
数据包流向:
111.206.12.22 → 180.149.157.167:50011 → 10.127.3.167 → 10.127.132.24 → 111.206.12.162 → 119.167.157.154:3733
具体步骤:
step1:打开电信入口、网通出口 两台机器 的内核转发开关
修改配置文件
vim /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1 #0为关闭,1为打开sysctl -p #在线加载
查看打开状态
[root@BJ-132-10 sysconfig]# sysctl -a | grep ip_forwardnet.ipv4.ip_forward = 1
step2:电信入口服务器上:
#设置防火墙nat表
#将访问 180.149.157.167 的 50000:60000 端口范围的包转给目标ip:10.127.132.24
-A PREROUTING -d 180.149.157.167 -p tcp -m tcp -- dport 50000:60000 -j DNAT --to-destination 10.127.132.24
#将要发往10.127.132.24 的包 由此 10.127.3.167ip发出
-A POSTROUTING -d 10.127.132.24 -p tcp -m tcp --dport 50000:60000 -j SNAT --to-source 10.127.3.167
############################
#设置filter表
-A INPUT -p tcp -m tcp -dport 50000:60000 -j ACCEPT
-A OUTPUT -d 10.127.132.24 -p tcp -m tcp -j ACCEPT
加载防火墙,使之生效
iptables-restore < iptables
step3:网通出口服务器上:
#设置防火墙nat表
#将访问10.127.132.24:50011端口的包转发到 111.206.12.162:3733
-A PREROUTING -d 10.127.132.24 -p tcp -m tcp --dport 50011 -j DNAT --to-destination 119.167.157.154:3733
#将 发出的tcp包 都由 111.206.12.162 发出
-A POSTROUTING -p tcp -m tcp --dport 3700:3800 -j SNAT --to-source 111.206.12.162
############################
#设置filter
-A INPUT -s 10.127.3.167/32 -p tcp -m tcp -j ACCEPT
-A OUTPUT -d 119.167.0.0/16 -p tcp -m tcp -j ACCPET
加载防火墙,使之生效
iptables-restore < iptables
至此nat就实现了,可以测试一下