前言
Linux 防火墙在很多的时候承担着连接企业内、外网的重任,除了提供数据包过滤以外,还提供一些基本的网关应用。下面我们将了解防火墙中的SNAT 和DNAT策略。
一、SNAT策略及应用
1.1SNAT策略概述
SNAT 应用环境
局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由
SNAT原理
源地址转换(根据指定的条件修改数据包的源IP地址,通常被叫做源映射。)
修改数据包的源地址
客户端往网关服务器发数据包,通过网关服务器不进行转发,发送至需要访问的服务器,访问后,数据包回来的时候还是私网IP,原来的源IP作为目的IP进行传送,私网IP作为目的地址在互联网中会被丢弃,所以我们需要将IP进行转换,这样就能以公网IP的身份返回
SNAT转换前提条件
局域网各主机已正确设置IP地址、子网掩码
局域网各主机已正确设置默认网关地址
Linux网关开启IP路由转发
1.2开启SNAT的命令
1.2.1临时打开
echo 1 >/proc/sys/net/ipv4/ip_forward 或 sysctl -w net.ipv4.ip forward=1
1.2.2永久打开
vim /etc/ sysctl. conf net. ipv4.ip_ forward = 1 #将此行写入配置文件 sysctl -P #读取修改后的配置
1.3SNAT转换1:固定的公网IP地址
#配置SNAT策略,实现snat功能,将所有192.168.100.0这个网段的ip的源ip改为10.0.0.1 [root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to 10.0.0.1 可换成单独IP 出站外网网卡 外网IP 或 [root@localhost ~]#iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10 内网IP 出站外网网卡 外网IP或地址池
1.3.1命令名词解释
iptables 的作用是为包过滤机制的实现提供规则,通过各种不同的规则,告诉netfilter对来自某些源,前往某些目的或具有某些协议特征的数据包应该如何处理;为了更加方便的组织和管理防火墙规则,iptables采用了表和链的分层结构,所以它会对请求的数据包的包头数据进行分析,根据我们预先设定的规则进行匹配来决定是否可以进入主机;其中,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,在每个表容器内又包括不同的规则链,根据处理数据包的不同时机划分为五种链。
总结: 表里有链,链里有规则
1.3.2基本语法
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j控制类型]
其中:表名、链名用来指定iptables 命令操作的表和链,未指定表名时将默认使用filter 表
指定表:-t
四表中的nat表:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口
**-A:**在指定链的末尾追加(–append)一条新的规则
五链中的POSTROUTING:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网
五链中的PREROUTING:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上
通用匹配:可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。
协议匹配:-p协议名
地址匹配:-s源地址、-d目的地址
#可以是IP、网段、域名、空(任何地址)
接口匹配:-i入站网卡、-o出站网卡
控制类型:-j
SNAT :修改数据包的源地址
DNAT :修改数据包的目的地址
1.4SNAT转换2:非固定的公网IP地址(共享动态IP地址)
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
MASQUERADE:伪装成一个非固定公网IP地址。
二、SNAT实验
首先准备一台web服务器和一台win10的机器还有一台SNAT服务器
在操作前一定要先安装好所需程序httpd、iptables
2.1给两台服务器安装httpd以及iptables服务并启动
2.2打开虚拟网络编辑器,查看VMnet1和VMnet3的网段。设置ens33的网段为192.168.100.0,ens37的网段为10.0.0.0
2.3打开虚拟机,点击虚拟机设置,添加一张网卡ens37,网络适配器改成自定义(VMnet1),网络适配器2改成(VMnet3)
2.4修改两张网卡信息并重启
2.4.1修改内网网卡
注释掉网关地址(因为他本身就是网关),注释掉DNS1,网卡名也为ens33
2.4.2修改外网网卡
因为ens37网卡配置是复制ens33的,所以要把uuid给删掉防止冲突
2.4.3重启网卡查看是否设置成功(systemctl restart network)
2.5永久开启IP路由转发,开启SNAT
在etc/sysctl.conf中添加一条永久开启ip路由转发
第一台SNAT服务器准备工作结束
2.6 修改web服务器的网卡