Linux iptables NAT配置
1.NAT原理总结
NAT: (Network Address Translation)支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链
请求报文: 修改源/目标IP,由定义如何修改
响应报文: 修改源/目标IP,根据跟踪机制自动实现
1.2 NAT的实现分为下面类型:
SNAT: source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问
外部网络,实现地址伪装,请求报文:修改源IP
DNAT: destination NAT 支持PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外
部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP
PNAT: port nat,端口和IP都进行修改
2.iptables规则持久保存
默认情况下iptables配置重启丢失,持久保持方法:
2.1Centos 6
配置文件保存在/etc/sysconfig/iptables中,使用以下命令进行保存
重启后自动加载配置
service iptables save
2.2 Centos7+
默认情况下,重启系统后不会自动加载,需要通过/etc/rc.loacl进行加载
iptables-save > /etc/iproute2/iptables.rule
echo "iptables-restore < /etc/iproute2/iptables.rule" >> /etc/rc.loacl
3. SNAT和DNAT配置语法
3.1 SNAT
语法格式:
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source ExtIP
示例:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! –d 10.0.0.0/24 -j SNAT --to-source 192.168.31.2
3.2 DNAT
语法格式:
iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --todestination InterSeverIP[:PORT]
示例:
iptables -t nat -A PREROUTING -d 192.168.31.2 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.7:8080