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 地址 | 用途 |
Win 7 | 192.168.100.40 | 充当内网web服务器 |
Linux
(CentOS7) | ens33:192.168.100.1
ens36:12.0.0.1 | 充当防火墙 ens33:当作内网网关 ens36:当作外网网关 |
Linux (RedHat6) | 12.0.0.12 | 充当外网服务器(httpd) |
SNAT+DNAT策略开始
·因为Linux(CentOS7)作为防火墙网关,需要添加一块网卡,并对其进行IP配置!以上表格已注明IP地址和作用
·win7作为内网服务器,了为之后的验证,为它建立一个网站服务,可以让外网访问此网站:
·Linux(RedHat6)作为外网服务器,同样也安装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
·Linux(CentOS7)从当防火墙,把iptables的所有规则删除包括nat表里的规则:
·对于Linux服务器,IP转发是实现路由功能的关键所在,若要Linux主机作为网关设备,就必须开启路由功能,修改配置文件:vim /etc/sysctl.conf
在执行命令:sysctl -p //读取修改后的配置
·内网win7需要访问外网RedHat6的httpd服务,那么就需要做SNAT策略,由下图说明命令所代表含义:
·现在外网RedHat6需要访问内网win7的web服务,那么就需要做DNAT策略,由下图说明命令所代表含义:
验证:内网访问外网:
查看httpd的日志文件,可以看到是哪个IP 访问httpd:
实验成功。
总结:
·在配置防火墙或者路由acl策略时要注意这两个NAT一定不能混淆。
·注意内网和外网的网卡名称,在配置时不要混淆
·DNAT策略只能用在nat表的PREROUTING链
·SNAT策略只能用在nat表的POSTROUTING链