iptables之二:nat安全架构

一、 实验说明

   1、通过DNS服务器实现内、外网IP智能解析

       1)内网用户访问Apache服务器时,解析为其内网IP

       2)外网用户访问Apache服务器时,解析为Fairwall的外网地址

       3)Fairwall的外网IP:1.1.1.1/8

       4)Apache服务器的内网IP:172.16.251.93/16

   2、网站域名

       www.shuishui.com

        内网IP:172.16.251.93

       外网IP:1.1.1.1/8

   3、网络安全规划

       1)为了安全,服务器使用内网IP,但允许外网用户通过防火墙访问

       2)外网用户访问web服务器时,解析为防火墙的外网IP

   4、实验平台环境

      1)一台Apache服务器

      2)一台cgi服务器

      3)一台mysql服务器

      4)DNS服务器部署到Apache服务器上

   5、操作系统使用

      共使用3台CentOS6.4,一台CentOS6.5

      内网中的服务器全部采用CentOS6.4,外网中的用户作用CentOS6.5

   6、IP分配

      将在下面的拓扑图上直观的标出

   7、关于网卡模式

       1)内网的网卡都在桥接模式

       2)防火墙的外网网卡及外网主机的网卡在VMnet5中

   8、本实验关联博文:

     1)《LAMP之一:apache、mysql、php的安装及互联互通》

         http://nmshuishui.blog.51cto.com/1850554/1381822

     2)《DNS服务器系列之一:DNS服务原理、安装及主从配置》

         http://nmshuishui.blog.51cto.com/1850554/1378368

     3) 《DNS服务器系列之二:高级配置之-DNS子域授权、区域转发、acl列表及view》

         http://nmshuishui.blog.51cto.com/1850554/1379440

     4)《iptables原理及语法》

         http://nmshuishui.blog.51cto.com/1850554/1384802

   9、关于DNS

      DNS服务器的搭建及智能DNS解析的view功能,详情请参考第6条中的博文,这里将只做简单说明

   10、关于网络环境

      这里只搭建了一个内部网络环境,模拟一个公司的整个网络架构,对于外部的网络没再搭建,原理和方法都是一样的,在实验的时候,为了方便,只使用了一台电脑做为外网的用户,使用公网IP

二、网络拓扑

wKiom1M1ozSCb1iQAADwRGETKJU476.png

三、本次实验所用简单网络拓扑

   为了实验方便,对于互联网中的用户,没有再为其搭建一个网络,而是直接使用一个公网IP来模拟一个互联网用户,原来是一样的,所以这里就不再搭建第二个网络了。

wKioL1M1o2DgQEeNAAD0jvrHEcM458.png

四、DNS智能解析规划

   关于DNS的搭建、acl列表及view功能,这里只做使用,不再详解,详情情查看第一部分中第七条的链接

   1、为了让不同的用户访问Web服务器时,能够根据其IP解析到不同的Web地址上(内网用户访问时使用内网IP,外网用户访问时得到防火墙的外网IP),所以我们需要为DNS服务器建立view功能,使其能够实现智能DNS解析,域名为shuishui.com

vim /etc/named.rfc1912.zones

   1)定义内网用户的view

wKioL1M2IuXAr_hPAAA-ovFAP-E869.png

 2)定义其它所有用户的view

wKiom1M2Izigw98OAAApRAqyl6Q713.png

   2、定义完区域后,接下来就是为区域创建区域文件数据库,在编辑完区域文件数据库后,为了保证DNS服务器的正常运行,不要忘了执行DNS的六大步骤

   1)创建区域数据库文件shuishui.com.zone

wKioL1M2JBHTe0AYAAAu2HsRFsE003.png

   2)创建区域数据库文件shuishui.com.out

wKiom1M2JGLQ8g3TAAApW2c7SyI495.png

   3、重启named服务,检查端口是否监听成功

wKioL1M2JTGyhWpuAABcysJF5xU057.png

   4、检查DNS的view功能是否生效

wKioL1M2JnvQ8sH6AAB7tYoCZaU784.png

五、防火墙配置

   1、防火墙安装两块网卡,一块配到内网,一块连接外网

wKiom1M2J62zSUGDAAB6pdMEMdc132.png

   2、开启FORWARD转发功能

      防火墙配置有两块网卡,内网的所有用户都要经过内网网卡(内网的网关),再经过转发到外网的网卡上实现网络通信;这两块网卡虽然安装在一台主机上,但是由于并不在一个网络中,所以默认并不可以通信,因此需要为其开启转发功能

vim /etc/sysctl.conf

wKiom1M2LI2QXnE2AAAhg-Rle8A676.png

   1、NAT简单介绍

   由于内网中的客户端较多,而公网IP有限,所以我们只能通过做NAT实现了

   1)Basic NAT:静态NAT,这种NAT需要有地址池,第个内网地址都应该在地址池中有一个与之对应的外网地址,所以不用

   2)NAPT:(Network Address Port Translation),即网络地址端口转换,它是一种动态的NAT

      ①、SNAT:源地址转换,用于让内网主机访问互联网,POSTROUTING链

      ②、DNAT:让互联网上主机访问本地内网中的某服务器上的服务,用于服务器发布

   iptables就是基于SNAT和DNAT这两个目标实现地址转换的,我们这里这将内网的服务器发布到外面去,所以用的是DNAT

   2、NAT使用格式:    

   1)-j SNAT --to-source SIP

       规则添加:POSTROUTING链

      -j MASQUERADE

       地址伪装,无固定源IP,如果是ADSL的话,就需要用这种机制来实现

   2)-j DNAT --to-destination DIP

       规则添加:PREROUTING链

   3、数据包流向图

wKiom1M2NErwPAqMAAAmEoeWAF4644.png

   所以,根据上图,我们内网的服务器要想经过防火墙发布出去,实现目标地址转换,把内网IP转换成防火墙的外网IP,就需要把规则定义在PREROUTING这个链上,而且我们是实现NAT转换的,所以应该针对的是nat这个表

   4、配置规则

   特别注意:在规则配置之前别忘了给内部主机配置网关,就是防火墙的内网IP!外部主机千万别配网关到1.1.1.1,人家是外部网络中的主机,我们不是运营商,所以我们的1.1.1.1它就不是一个网关

   1)在PREROUTING上添加规则

   默认我的Web主机在内网中,所以外网的用户是不能访问的,因此现在就需要在防火墙上做一个目标地址转换,凡是请求防火墙外网1.1.1.1这个地址的web和DNS请求都要给它转换到Web服务器的内网地址(172.16.251.93)中来。因为这个请求是先到POSTROUTING再经过FORWARD送到内网用户的,所以如果你的FORWARD链上默认规则是ACCEPT的话,则仅需定义下面这两条规则就可以了;如果你的FORWARD链上的默认规则是DROP,那你不得不再在FORWARD链上做tcp80,53和UDP53端口的转发

[root@stu7 ~]# iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m multiport --dports 80,53 -j DNAT --to-destination 172.16.251.93
[root@stu7 ~]# iptables -t nat -A PREROUTING -d 1.1.1.1 -p udp --dport 53 -j DNAT --to-destination 172.16.251.93

   为了直观,贴两个图吧

   nat表的规则

wKiom1M2OvCxPr4sAAAyErLBI38654.png

   filter表的规则

wKiom1M2O_PD9UEjAABOimGbMmA545.png

六、外网客户端测试

   1、IP地址设为1.1.1.2/8,与防火墙的外网地址(1.1.1.1/8)处于一个网络中,并且可以ping通

   2、外网客户端的DNS设置为1.1.1.1

[root@stu7 ~]# vim /etc/resolv.conf
search dns.shuishui.com
nameserver 1.1.1.1

   3、使用curl命令测试用IP是否能够请求到网站信息

wKioL1M2PzCD901fAAAYCnNUjWc515.png

   4、使用curl命令测试用主机名是否能够请求到网站信息

wKioL1M2P7CCXQeSAAAh_j3aqdY319.png

   5、为了消除疑惑,再ping一下网站吧,看看解析的到底是不是防火墙的外网IP地址

wKioL1M2QHyCwKOaAAAqfGDwS3U681.png

   到这里,又要说拜拜了,谢谢光临!下次再来!j_0002.gif

你可能感兴趣的:(linux,view,iptables,NAT,DNAT)