SNAT+DNAT 策略简介:

·SNAT(源地址转换):是Linux防火墙的一种地址转换操作,也是iptables命令中的一种数据包控制类型,其作用是根据指定调教修改数据包的源IP地址

内部地址要访问公网上的服务时(web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部

·SNAT策略只能用在nat表的POSTROUTING链,使用iptables命令编写SNAT策略时,需要结合‘--to-source IP’选项来指定修改后的源IP地址

 

·DNAT(目标地址址转换):是Linux防火墙的另一种地址转换操作,同样也是iptables命令中的数据包控制类型,其作用是—根据指定条件修改数据包的目标IP地址和目标端口

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

·DNAT策略只能用在nat表的PREROUTING链,使用使用iptables命令编写DNAT策略时,需要结合--to-destination IP地址’选项来指定内部服务器的IP地址

 

SNAT+DNAT注意事项:

·SNAT策略只能用在nat表的POSTROUTING链;

·SNAT将内部地址的私有IP转换为公网的公有IP

·SNAT用于内部共享IP访问外部

·DNAT策略只能用在nat表的PREROUTING;

·DNAT主要用于内部服务对外发布

 

SNAT+DNAT实现前准备:

IP tables防火墙:SNAT策略、DNAT策略_防火墙系统        其他

IP 地址

用途

Win 7

192.168.100.40

充当内网web服务器

Linux  

 

CentOS7

ens33192.168.100.1

 

ens3612.0.0.1

充当防火墙

ens33:当作内网网关

ens36:当作外网网关

Linux RedHat6

12.0.0.12

充当外网服务器(httpd

 

SNAT+DNAT策略开始

·因为LinuxCentOS7)作为防火墙网关,需要添加一块网卡,并对其进行IP配置!以上表格已注明IP地址和作用

IP tables防火墙:SNAT策略、DNAT策略_IP_02

·win7作为内网服务器,了为之后的验证,为它建立一个网站服务,可以让外网访问此网站:

IP tables防火墙:SNAT策略、DNAT策略_IP_03

·LinuxRedHat6)作为外网服务器,同样也安装httpd服务。并且修改IP地址为:12.0.0.12  网关为:12.0.0.1

执行以下命令:

yum install httpd -y //安装httpd服务

service httpd start //启动httpd服务

service iptables stop //关闭防火墙

setenforce 0 //关闭selinux

 

·LinuxCentOS7)从当防火墙,把iptables的所有规则删除包括nat表里的规则:

IP tables防火墙:SNAT策略、DNAT策略_IP_04

·对于Linux服务器,IP转发是实现路由功能的关键所在,若要Linux主机作为网关设备,就必须开启路由功能,修改配置文件:vim /etc/sysctl.conf

在执行命令:sysctl -p  //读取修改后的配置

IP tables防火墙:SNAT策略、DNAT策略_ tables_05


·内网win7需要访问外网RedHat6httpd服务,那么就需要做SNAT策略,由下图说明命令所代表含义:

IP tables防火墙:SNAT策略、DNAT策略_IP_06

·现在外网RedHat6需要访问内网win7web服务,那么就需要做DNAT策略,由下图说明命令所代表含义:

IP tables防火墙:SNAT策略、DNAT策略_防火墙_07

验证:

内网访问外网:

IP tables防火墙:SNAT策略、DNAT策略_IP_08

查看httpd的日志文件,可以看到是哪个IP 访问httpd

IP tables防火墙:SNAT策略、DNAT策略_IP_09

实验成功。

 

总结:

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

·注意内网和外网的网卡名称,在配置时不要混淆

·DNAT策略只能用在nat表的PREROUTING

·SNAT策略只能用在nat表的POSTROUTING