8、Iptables地址转换
8.1、什么是NAT
网络地址转换(NAT),意思也比较清楚:对(数据包)的网络地址(IP + PORT)进行转换
例如,机器自己的IP10.1.1.2是能与外部正常通信的,但是192.168网段是私有IP段。无法与外界通信
因此当源地址为192.168网段的包要出去时,机器会先将源IP换成机器自己的10.1.1.2再发送出去:收到应答包时,再进行相反的转换,这就是NAT的基本过程
8.2、NAT的几种模式
SNAT:源地址转换
DNAT:目标地址转换
PNAT:端口转换
8.3、NAT环境搭建
1.准备iptables节点
eth0:10.0.0.200
eth1: 172.16.1.200
开启forward
cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.200
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5
cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.200
PREFIX=24
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
2.准备后端集群节点
eth1: 172.16.1.7 Gateway: 172.16.1.200
eth1: 172.16.1.8 Gateway: 172.16.1.200
cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.7
PREFIX=24
GATEWAY=172.16.1.200
DNS1=223.5.5.5
ifdown eth1 && ifup eth1
ifdown eth0
8.4、SNAT场景配置
实现内网主机通过防火墙访问公网,需要使用SNAT(源地址转换POSTROUTING)
1、指定从哪个ip地址转换出去(静态公网地址)
SNAT配置:必须使用nat表;
iptables -t nat -I POSTROUTING -s 172.16.1.0/24 -j SNAT --to 10.0.0.200
iptables -t nat -L
2、当外网源地址为动态获取的地址时,MASQUERADE可自行判断要转换为的外网地址
iptables -t nat -I POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
8.5、DNAT场景配置
实现外网主机通过防火墙访问内部主机80端口,需要通过DNAT(目标地址转换PREROUTING)
1、端口映射,将公网IP+PORT映射到私网的IP+PORT
DNAT配置(必须先实现SNAT):
iptables -t nat -I PREROUTING -d 10.0.0.200 -p tcp --dport 80 -j DNAT --to 172.16.1.7:80
2、地址映射,将公网地址映射到私网地址
iptables -t nat -I PREROUTING -d 10.0.0.200 -j DNAT --to 172.16.1.7