iptables中的snat与dnat配置技术文档


首先需要弄清楚snat与dnat的区别:
从定义来讲它们一个是源地址转换(snat),一个是目的地址转换(dnat)。都是地址转换的功能,将私有地址转换为公网地址。

要区分这两个功能可以简单的由连接发起者是谁来区分:

  • SNAT:内部地址要访问公网上的服务时(如web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。
  • DNAT:当内部需要提供对外服务时(如对外发布web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT,主要用于内部服务对外发布。

在配置防火墙或者路由acl策略时要注意这两个NAT一定不能混淆。

一、SNAT实验:

实验准备:
内部PC机(虚拟win10:192.168.200.100);网关服务器(centos7-2:ens-33:192.168.200.20与ens-36:12.0.0.1,注意需要提前再添加一张网卡ens-36,实现双网卡);外部web服务器(centos7-1:12.0.0.12)
在这里插入图片描述

操作步骤:
首先我们需要更改一下网关服务器中ens-36网卡的IP地址(这里我们可以将ens-33的网卡配置文件复制到ens-36中然后直接进行修改即可)
在这里插入图片描述
重启网卡后查看一下是否更改成功。
在这里插入图片描述

然后在网关服务器中重启iptables服务
在这里插入图片描述
然后将nat中的规则清除
在这里插入图片描述
在网关服务器中开启路由转发功能
在这里插入图片描述
使用sysctl -p 查看路由转发功能是否开启成功。
在这里插入图片描述

接下来准备web服务器,进入/etc/sysconfig/network-scripts/下更改ifcfg-ens33。更改IP地址与网关地址,并将DNS注释掉。
在这里插入图片描述
更改完网卡后会与xshell断开连接,那我们就直接在虚拟机中进行操作。
在7-1中检查一下网卡是否更改成功。
在这里插入图片描述
然后将firewalld防火墙关闭
在这里插入图片描述
接下来挂载磁盘后,安装httpd服务,并开启。
在这里插入图片描述
在这里插入图片描述
接下来在虚拟win10上测试一下是否可以连接上web。
不过在此之前需要先修改一下win10的网卡。
在这里插入图片描述
使用ping 命令检验是否可以连通网关服务器与web服务器
在这里插入图片描述
同样在虚拟win10中也可以连接上web服务器的网站
在这里插入图片描述
此时我们在web服务器中查看httpd的访问日志文件,发现是使用的客户机自己的IP进行访问的。
在这里插入图片描述

接下来就是进行SNAT的配置,将内部IP地址192.168.200.100更改为公网IP地址12.0.0.1后进行web的访问。

iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o ens36 -j SNAT --to 12.0.0.1
         指定nat表   指定链          内网IP网段       外网网卡  使用SNAT  转换的外网IP 

在这里插入图片描述
设置完以后在win10上再次访问wen服务器
在这里插入图片描述
再次查看web服务器的httpd日志,发现这次访问的网址是12.0.0.1了,说明SNAT设置成功。
在这里插入图片描述

二、DNAT实验

实验准备:
内网web服务器 7-1(192.168.200.11);网关服务器 7-2(ens33:192.168.200.20;ens36:12.0.0.1);外网客户端win10(12.0.0.0/24)
注意:配置DNAT,需要一起配置SNAT,因为web服务器返回数据的时候也是需要将IP地址转换之后进行回复的。
在这里插入图片描述
我们继续使用上面配置SNAT的虚拟机,所以首先需要将网关服务器上面的iptables规则清空。
在这里插入图片描述
然后重新确认一下是否开启了路由转发功能(=1即开启)
在这里插入图片描述

将web服务器(7-1)的网卡进行更改。
在这里插入图片描述
在这里插入图片描述
最好在web服务器上再重启一下httpd服务
在这里插入图片描述
在win10上更改一下网卡
在这里插入图片描述
然后就是进行DNAT和SNAT的配置了,其中DNAT配置命令为:

iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.200.11
                 使用PREROUTING链  指定入站端口ens36          指定端口号80

SNAT配置命令为:

iptables -t nat -A POSTROUTING -o ens36 -s 192.168.200.0/24 -j SNAT --to 12.0.0.1

在这里插入图片描述
接着查看一下规则是否配置成功
在这里插入图片描述
然后就可以在 win10 上访问12.0.0.1进行web访问了
在这里插入图片描述
而此时访问后在web服务器的日志中查看访问日志
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Gengchenchen/article/details/112132071
今日推荐