Linux學習之CentOS(三十五)--配置域從DNS服務器以及緩存DNS服務器



您可以通過點擊 右下角 的按鈕 來對文章內容作出評價, 也可以通過左下方的 關注按鈕 來關注我的博客的最新動態。 如果文章內容對您有幫助, 不要忘記點擊右下角的 推薦按鈕 來支持一下哦 如果您對文章內容有任何疑問, 可以通過評論或發郵件的方式聯系我: 501395377@qq.com / lzp501395377@gmail.com 如果需要轉載,請注明出處,謝謝!!

 

在上一篇隨筆中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.com" 
{
    type master;
    file "cnblogs.com.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.com" 
{
    type master;
    file "cnblogs.com.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.com" 
{
  type slave;
  masters { 192.168.198.129; };
  file "slaves/cnblogs.com.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.com"
{
    type slave;  // 指定這是從DNS服務器
    masters { 192.168.198.129; };  // 因為從DNS服務器要抓取主DNS服務器上的zone文件,這里要指定主DNS服務器的IP地址,注意:IP地址要用{}括起來,且以;結尾,前后都有空格 file "slaves/cnblogs.com.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.com.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.com.zone文件已經從主DNS服務器上抓取下來了

[root@slave slaves]# cat cnblogs.com.zone 
$ORIGIN .
$TTL 86400    ; 1 day
cnblogs.com        IN SOA    cnblogs.com. rname.invalid. (
                0          ; serial
                86400      ; refresh (1 day)
                3600       ; retry (1 hour)
                604800     ; expire (1 week)
                10800      ; minimum (3 hours)
                )
            NS    cnblogs.com.
            A    127.0.0.1
            MX    10 mail.cnblogs.com.
            AAAA    ::1
$ORIGIN cnblogs.com.
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服務器是否能夠正常解析

//    查詢www.cnblogs.com的IP地址
[root@slave slaves]# dig www.cnblogs.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> www.cnblogs.com
;; 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:
;www.cnblogs.com.        IN    A

;; ANSWER SECTION:
www.cnblogs.com.    86400    IN    A    192.168.1.111

;; AUTHORITY SECTION:
cnblogs.com.        86400    IN    NS    cnblogs.com.

;; ADDITIONAL SECTION:
cnblogs.com.        86400    IN    A    127.0.0.1
cnblogs.com.        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.com這個域的郵件記錄
[root@slave slaves]# dig -t mx cnblogs.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t mx cnblogs.com
;; 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.com.            IN    MX

;; ANSWER SECTION:
cnblogs.com.        86400    IN    MX    10 mail.cnblogs.com.

;; AUTHORITY SECTION:
cnblogs.com.        86400    IN    NS    cnblogs.com.

;; ADDITIONAL SECTION:
mail.cnblogs.com.    86400    IN    A    192.168.1.222
cnblogs.com.        86400    IN    A    127.0.0.1
cnblogs.com.        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.com的IP地址
[root@slave slaves]# dig mail.cnblogs.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> mail.cnblogs.com
;; 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.com.        IN    A

;; ANSWER SECTION:
mail.cnblogs.com.    86400    IN    A    192.168.1.222

;; AUTHORITY SECTION:
cnblogs.com.        86400    IN    NS    cnblogs.com.

;; ADDITIONAL SECTION:
cnblogs.com.        86400    IN    A    127.0.0.1
cnblogs.com.        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.com"
{
        type slave;
        masters { 192.168.198.129; };
        file "slaves/cnblogs.com.zone";
};

我們還可以通過以下選項讓緩存服務器將所有的DNS查詢轉發到forwarders服務器上:

forward only;

 

至此,本篇隨筆的編寫就告一段落了,本篇隨筆詳細講解了如何配置一台從DNS服務器,講解了從服務器從主服務器上抓取zone配置文件的原理以及通過配置我們的緩存服務器來提高網絡性能.......

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM