好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

配置域从DNS服务器以及缓存DNS服务器

配置域从DNS服务器以及缓存DNS服务器

配置域从DNS服务器以及缓存DNS服务器

 
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: 501395377@qq测试数据 / lzp501395377@gmail测试数据 如果需要转载,请注明出处,谢谢!!

 

 

在上一篇随笔中 Linux学习之CentOS(三十四)--配置域主DNS服务器 ,详细讲解了如何在Linux环境下配置一个域的主DNS服务器,在本篇随笔中将讲解如何配置一个域的从DNS服务器以及缓存DNS服务器

 

一、域从DNS服务器的作用

 

我们在之前上一篇随笔里有提到,DNS服务器一般有三种类型,一个是Primary DNS Server(主DNS服务器),一个是Secondary DNS Server(从DNS服务器),还有一个就是Caching DNS Server,我们配置一个域的DNS服务就是给其配置一个主DNS服务器,那么从DNS服务器主要是用来干嘛的呢?

 

配置一个域的从服务器一般是为了进行备份以及负载均衡使用,例如在生产环境中,我们给一个域配置的主DNS服务器崩溃了或者被恶意攻击了,那么这个时候如果没有配置从DNS服务器的话,我们的DNS服务器就不能提供DNS服务了,也就无法解析服务器上配置的域名了,或者说主服务器的访问量特别大,此时我们配置从服务器来达到负载均衡的效果,因此我们通常在配置了一个主DNS服务器以后,还需要为其配置多个从DNS服务器

 

我们知道,我们为一个域配置的文件都是由主DNS服务器来控制的,我们的从服务器上的信息都是通过从主服务器上抓取得来的,当域slave服务器启动的时候就会从域master服务器上抓取指定域的zone文件,所以我们配置从服务器的步骤就非常的简单了

 

二、配置域从DNS服务器

 

我们这里通过虚拟机模拟了两台Linux主机,一台主机就是昨天已经配置好的主DNS服务器,另外一台主机作为从DNS服务器来使用。

 

在进行域从DNS服务器配置之前,我们首先需要在主DNS服务器上进行一些配置:

 

(1) 开放主DNS服务器上的53、953端口

 

因为我们的从服务器要通过网络去抓取主服务器上的zone文件,所以我们要在iptables里面增加两个规则,开放本机的53和953端口,这里为了实验方便,就直接先将iptables清空了

 

 

[root@xiaoluo etc]#  iptables -   F 
[root@xiaoluo etc]#  iptables    -   L 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

 

(2) 将我们的SELinux设置成permissive

 

 [root@xiaoluo etc]#  getenforce  
Enforcing
[root@xiaoluo etc]#  setenforce    0  
[root@xiaoluo etc]#  getenforce  
Permissive 

 

(3) 修改一下主配置文件 named.conf

 

因为我们从服务器要通过网络来访问主服务器进行zone文件的抓取,所以我们要在 named.conf 主配置文件里面添加从服务器的IP地址进去,因为我们默认是指定了本机IP,这样就只能我们的本机使用BIND服务,所以我们需要将从服务器的IP地址也写进去,或者说不指定开放53、953端口的IP地址,这样其他主机也就能够通过网络访问到这台主机的DNS服务了

 

这是昨天配置的named.conf文件,我们这里就将 listen-on port 那两行代码删除即可

 

 /*  
 Sample named.conf BIND DNS server 'named' configuration file
 for the Red Hat BIND distribution.

 See the BIND Administrator's Reference Manual (ARM) for details, in:
   file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
 Also see the BIND Configuration GUI : /usr/bin/system-config-bind and 
 its manual.
  */  

options
{
      //   Put files that named is allowed to write in the data/ directory: 
    directory          "  /var/named  " ;         //   "Working" directory

      //  listen-on port 53    { any; }; 
    listen-on port  53     {  127.0 . 0.1  ; };

      //  listen-on-v6 port 53    { any; }; 
    listen-on-v6 port  53     { :: 1  ; };

};

zone   "  cnblogs测试数据  "   
{
    type master;
      file   "  cnblogs测试数据.zone  "  ;
}; 

 

 

修改后:

 

 [root@xiaoluo etc]# vim named.conf
  /*  
 Sample named.conf BIND DNS server 'named' configuration file
 for the Red Hat BIND distribution.

 See the BIND Administrator's Reference Manual (ARM) for details, in:
   file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
 Also see the BIND Configuration GUI : /usr/bin/system-config-bind and 
 its manual.
  */  

options
{
      //   Put files that named is allowed to write in the data/ directory: 
    directory          "  /var/named  " ;         //   "Working" directory 
 };

zone   "  cnblogs测试数据  "   
{
    type master;
      file   "  cnblogs测试数据.zone  "  ;
}; 

 

(4) 开启我们的主DNS服务器的BIND服务

 

 [root@xiaoluo etc]# service named start
Starting named: named: already running                     [  OK  ] 

 

主DNS服务器的配置就基本这样子,接下来就是我们配置从DNS服务器的步骤了:

 

① 首先我们也需要在从服务器上安装BIND服务 ,这块就省略了,具体安装上一篇随笔有详细讲解  Linux学习之CentOS(三十四)--配置域主DNS服务器

 

② 在bind主配置文件中添加指定域的信息

 

我们只需要在named.conf配置文件下面添加如下信息就可:

 

zone  "  cnblogs测试数据  "   
{
  type slave;
  masters { 192.168.198.129; };
  file "slaves/cnblogs测试数据.zone"
};

 

 

[root@slave etc]#  cat   named.conf 
  /*  
 Sample named.conf BIND DNS server 'named' configuration file
 for the Red Hat BIND distribution.

 See the BIND Administrator's Reference Manual (ARM) for details, in:
   file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
 Also see the BIND Configuration GUI : /usr/bin/system-config-bind and 
 its manual.
  */  

options
{
    directory           "  /var/named  " ;         //   "Working" directory 
 };

zone   "  cnblogs测试数据  "  
{
    type slave;  // 指定这是从DNS服务器
    masters {   192.168 . 198.129  ; };  // 因为从DNS服务器要抓取主DNS服务器上的zone文件,这里要指定主DNS服务器的IP地址,  注意: IP地址要用{}括起来,且以;结尾,前后都有空格
       file   "  slaves/cnblogs测试数据.zone  "  ;  //  从服务器默认抓取到的zone文件通常都保存在了 slaves 这个目录下
};

 

③ 关闭从服务器上的SELinux

 

因为要通过网络来访问主服务器,所以这里也需要将我们的SELinux设置成 permissive

 

 [root@slave etc]#  getenforce  
Enforcing
[root@slave etc]#  setenforce    0  
[root@slave etc]#  getenforce  
Permissive 

 

【 注意: 】因为我们从主服务器上抓取文件到  slaves  这个目录下是由  named  这个系统用户来完成的,所以我们要保证 slaves 要有 可写权限 ,同时 slaves 的所属用户、所属组都是  named  

 

[root@slave named]#  ls  - l
总用量   32  
drwxr -xr-x.  2  root root  4096  6月    6   22 : 52   data
 -rw-r--r--.  1  root root    56  6月    6   22 : 52   my.external.zone.db
 -rw-r--r--.  1  root root    56  6月    6   22 : 52   my.internal.zone.db
 -rw-r--r--.  1  root root  1892  6月    6   22 : 52   named.ca
 -rw-r--r--.  1  root root   152  6月    6   22 : 52   named.empty
 -rw-r--r--.  1  root root   152  6月    6   22 : 52   named.localhost
 -rw-r--r--.  1  root root   168  6月    6   22 : 52   named.loopback
drwxr -xr-x.  2  root root  4096  6月    6   22 : 52   slaves
[root@slave named]#   chown   named slaves/  
[root@slave named]#   chgrp   named slaves/  
[root@slave named]#   ls  - l
总用量   32  
drwxr -xr-x.  2  root  root   4096  6月    6   22 : 52   data
 -rw-r--r--.  1  root  root     56  6月    6   22 : 52   my.external.zone.db
 -rw-r--r--.  1  root  root     56  6月    6   22 : 52   my.internal.zone.db
 -rw-r--r--.  1  root  root   1892  6月    6   22 : 52   named.ca
 -rw-r--r--.  1  root  root    152  6月    6   22 : 52   named.empty
 -rw-r--r--.  1  root  root    152  6月    6   22 : 52   named.localhost
 -rw-r--r--.  1  root  root    168  6月    6   22 : 52   named.loopback
drwxr -xr-x.  2   named   named   4096  6月    6   22 : 52  slaves

 

 

④ 启动我们从服务器上的BIND服务,或刷新我们的BIND服务配置

 

 [root@slave etc]#  service named start 
Generating  /etc/ rndc.key:                                  [确定]
启动 named:                                               [确定] 

 

⑤ 查看域的zone配置文件是否正常被抓取到了  /var/named/chroot/var/named/slaves/  这个目录当中

 

[root@slave slaves]#  ls  - l
总用量   12 
-rw-r--r--.  1  named named  381  6月    6   23 : 20    cnblogs测试数据.zone
  -rw-r--r--.  1  root  root    56  6月    6   22 : 52   my.ddns.internal.zone.db
 -rw-r--r--.  1  root  root    56  6月    6   22 : 52  my.slave.internal.zone.db

 

我们看到,cnblogs测试数据.zone文件已经从主DNS服务器上抓取下来了

 

[root@slave slaves]#  cat    cnblogs测试数据.zone  
$ORIGIN .
$TTL   86400     ;  1   day
cnblogs测试数据        IN SOA    cnblogs测试数据. rname.invalid. (
                  0            ; serial
                  86400       ; refresh ( 1   day)
                  3600        ; retry ( 1   hour)
                  604800      ; expire ( 1   week)
                  10800       ; minimum ( 3   hours)
                )
            NS    cnblogs测试数据.
            A      127.0 . 0.1  
            MX      10   mail.cnblogs测试数据.
            AAAA    ::  1  
$ORIGIN cnblogs测试数据.
mail            A      192.168 . 1.222  
www            A      192.168 . 1.111 

 

⑥ 将从DNS服务器的指向当前主机

 

这个时候我们的从DNS服务器已经配置好了,我们这时修改  /etc/resolv.conf  文件然后将  nameserver  指向本机

 

[root@slave slaves]#  vim /etc/   resolv.conf 

nameserver   127.0 . 0.1 

 

⑦ 通过 host 或者 dig 命令来验证我们的从DNS服务器是否能够正常解析

 

 //      查询HdhCmsTestcnblogs测试数据的IP地址 
 [root@slave slaves]# dig HdhCmsTestcnblogs测试数据

;  <<>> DiG  9.8 .2rc1-RedHat- 9.8 . 2 - 0.17 .rc1.el6 <<>>  HdhCmsTestcnblogs测试数据
;; global options:  + cmd
;; Got answer:
;;  ->>HEADER<<- opcode: QUERY, status: NOERROR,  id :  61233  
;; flags: qr aa rd ra; QUERY:   1 , ANSWER:  1 , AUTHORITY:  1 , ADDITIONAL:  2  

;; QUESTION SECTION:
;HdhCmsTestcnblogs测试数据.        IN    A

;; ANSWER SECTION:
HdhCmsTestcnblogs测试数据.      86400     IN    A     192.168 . 1.111  

;; AUTHORITY SECTION:
cnblogs测试数据.          86400      IN    NS    cnblogs测试数据.

;; ADDITIONAL SECTION:
cnblogs测试数据.          86400     IN    A     127.0 . 0.1  
cnblogs测试数据.          86400     IN    AAAA    :: 1  

;; Query   time :  2   msec
;; SERVER:   127.0 . 0.1 # 53 ( 127.0 . 0.1  )
;; WHEN: Thu Jun    6   23 : 29 : 16   2013  
;; MSG SIZE  rcvd:   107 

 //    查询cnblogs测试数据这个域的邮件记录 
[root@slave slaves]# dig - t mx cnblogs测试数据

;  <<>> DiG  9.8 .2rc1-RedHat- 9.8 . 2 - 0.17 .rc1.el6 <<>> - t mx cnblogs测试数据
;; global options:  + cmd
;; Got answer:
;;  ->>HEADER<<- opcode: QUERY, status: NOERROR,  id :  3328  
;; flags: qr aa rd ra; QUERY:   1 , ANSWER:  1 , AUTHORITY:  1 , ADDITIONAL:  3  

;; QUESTION SECTION:
;cnblogs测试数据.            IN    MX

;; ANSWER SECTION:
cnblogs测试数据.          86400     IN    MX     10   mail.cnblogs测试数据.

;; AUTHORITY SECTION:
cnblogs测试数据.          86400      IN    NS    cnblogs测试数据.

;; ADDITIONAL SECTION:
mail.cnblogs测试数据.      86400     IN    A     192.168 . 1.222  
cnblogs测试数据.          86400     IN    A     127.0 . 0.1  
cnblogs测试数据.          86400     IN    AAAA    :: 1  

;; Query   time :  2   msec
;; SERVER:   127.0 . 0.1 # 53 ( 127.0 . 0.1  )
;; WHEN: Thu Jun    6   23 : 30 : 04   2013  
;; MSG SIZE  rcvd:   124 

 //    查询mail.cnblogs测试数据的IP地址 
 [root@slave slaves]# dig mail.cnblogs测试数据

;  <<>> DiG  9.8 .2rc1-RedHat- 9.8 . 2 - 0.17 .rc1.el6 <<>>  mail.cnblogs测试数据
;; global options:  + cmd
;; Got answer:
;;  ->>HEADER<<- opcode: QUERY, status: NOERROR,  id :  47353  
;; flags: qr aa rd ra; QUERY:   1 , ANSWER:  1 , AUTHORITY:  1 , ADDITIONAL:  2  

;; QUESTION SECTION:
;mail.cnblogs测试数据.        IN    A

;; ANSWER SECTION:
mail.cnblogs测试数据.      86400     IN    A     192.168 . 1.222  

;; AUTHORITY SECTION:
cnblogs测试数据.          86400      IN    NS    cnblogs测试数据.

;; ADDITIONAL SECTION:
cnblogs测试数据.          86400     IN    A     127.0 . 0.1  
cnblogs测试数据.          86400     IN    AAAA    :: 1  

;; Query   time :  1   msec
;; SERVER:   127.0 . 0.1 # 53 ( 127.0 . 0.1  )
;; WHEN: Thu Jun    6   23 : 30 : 36   2013  
;; MSG SIZE  rcvd:   108 

 

我们看到,我们的域名都能正常的解析成功,说明我们的从DNS服务器的配置就成功了

 

这个时候我们的客户端既可以指向我们的主服务器,也可以指向我们的从服务器了,当主服务器发生故障时,从服务器就会接替主服务器进行工作,提供DNS服务

 

三、配置缓存DNS服务器

 

在上面以及前一篇随笔中我们讲解了如何配置一个主DNS服务器,以及从DNS服务器,但是一个DNS服务器可以既不是某个域的master服务器,也可以不是某个域的slave服务器,一个DNS服务器可以不包含任何域的配置信息,它将接收到的所有DNS查询进行递归解析,将解析的结果返回给我们的查询客户端,并且将查询结果缓存下来,这样的服务器就称之为Caching DNS Server

 

通常我们在一个局域网中配置一个缓存DNS服务器是为了加速网络访问

 

我们也可以在缓存服务器上配置一个上游的DNS服务器地址,缓存服务器可以给客户提供一个上游DNS服务器的地址,只需通过加上以下一行语句在 named.conf 主配置文件即可:

 

forwarders { 218.30.19.40; };

 

 [root@slave etc]# vim named.conf

  /*  
 Sample named.conf BIND DNS server 'named' configuration file
 for the Red Hat BIND distribution.

 See the BIND Administrator's Reference Manual (ARM) for details, in:
   file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
 Also see the BIND Configuration GUI : /usr/bin/system-config-bind and 
 its manual.
  */  

options
{
        directory                 "  /var/named  " ;            //   "Working" directory 
         forwarders      {   218.30.19.40;   };  // 一般上游的DNS服务器要更稳定,性能更好   forwarders   forward  选项都要写在  options  里面
};

zone   "  cnblogs测试数据  "  
{
        type slave;
        masters {   192.168 . 198.129  ; };
          file   "  slaves/cnblogs测试数据.zone  "  ;
}; 

 

我们还可以通过以下选项让缓存服务器将所有的DNS查询转发到forwarders服务器上:

 

forward only;

 

 

 

至此,本篇随笔的编写就告一段落了,本篇随笔详细讲解了如何配置一台从DNS服务器,讲解了从服务器从主服务器上抓取zone配置文件的原理以及通过配置我们的缓存服务器来提高网络性能.......

 

 

 

 

 

 

分类:  Linux

标签:  linux ,  CentOS

 

作者: Leo_wl

    

出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于配置域从DNS服务器以及缓存DNS服务器的详细内容...

  阅读:37次