目录
前言
在实际生产应用中,防火墙的功能纷繁复杂,就像我们之前介绍的四表五链,以及数据包的流向,在实际应用中都是有着关键性的作用的。今天要介绍的SNAT和DNAT就是构建防火墙规则中几个个重要应用。
一、SNAT原理与应用
1、SNAT应用环境
局域网主机共享单个公网IP地址接入Internet(私有IP不能在Internet中正常路由)。
2、SNAT原理
修改数据包的源地址(源地址转换)。
3、SNAT转换前提条件
局域网各主机已正确设置IP地址、子网掩码、默认网关地址;
Linux网关开启IP路由转发 ;
4、NAT配置设置
临时打开:
echo 1 > /proc/sys/net/ipv4/ip_forward
或sysctl -w net.ipv4.ip_forward=1
永久打开:
vim /etc/sysctl.conf #进入配置文件路径
net.ipv4.ip_forward = 1 #将此行写入配置文件
sysctl -p #读取修改后的配置
5、SNAT转换
5.1 固定的公网IP地址
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to 12.0.0.1
或 可换成单独IP 出站外网网卡 外网IP
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10 内网IP 出站 外网网卡 外网IP或地址池
5.2 非固定的公网IP地址(共享动态IP地址)
iptables -t nat -A POSTROUTING -S 192.168.80.0/24-0 ens33 -j MASQUERADE
小知识扩展:一个IP地址做SNAT转换,一般可以让内网100到200台主机实现上网。
二、DNAT原理与应用
1、DNAT应用环境
在 Internet中发布位于局域网内的服务器
2、DNAT原理
修改数据包的目的地址。
3、DNAT转换前提条件
-
局域网的服务器能够访问 Internet
-
网关的外网地址有正确的Ds解析记录
-
Linux网关开启路由转发
-
vim /etc/sysctl. conf
-
net. ipv4. ip forward
-
sysctl -p #读取修改后的配置
4、DNAT转换
4.1 发布内网的Web服务
#把从ens33进来的要访问web服务的数据包目的地址转换为192.168.108.25
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.108.25
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.108.25
入站 外网网卡 外网IP 内网服务器IP
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 192.168.108.20-192.168.108.100
4.2 发布时修改目标端口
#发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.108.25:22
#在外网环境中使用ssH测试
ssh -p 250 root@12.0.0.1
yum -y install net-tools
#若没有ifconfig命令可提前使用yum进行安装
ifconfig ens33
注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回
小知识扩展:
主机型防火墙 主要使用 INPUT、OUTPUT 链,设置规则时一般要详细的指定到端口
网络型防火墙 主要使用 FORWARD 链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可
三、实验
实验环境 :
准备三台 centos 7
shuai01作为内网客户机IP:192.168.138.10
shuai02作为中间防火墙双网卡IP:192.168.138.1
IP:12.0.0.1
shuai03作为外网服务器IP:12.0.0.12