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地址和作用
![1533030873495549.png 图片1.png](https://i-blog.csdnimg.cn/blog_migrate/9c4a8976b23e679197a8c24c2b07f5aa.png)
·win7作为内网服务器,了为之后的验证,为它建立一个网站服务,可以让外网访问此网站:
![1533030892536247.png 图片2.png](https://i-blog.csdnimg.cn/blog_migrate/4db0abbc29eee542a9ee7465d0ae4650.png)
·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表里的规则:
![1533030914524505.png 图片3.png](https://i-blog.csdnimg.cn/blog_migrate/3fa5a744f45b53f1c95af179a5b9a487.png)
·对于Linux服务器,IP转发是实现路由功能的关键所在,若要Linux主机作为网关设备,就必须开启路由功能,修改配置文件:vim /etc/sysctl.conf
在执行命令:sysctl -p //读取修改后的配置
![1533030928349164.png 图片4.png](https://i-blog.csdnimg.cn/blog_migrate/0b87990e4e105c67126ffb129103d7e5.png)
·内网win7需要访问外网RedHat6的httpd服务,那么就需要做SNAT策略,由下图说明命令所代表含义:
![1533030986318927.png 图片6.png](https://i-blog.csdnimg.cn/blog_migrate/c539d3bcfae5aba0e5b9412da9b7394c.png)
·现在外网RedHat6需要访问内网win7的web服务,那么就需要做DNAT策略,由下图说明命令所代表含义:
![1533091469241282.png QQ截图20180801104050.png](https://i-blog.csdnimg.cn/blog_migrate/27ca306e372c053e1b29c46e8d67f1bf.png)
验证:
内网访问外网:
![1533031091607099.png 图片8.png](https://i-blog.csdnimg.cn/blog_migrate/ca7b565827879086e391b558446e54c7.png)
查看httpd的日志文件,可以看到是哪个IP 访问httpd:
![1533031110274628.png 图片9.png](https://i-blog.csdnimg.cn/blog_migrate/c096c4ff967c1f333f999dc38d3bb513.png)
实验成功。
总结:
·在配置防火墙或者路由acl策略时要注意这两个NAT一定不能混淆。
·注意内网和外网的网卡名称,在配置时不要混淆
·DNAT策略只能用在nat表的PREROUTING链
·SNAT策略只能用在nat表的POSTROUTING链