前言:通过上一章的学习,我们认识了Linux防火墙的表、链结构,并学会了编写简单的防火墙规则,

Linux防火墙在很多时候承担着连接企业内、外网的重任,除了提供数据包过滤功能以外,还提供一些

基本的网关应用。

    并使用NAT功能共享上网以及发布服务器,和以前学过的nat原理完全一样,本章学习SNAT和DNAT策略,

分别掌握两个典型的应用:局域网共享一个公网IP地址接入inter;向inter发布位于内网的应用服务器。

 

一、SNAT策略

SNAT和路由器上的PAT是一样的,源地址转换,其作用是根据指定条件修改数据包的源IP地址。

共享固定IP地址上网

1、实验环境:


iptables防火墙(二)_第1张图片

在虚拟机上做实验简化为下图:

截图00.png

2、在网站服务器上搭建网站

网站http服务已搭好,详情请参考https://blog.51cto.com/13557682/2056366

网站服务器如图:

iptables防火墙(二)_第2张图片

internet测试机上搭建同样的网站如图:

iptables防火墙(二)_第3张图片

3、在网关服务器上添加两块网卡,分别是eth0:192.168.1.1eth1173.16.16.1,然后开启路由转发功能:

[root@localhost ~]# vim /etc/sysctl.conf 
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 1              //将0修改为1,启动路由转发功能                    
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

5、在网关服务器上配置SNAT策略

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to-source 173.16.16.1

6、在内部网站服务器上访问http://173.16.16.16即可


二、DNAT策略

DNAT策略与我们之前学习过的静态nat是一样的,可以一对一,也可以端口映射,主要目的是为了发布服务器。

[root@localhost ~]# iptables -t nat -I PREROUTING -i eth1 -d 173.16.16.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.7

3、在internet测试机上访问:http://173.16.16.1,打开的网站是192.168.1.7

四、规则的导入、导出

前言:备份可以把配置过的防火墙规则存储到一个位置,当更换防火墙或者规则出错的情况下,可以迅速恢复。

1、执行iptables-save命令导出linux防火墙规则。

例如:

1)在网站服务器上查看防火墙规则

[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

  

2)执行备份防火墙

[root@localhost ~]# iptables-save > /opt/iprules_all.txt

3)把网站服务器上的规则全部删除

[root@localhost ~]# iptables -F

4)执行iptables-resore命令恢复

[root@localhost ~]# iptables-restore < /opt/iprules_all.txt

五、使用防火墙脚本

使用脚本可以快速部署防火墙规则,当需要配置多台防火墙的时候,使用脚本可以快速生成规则,提高工作效率。

例如:将output链中的默认策略设置为允许,不添加其他规则,将input链的默认策略设置为拒绝,只放行对个别服务的访问,以及响应本机访问请求的数据包。

[root@localhost ~]# vim /opt/myipfw.hostonly

iptables防火墙(二)_第4张图片

2)执行脚本

iptables防火墙(二)_第5张图片

3)查看规则

iptables防火墙(二)_第6张图片

现在基本上用不着Linux做路由转发,路由器做路由转发比较专业