iptables-地址转换【DNAT/SNAT】
1、什么是NAT
网络地址转换 (NAT) ,意思也比较清楚:对(数据包的)网络地址 (IP +Port) 进行转换。 例如,机器自己的 IP 10.1.1.2 是能与外部正常通信的,但 192.168 网段是私有IP 段,无法与外界通信,因此当源地址为 192.168 网段的包要出去时,机器会 先将源 IP 换成机器自己的 10.1.1.2 再发送出去;收到应答包时,再进行相反的转换。这就是 NAT 的基本过程。
2、NAT的几种模式
SNAT :源地址转换
DNAT :目标地址转换
PNAT :端口转换
3、NAT环境搭建图
4、SNAT-示例
4.1、需求
实现内网主机通过防火墙进行上网,需要使用SNAT(源地址转换POSTROUTING) 172.16.1.7 --> 172.16.1.200 -- POSTROUTING --> 10.0.0.200 --> baidu.com
4.2、将172.16.1.7的网关指向172.16.1.200
# web02 echo "GATEWAY=172.16.1.200" >> /etc/sysconfig/network-scripts/ifcfg-eth1 ifdown eth1 && ifup eth1
4.3、开启iptables防火墙的forward转发
# iptables-server echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
4.4、配置iptables的SNAT转发规则
4.4.1、指定从哪个ip地址转换出去(静态公网地址)
iptables -t nat -I POSTROUTING -s 172.16.1.0/24 -j SNAT --to 10.0.0.200 iptables -t nat -L -n
4.4.2、当外网源地址为动态获取的地址时,MASQUERADE可自行判断要转换为的外网地址
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
5、DNAT-示例
5.1、需求
实现外网主机通过防火墙访问内部主机80端口,需要通过DNAT(目标地址转换PREROUTING)
5.2、端口映射【DNAT】
iptables -t nat -I PREROUTING -d 10.0.0.200 -p tcp --dport 80 -j DNAT --to 172.16.1.7:80 iptables -t nat -L -n
5.3、地址映射【DNAT】
iptables -t nat -I PREROUTING -d 10.0.0.200 -j DNAT --to 172.16.1.7