在上篇文章中我们介绍了iptables主要的链INPUT,这次我们主要介绍PREROUTING  POSTROUTING这两个链主要用于实现nat功能


nat:相信学网络的人对这个应该很熟悉,网络地址转换,一般用于局域网共享上网或者特殊的端口转换服务

PREROUTING:在数据包到达防火墙时进行路由之前执行的规则,作用是改变数据包的目的地址,目的端口

PSOTROUTING:在数据包离开防火墙进行路由判断之后执行的规则,作用是改变数据包的原地址 源端口


1、部署企业上网网关实战,实验环境如下,确保iptables防火墙自身能上外网


wKiom1enLEWDxBEZAAAhH5O4Ohw378.png


wKioL1enLVPC7dJpAAFiuMfCwdo682.png


wKioL1enLVTRXRhSAADPNeUJaNg497.png

net.ipv4.ip_forward = 1   开启转发功能
[root@iptables ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@iptables ~]#  iptables -P FORWARD ACCEPT 开启FORWARD转发

方法1
[root@iptables ~]#  iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -o eth0 -j SNAT  --to-source 172.16.80.125      
将源地址 172.16.10.0/24网段的地址改成172.16.80.125  即iptables的外网卡地址

方法2  适用于没有固定ip
[root@iptables ~]#  iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -o eth0 -j MASQUERADE   
在内网服务器上面在测试访问外网情况


wKiom1enLu3z73aIAAGNzH_fkzI049.png


可以看到内网服务器此时已经可以访问外网了


2、服务器映射

没有做映射前

wKiom1enMkjgntMUAAIigZtypNc388.png



wKiom1enMmXhwLoHAAGyZXuMdc0751.png



做映射规则,并抓包 [root@iptables ~]# tcpdump -i any  port 80 -s0 -n -vvv -w httpd.cap
[root@iptables ~]# iptables -t nat -A PREROUTING -d 172.16.80.125 -p tcp --dport 80 -j DNAT --to-destination 172.16.10.102:80

映射后,在此做访问测试



wKioL1enNQewr4EMAAI553lwCMc997.png


大家仔细观察这个报文,完全符合我们设置的转发规则


wKiom1enNTLBVlUaAATV7vmwiWQ862.png


下次我们再解释企业部署iptables防火墙的实际流程及注意事项