首页 > 代码库 >         基于bind的简单DNS搭建

        基于bind的简单DNS搭建

     我们都知道互联网通信是基于IP地址的,然而我们在访问一个网站的时候只需输入主机名(有时也指我们所说的域名)即可实现,那是因为我们在背后用到了将主机名解释为了对应的IP地址的机制——DNS。下面我们来介绍DNS的实现过程.


:bind的安装配置(正反解析):

   1.bind 介绍:bindbekerleyinternet name domain,我们简单的理解它是用bind 工具实

       DNS服务器的配置。   

   2.bind 安装:bind 安装比较简单我们可以使用下面命令安装并查看安装bind都生成了哪些文件

       #yum install bind -y;rpm -ql bind

    注意,在我们装bind rpm包后会自动生成一个named的用户,这表明服务进程以系统用户的身份运行,这是处于安全考虑的。它可以运行于chroot模型下,即工作于jail环境。我们这里不介绍chroot环境,大家可以自行查阅资料。

    bind 的服务脚本  /etc/rc.d/init.d/named

      主配置文件:/etc/named.conf, /etc/named.rfc1912.zones

      区域解析库文件:/var/named/zone_name.zone   一般是在/var/named目录下,这

      个是在/etc/named.conf 下定义的。

二:正反向解析的实现:

           1.编辑/etc/named.conf文件来配置区域文件我们发现:

wKiom1P7JJvgi84xAACOtzaLIkU596.jpg

其中包含了一个/etc/named.rfc1912.zone文件。这里面定义都是zone,因此我们可以在这个文件中配置区域如下:

wKiom1P7JVPRT1niAAHYFgZG7Us470.jpg

从上面看出此时我们还应该配置正反向解析库文件:

 

1 $TTL 3600
 2 @    IN SOA  ns.guzenghui.com.admin.guzenghui.com. (
 3                 2014080502            序列号,每次更新都应该不同
 4                 3H                   从服务器请求更新时间周期
 5                 3M                   从服务器请求失败时访问频率
 6                 2D                   过期时长
 7                 3D )                   否定答案的统一缓存时长
 8    IN  NS   ns
 9  ns    IN A  172.16.249.215
 10 www  IN A  172.16.249.216
 11 mail   IN A  172.16.249.217
 12   pop  IN  CNAME mail.guzenghui.com

反向解析库文件:

wKioL1P7J2mwdl33AADpIPu9E4Y131.jpg

对比我们可以看出正向解析于反向解析唯一区别在于反向解析没有A目录,因为反向解析式由IP地址到主机名的解析。

三:正反向解析测试:

wKioL1P7J-iBgmKiAAH7ITra4P8757.jpg


四:从DNS服务搭建(从服务器搭建我们只以正向解析为例):

     此时同主DNS搭建一样我们只需增加一个从区域:区域信息如下:

        zone "guzenghui.com" IN {

 43       type slave;                   说明是从DNS服务器
 44       file "slaves/guzenghui.com.zone";     库文件位置
 45       masters { 172.16.249.215; };            主服务器的IP地址
 46};
 47zone "249.16.172.in-addr.arpa" IN {
 48       type slave;
 49       file "slaves/172.16.249.com.zone";       反向解析库文件位置
 50       masters { 172.16.249.215; };
 51 };

注意:我们每次增加一个DNS服务器就需要分别在父域和主DNS服务器库文件资源记录里面指明的。

我们不需要在从服务器创建库文件,因为主服务器和从服务器可以完成区域传送(主从复制),每次主服务器更新时就会通知从服务器(当我们执行rndc reload 命令时),然后从服务器复制主服务器的内容。因为这是区域传送因此不能出现主服务器从从服务器中复制数据。

区域传送方式有两种: 增量 区域传送(每次复制更新的库文件内容)和完全区域传送(每次复制主服务器的所有库文件内容)。我们可以看下区域传送的过程:

我们在172.16.249.215这台主机(主DNS服务器)上执行如下命令后:

wKioL1P7KImhIxBZAABLqIKhzSw575.jpg

172.16.249.218 这台主机(从DNS服务器)上查看日志:

wKioL1P7KMuDlY6SAAK0Qsq8Fd4952.jpg


我们就可以看出每当主服务器更新以后从服务器会自动去主服务器那里下载最新库文件信息。至此我们的从DNS服务器已经搭建完毕。

其实这样简单的区域传送配置并不安全,因为如果都能够进行区域传送了,那么就可能对传送过来的数据进行分析,就可以得到此公司内所有服务,那么就有可能被黑。所以我们可以进行区域传送限制。

五:区域传送限制:bind 有内置的ACL。因此我们可以利用它来对区域传送加以限制如下:

wKioL1P7KWaBzaZXAAGiTdh6Pp8776.jpg

只允许特定IP地址进行区域传送。


六:DNS子域授权和转发(我们以正向区域解析为例):

    1.建立子域:我们需要再主DNS服务器(172.16.249.215)中添加子域ns记录

命名为ns.ops.guzenghui.com,并指明A记录IP地址设为172.16.249.220。此时主DNS的设置完成,我们再在172.16.249.220上建立区域zone"ops.guzenghui.com"即可。

       2.转发器的制作,我们需要再子域的配置文件中定义如图所示:

wKioL1P7KcvyrW0CAAHs4OhrD84763.jpg

 这两段表示当你让172.16.249.220解析的时候,它自己实际并不做解析只做转发(可以理解为172.16.249.220这台主机仅是一个转发器),转发给172.16.249.215这台DNS服务器来完成。但是当你设置成only的时候,让172.16.249.215给你做权威应答,即它若解析不到,就不会做迭代查询。

七:view功能简单介绍:

            比如我们想让联通用户访问所得到的解析结果为1.1.1.1,而移动用户访问所得到的解析结果是2.2.2.2,此时我们就可以使用view

 viw 的使用方法。

view{
       match-clients{ IP;IP;IP.... };            //表示所匹配的IP地址,即匹配到的IP地址
                                    访问的时候用guzenghui.com1这个库文件解析。
              zone"guzenghui.com" IN {
                     typemaster;
                     file"guzenghui.com.1";
              };
       };
view{
       match-clients{ IP;IP;IP;.... };              //表示匹配到的地址用guzenghui.com2这个
                                            库文件解析                       
              zone"guzenghui.com" IN {
                     typemaster;
                     file"guzenghui.com2";
              };
       };
view{
     match-clients{ any };            //表示匹配到其它的用guzenghui.com3这个库解析
          ....
          ....
        file "guzenghui.com3"
}

至此我们的DNS服务器已经搭建完毕。

本文出自 “linux运维” 博客,请务必保留此出处http://germanygu.blog.51cto.com/3574209/1544890

        基于bind的简单DNS搭建