DNS

你有沒有一個這樣的問題困擾的你呢?如果我們記憶IP地址你能記住多少個?5個?10個?20個?我想你只能記住常用的IP對吧?但是我們想訪問我們想要的某個站點的頁面,你能會使用IP地址訪問麼?顯然不會,就像我們日常使用的百度這樣的網站,你會輸入它的IP去訪問麼?肯定不會,我想大部分人不知道百度的IP地址是多少的?我們都是通過www.baidu.com這樣的方式去訪問,但是你知道,網絡中並不能直接使用字母進行解析的,那如何實現這樣的功能呢?DNS就是幫助我們進行地址轉換,是的我們獲取到IP地址去上網的。這樣大大減輕了我們的記憶內存。

一、DNS

1、DNS概念

DNS(Domain Name System,域名系統)是互聯網的一項服務。它將域名和IP地址相互映射的一個分佈式數據庫,能夠使人方便地訪問互聯網。

2、使用的端口

(1)53/TCP 53/UDP

(2)不同協議的端口作用是什麼呢?

53/UDP:提供客戶端查詢功能
53/TCP和53/UDP:實現dns主從複製功能

3、DNS域名

開頭我們述說DNS是分佈式數據庫,想必大家猜到了DNS是層級結構的。 q.jpg

從圖中可以看出DNS的層級結構

(1)根域(Top Level Domain,tld)

(2)頂級域

(a)組織域, com,org,gov,mil等
(b)國家域,cn,ca,hk,tw等
(c)反向域,arpa

(3)二級域 ...

4、DNS服務器類型

(1)主DNS服務器

作用:管理和維護負責解析的域內解析庫的服務器

。 (2)從DNS服務器

作用:從主服務器或從服務器“複製”(區域間傳輸)解析庫副本。

這裏我們需要注意一下,區域傳輸分爲兩種
(a)完全傳輸(axfr):傳送整個解析庫;
(b)增量傳輸(ixfr):傳遞解析庫變化的內容;

是不是大家想,主從DNS服務器時如何工作的呢?

有兩種工作機制“PUSH”和“PULL”。當主DNS服務器配置文件中序列號發生遞增,重新DNS服務;主DNS服務器會主動向從DNS服務器同步信息;這個過程稱爲'PUSH'。如果區域傳輸終端,沒有同步成功,從服務器會根據配置文件中的”retry“指定的時間重新嘗試同步信息,這個過程稱爲“PULL”。

5、DNS解析

DNS解析分爲兩種

(a)正向解析:FQDN-->IP
(b)反向解析:  IP-->FQDN

注意:正向解析是兩個不同的名稱空間,是兩個不同的解析樹,如果爲子域則寫DNS服務IP。

DNS查詢類型:

(a)遞歸查詢
(b)迭代查詢

2017-09-19_214603.png

一次完整的DNS查詢請求的過程:Client-->host文件-->DNS server Local Cache -->DNS server(recursion)-->Server Cache-->Iteration(迭代)-->Root-->TLD-->二級域名-->...

6、DNS資源類型

區域解析庫由衆多的RR(resource record)組成。存在不同的類型:A,AAAA,SOA,CNAME,MX,PTR,NS。

資源記錄的格式:

NAME    [TTL]    IN     RR_TYPE     VALUE

下面有幾點需要注意的:

(a)$TTL變量,全局繼承此處的緩存週期,默認單位爲秒。

(b)@代替/etc/named.rfc1912.zones配置的ZONE_NAME.

(c)同一個名字可以通過多條記錄定義多個不同的值,此時DNS服務器會以輪詢方式進行相應。

(d)同一個值可能有多個不同定義的名字;通過多個不同的名字指向同一個值進行定義。此僅表示通過多個不同的名字可以找到同一個主機。

(1)SOA:Start Of Authority,起始授權記錄。

value的構成:

(a)當前區域的主DNS服務器的 FQDN,也可以使用/etc/named.rfc1912.zones配置的ZONE_NAME。

(b)當前區域管理員的郵箱地址,但地址中不能使用”@“,一般使用“.”替代。因爲在配置文件中“@”表示特殊含義 。

(c)主從服務區域傳輸相關定義以及否定的答案的同一TTL。

@       IN SOA  @ rname.invalid. (
                                    0       ; serial    #解析庫序列號,主服務器解析庫變化時,遞增,最長只能爲十位數組成,一般爲了方便管理這樣管理“當前日期+版本號”
                                    1D      ; refresh   #刷新時間,從服務器從主服務器請求同步解析庫的時間
                                    1H      ; retry     #重試時間,從服務器從主DNS服務器請求失敗時,再次嘗試的時間
                                    1W      ; expire    #過期時長,從服務器聯繫不到主服務器時,多久後停止服務
                                    3H )    ; minimum   #錯誤解析存活時長

注意:一個區域解析庫只能有且僅有一個SOA記錄,必須位於解析庫的第一條記錄。

(2)NS,Name Server ,名稱服務

value:當前區域的某DNS服務器名稱

注意:

(a)相鄰的兩個資源記錄的NAME相同時,後續可省略。

(b)任何一個NS記錄後面的服務器名字,都應該在後續有一個A記錄。

(3)MX,Mail eXchange,郵件轉換

value:當前區域的某郵件服務器的主機名

注意:

(1)在一個區域內可以有多個MX記錄,但是每個MX記錄前應該有一個數字(0-99),表示服務器的優先級,數字越小優先級越高。

(2)任何一個MX記錄後應該有一個A記錄。

(4)A 記錄

value:主機名對應的IP地址

對於A記錄有以下幾種定義格式:

(a)可以使用FQDN

(b)可以使用泛域名 *.ZONE_NAME,這種方式的好處是避免用戶寫錯名稱時給錯誤答案,將錯誤答案指向某特性的地址。

(c)如果一個網段中地址不確定可以是使用 $GGENERATE #-# NAME$ 後面對應的地址也是,網段加$

示例:$GENERATE 100-150 host$     IN    A  192.168.4.$

(5)AAAA記錄

(6)PTR PoinTeR IP,反向域名解析

格式:IP   PTR     FQDN
完整格式:135.4.168.192-in.adder.arpa    IN PTR dns1
如果192.168.4爲網絡地址,可以這樣寫 135  IN PTR DNS1

注意:主機地址要反着寫。

(7)CNAME 別名

有時候我們訪問一個網站是www主機不一定是真正的主機。有可能使用了這種別名機制

示例: www IN CNAME    websrv

我們在訪問一個網址時,有可能爲如下地址www.test.server.com對整個地址來說真正的,test爲server的子域。server爲com的子域。n那麼父域如何對子域進行授權呢?

子域授權:每個域的名稱服務器,都是通過父域服務器在解析庫進行授權。

2017-09-19_193850.png

如圖所述:想必大家多DNS的名稱,過程有了一定的瞭解,下面通過看上面這張圖,可以看出子域與父域的管理。通過觀察圖中,一個zone可有多個RR組成。可以粗略的看出DNS的容錯功能,實現負載的作用。父域通過委派子域進行管理。

2017-09-19_194012.png

如圖所示:DNS是工作在內核中的,用戶是沒有辦法直接管理DNS服務,那要如何管理DNS服務呢?前人想出了Bind進行管理DNS服務。這樣用戶通過用戶空間藉助於Bind管理工具或配置文件就可以管理DNS服務了。

二、實現管理DNS

1、bind安裝包

bind-libs.x86_64             #庫包           
bind-libs-lite.x86_64       #     
bind-license.noarch        #認證包
bind-utils.x86_64            #提供對dns服務器的測試工具程序
bind-chroot                     #爲bind提供一個僞裝的根目錄以增強安全性

2、Bind配置文件

服務腳本/etc/rc.d/init.d/named/usr/lib/systemcd/system/named.service

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

存放根服務器地址 /var/named/name.ca

解析庫文件 /var/named/ZONE_NAME_ZONE

注意:

(1)一臺物理服務器可同時爲多個區域提供解析。

(2)必須要有根文件:name.ca。

(3)應該有兩個實現localhost和本地迴環的解析庫。

主配置文件/etc/namd.conf

// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.  #這個文件是一個參考例子
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {                                       #全局設置
        listen-on port 53 { 127.0.0.1; };   #IPv4監聽的端口和IP地址
        listen-on-v6 port 53 { ::1; };         #IPv6監聽的端口
        directory       "/var/named";       #zone配置文件存放目錄
        dump-file       "/var/named/data/cache_dump.db";    #下載緩存數據庫
        statistics-file "/var/named/data/named_stats.txt";      #靜態文件
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; };     #允許詢問

        /* 
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable 
           recursion. 
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification 
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface 
        */
        recursion yes;  #是否遞歸查詢

        dnssec-enable yes;      #是否支持DNSSEC開關
        dnssec-validation yes;  #是否進行DNSSEC確認開關

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {                           #日誌信息
        channel default_debug {
                file "data/named.run";  #存放的文件位置
                severity dynamic;       #工作模式
        };
};

zone "." IN {                       #根域
        type hint;                      #zone類型
        file "named.ca";            #文件名稱
};

include "/etc/named.rfc1912.zones"; 
include "/etc/named.root.key";

建議一般不要在這個文件中配置zone,可以在/etc/named.rfc1912.zones文件下進行配置。

/var/named/named.localhost 文件

$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS  @
    A   127.0.0.1
    AAAA    ::1

一般這個文件作爲一個模板文件進行zone的配置。

3、DNS轉發服務器

(1)全局轉發:對非本機所負責區域的請求,全轉發給指定的服務器。

options{
    forward  first|only;
    forwarders { IP; };
};

(2)特定區域轉發:僅轉發對特定區域的請求,比全局轉發優先級高。

zone "ZONE_NAME" IN {
    tyep    forward;
    forward first|only;
    forwarders { IP; }
};

4、從DNS服務器

(1)應該爲一臺獨立的名稱服務器

(2)主服務器區域解析文件中必須有一條NS記錄指向從DNS服務器

(3)從服務器只需要定義區域,而無須提供解析庫;解析庫文件應該放置於/var/named/slaves目錄下。

(4)主服務器得允許從服務器區域傳送

(5)主從服務器的時間應該保持一致

(6)Bind程序版本應該保持一致;如果不一致,建議主服務器低,從服務器高。

(7)修改網卡配置文件/etc/sysconfig/network-scripts-ifcfg-INTERFACE,添加DNS記錄。

5、允許動態更新

如果想啓用此功能,可以在/etc/named.rfc1912.zones文件中定義之。

三、管理命令

1、dig命令

作用:只能用於測試DNS系統,不會查詢hosts文件進行解析。

格式:

dig [@server] [-b address] [-c class] [-f filename] [-k filename] [-m]
       [-p port#] [-q name] [-t type] [-x addr] [-y [hmac:]name:key] [-4] [-6]
       [name] [type] [class] [queryopt...]

simple usage: dig @server name type

選項:

-b:綁定源IP
-4:僅使用IPv4
-t:指定RR類型,默認爲A記錄,atfr(反向解析)
-x:反向解析
+[no]trace:跟蹤解析過程
+[no]recure:遞歸解析

2、host命令

格式:

 host [-aCdlnrsTwv] [-c class] [-N ndots] [-R number] [-t type] [-W wait]
        [-m flag] [-4] [-6] {name} [server]

選項:

-t:指定RR類型

3、nslookup

格式:nslookup [-option] [name | -] [server]

 nslookup>
server IP: 指明使用哪個DNS server進行查詢
set q=RR_TYPE: 指明查詢的資源記錄類型
NAME: 要查詢的名稱

4、rndc命令(953/tcp)

格式: rndc [-b source-address] [-c config-file] [-k key-file] [-s server] [-p port] [-V] [-y key_id] {command}

reload:重載主配置文件和區域解析庫文件
retranfer:手動啓動區域傳送,而不管序列號是否增減;
notify:重新對區域傳送發通知;
reconfig:重載主配置文件
querylog:開啓或關閉查詢日誌文件`/var/log/message`
trace:遞增debug一個級別
trace LEVEL:指定使用的級別
notrace:將調試級別設置爲0
flush:清空DNS服務器的所有緩存記錄

四、實戰

(1)搭建主DNS服務器

(a)[root@localhost ~]# yum install -y bind #安裝包 (b)[root@localhost ~]# vim /etc/named.conf #修改主配置文件

方式一: 2017-09-20_091807.png

方式二: 2017-09-20_092049.png

(c)[root@localhost ~]# vim /etc/ named.rfc1912.zones #修改zone文件

zone "test.com" IN {
        type master;
        file "test.com.zone"    #此地方可以寫絕對路徑和相對路徑,如果寫相對路徑,默認爲`/var/named/test.com.zone`,因此在`/var/named`目錄下文件名一定要與這裏的文件名一致。
};

(d)[root@localhost ~]# named-checkconf #使用命令對配置文件檢查

/etc/named.rfc1912.zones:27: missing ';' before '}' #此時檢查爲27行處沒有加";"修改完再檢查即可。

2017-09-20_092600.png

注意:修改rfc1912.zones文件時,要以“;”結尾;參數與選項之間必須有空格隔開。

(e)修改zone文件[root@localhost named]# cp named.localhost test.com.zone

但是這裏有一個問題,bind程序是以who的身份運行呢?下面通過命令查詢看下: [root@localhost named]# ps aux |grep named

named      4002  0.2  1.2 161124 13028 ?        Ssl  09:55   0:00 /usr/sbin/named -u named

通過命令查看我們看到是以name身份運行的,但是我們在複製文件時,文件名時root,如下圖;所以在複製過來以後記得修改文件的權限。

2017-09-20_095035.png

方法一:修改文件的所屬組

[root@localhost named]# chgrp named test.com.zone

方法二:複製模板文件時,直接加“-p”

[root@localhost named]# cp -p named.localhost test.com.zone[root@localhost named]# vim test.com.zone #修改ZONE文件

$TTL 1D
@       IN SOA  dns1 mail.test.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
dns1    A       192.168.4.132

2017-09-20_093930.png

(f)加載zone文件

[root@localhost named]# rndc reload

(g)查看是否可以解析

[root@localhost named]# dig-t ns test.com @192.168.4.132 #在本機測試

2017-09-20_115226.png

在另外一臺機器上測試

修改這臺機器上的DNS 2017-09-20_115354.png

測試

[root@localhost/etc/sysconfig/network-scripts]#dig -t ns test.com @192.168.4.132

2017-09-20_115520.png

(2)搭建從DNS服務器

在主機IP地址爲192.168.4.144搭建從服務器

(a)安裝bind包

(b)編輯/etc/named.conf

2017-09-20_140721.png

(c)編輯配置zone文件/etc/named.rfc1912zones

 zone "test.com" IN {
        type slave;     #修改類型
        masters { 192.168.4.132; }; #主DNS服務器的地址
        file "slaves/test.com.slave.zone";  #從DNS服務文件存放的位置
 };

2017-09-20_140912.png

(d)啓動bind服務,使其生效

[root@localhost~]#systemctl restart named[root@localhost~]#ls /var/named/slaves/test.com.slave.zone

(e)測試

[root@localhost~]#dig www.test.com @192.168.4.144

2017-09-20_141458.png

(3)實現轉發功能

假如一個公司有三臺DNS服務器,A,B,C並且這三臺主機不在同一個位置;A機器可以直接連接互聯網,而B,C不可以直接連接互聯網。用戶使用電腦想訪問www.qq.com,只能通過專線先到C再到A,然後才能訪問www.qq.com,通過C轉發到A。

方式一:全局轉發

2017-09-20_144032.png

(1)分別在CentOS 6和CentOS 7 主機上設置,CentOS 7爲轉發

(A)在CentOS 6主機上配置

[root@localhost ~]# vim /etc/named.conf

2017-09-20_181534.png

[root@localhost ~]# vim /etc/named.rfc1912.zones

zone "test.com" IN {
        type master;
        file "test.com.zone";
};

重啓服務

[root@localhost ~]# service named restart

(B)在CentOS 7主機上配置

[root@localhost~]#vim /etc/named.conf

2017-09-20_182100.png

切記,做這個實驗室一定要關閉dnssec功能;dnssec-enable no; dnssec-validation no。

重啓服務

[root@localhost~]#systemctl restart named

(C)修改客戶端機器的dns

[root@localhost~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33

2017-09-20_182517.png

(D)在客戶端機器上測試

[root@localhost~]#dig www.test.com @192.168.4.148 2017-09-20_182708.png

在這裏給大家提個醒:自己搞這個明明很簡單的搞了一個多小時都沒有成功,原因在於沒有關閉dnssce功能。

方式二:特定區域轉發

在CentOS 主機上配置

[root@localhost~]#vim /etc/named.rfc1912.zones

zone "test.com" IN {          
    type forward;       
    forward first;        
    forwarders {192.168.4.132;};
 };

[root@localhost~]#systemctl restart named #重啓服務

在客戶端主機上測試

2017-09-20_182708.png

(4)實現父域與子域的關係

在前面實驗的基礎上,執行如下操作:

(A)在CentOS 7主機上

[root@localhost~]#vim /etc/named.rfc1912.zones 創建zone

zone "do.test.com" IN {
       type master;
       file "do.test.com.zone"; 
 };

[root@localhost/var/named]#vim do.test.com.zone #配置解析庫

 $TTL 1D
 @       IN SOA  dns1 rname.invalid. (
                                             0       ; serial
                                             1D      ; refresh
                                             1H      ; retry
                                             1W      ; expire
                                             3H )    ; minimum
                    NS      dns1
 dns1           A       192.168.4.148
 webserver   A     192.168.4.148
 www           CNAME   webserver

(B)[root@localhost named]# vim test.com.zone #在CentOS 6主機上修改解析庫 2017-09-20_184101.png

[root@localhost named]# service named restart #重啓服務

(C)重啓服務測試

2017-09-20_185513.png

(5)主從服務器

案例前提:準備4臺虛擬機

(A)CentOS6主機作爲主DNS服務器,同上面的配置類似,這裏就不再闡述。

(B)在CentOS 7兩臺主機上做從DNS服務器,進行如下配置:

[root@localhost ~]# vim /etc/named.conf

2017-09-20_181534.png

[root@localhost~]#vim /etc/named.rfc1912.zones#創建zone

zone "test.com" IN {
      type slave;
      masters {192.168.4.132;};
       file "slaves/test.com.slave.zone";
 };

啓動bind的服務即可以同步到/var/named/slaves目錄下

[root@localhost~]#systemctl restart named[root@localhost~]#ll /var/named/slaves/test.com.slave1.zone

    -rw-r--r--. 1 named named 382 Sep 20 19:08 /var/named/slaves/test.com.slave1.zone

如果主從服務器想指定從DNS服務器,可以在/etc/named.conf配置文件中添加選項 allow-transfer {IP;};

在從服務器上添加“allow-transfer {none;};”在主DNS服務器上“allow-transfer {IP;};”這樣就限制了。

注意:通過以上幾個實驗總結出需要注意的一些地方

1、在做實驗過程中一定要關閉dnssec功能;

2、複製文件/var/named/named.localhost做模板時,一定要加選項“-a”或“-p”選項。複製完成後一定看所有者、所屬組和權限。

五、實戰二

2017-09-20_193605.png

如何實現上述的拓撲圖呢?先從底部網上一步一步的搭建

(1)實現主從DNS服務器

(a)修改主DNS服務器

[root@localhost~]#vim /etc/named.conf #修改主配置文件

2017-09-20_181534.png

[root@localhost~]#vim /etc/named.rfc1912.zones #創建zone

zone "test.com" IN {
         type master;
         file "test.com.zone";
 };

[root@localhost ~]# vim /var/named/test.com.zone #創建解析庫文件

$TTL 1D
@       IN SOA  dns1 test.com. (
                                        2       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      dns1
dns1    A       192.168.4.132
webserver       IN      A       192.168.4.132
www     IN      CNAME   webserver

[root@localhost~]#vim /var/named/named.ca #修改根服務器文件

2017-09-20_195721.png

[root@localhost ~]# service named restart #重啓bind服務

(b)配置從DNS服務器

主配置文件和配置從服務器一樣,這裏就不再闡述[root@localhost~]#vim /etc/named.rfc1912.zones

 zone "localhost" IN {
         type master;
         file "named.localhost";
         allow-update { none; };
 };

[root@localhost~]#systemctl restart named#重啓服務[root@localhost~]#ll /var/named/slaves/test.com.slave.zone #查看是否成功

(2)配置子域

[root@localhost~]#vim /etc/named.rfc1912.zones #創建zone

zone "com" {
         type master;
       file "com.zone";
 };

[root@localhost~]#vim /var/named/com.zone #創建解析庫

  $TTL 1D
 @       IN SOA  dns1 rname.invalid. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                        3H )    ; minimum
         NS      dns1
 test    NS      dns2
 dns1    A       192.168.4.147
 dns2    A       192.168.4.132
 www     A       192.168.4.66

[root@localhost~]#systemctl restart named #重啓bind服務

2017-09-20_212355.png

(3)根

[root@localhost~]#vim /etc/named.rfc1912.zones

 zone "." IN {
          type master;
         file "root.zone";
 };

刪除配置文件中/etc/named.conf如下內容 2017-09-20_204827.png

[root@localhost/var/named]#vim root.zone #創建解析庫

   $TTL 1D
   @       IN SOA  dns1 rname.invalid. (
                                           0       ; serial
                                           1D      ; refresh
                                           1H      ; retry
                                           1W      ; expire
                                           3H )    ; minimum
           NS      dns1
   com     NS      dns2
  dns1    A       192.168.4.146
  dns2    A       192.168.4.147

[root@localhost/var/named]#systemctl restart named重啓服務

2017-09-20_212932.png

這樣我們搭建完成了。是否是很有成就感呢?哈哈。當大家看到這裏的時候是不是發現我們沒有對從DNS服務器做設置呢?如果主DNS掛了,那麼從DNS能工作麼?下面我們就來說道說道。

假設主DNS服務器down(IP 192.168.4.132 )

[root@localhost ~]# ifconfig eth0 down #將主DNS服務器down掉

[root@localhost ~]# rndc flush #清除主DNS服務器的緩存

在Client客戶機測試 (IP 192.168.4.149)

[root@localhost~]#dig www.test.com @192.168.4.147

2017-09-21_194440.png

如圖所示,沒有解析成功,說明我們的從DNS服務器沒有起作用,沒有實現負載均衡作用。有沒有想過爲什麼出現這種情況呢?因爲我們沒有在com域中沒有添加這條域,下面我們在com域中添加此從DNS服務器的dns記錄測試

在com域中添加如下記錄

[root@localhost/var/named]#vim com.zone 
2017-09-21_194536.png

[root@localhost/var/named]#rndc flush #清除緩存

在client客戶機上測試

[root@localhost~]#dig www.test.com @192.168.4.148 2017-09-21_195643.png

這樣說明我們從DNS服務器起到了,達到了容錯功能。是不是有點小小的成就感呢?

六、DNS的管理功能

你是不是有這樣的想法,只想讓某個IP或者某個IP端的地址進行訪問,實現訪問控制功能。DNS服務給我們提供了很好的解決方法。

1、選項

allow-query {};允許查詢的主機,相當於白名單
allow-transfer {};允許區域傳送的主機
allow-recursion{};允許遞歸的主機,這個選項建議在options中使用
allow-update{};允許更新區域數據庫中的內容

2、acl

acl:是把某個IP或IP端合併爲一個集合,通過一個統一的名稱調用;可以把這個理解爲bash函數的功能。

(1)acl內置的選項

none沒有一個主機
any任意主機
localhost本機
localnet本機的IP同掩碼運算後得到的網絡地址

注意:acl只能先定義再使用;建議一般定義再options的前面。

(2)示例

[root@localhost ~]# vim /etc/named.conf

2017-09-21_202629.png

重新啓動服務然後在本機測試[root@localhost ~]# dig www.test.com @127.0.0.1

2017-09-21_202925.png

由於我們設置了acl功能,所有本機也不能訪問了。實現我們的預期效果。

七、view

大家小時候去網吧的時候有沒有遇到這樣一個問題,如果你玩問道在電信1玩,而你的網絡是聯通的網絡,這樣開始玩遊戲的過程中,我們的屏反應會遲鈍,頻很高;但是網絡提供一個網絡轉換程序,如果你切換到電信網絡,問道遊戲運行流暢;這相當於我們這裏view的功能。實現只能DNS解析,不過不需要我們手動切換網絡。

(1)一個bind服務器可以定義多個view;每個view可以定義多個zone。每個view匹配一組客戶端。

(2)如果多個view對同一個zone進行解析時,使用不同的zone解析庫文件。

實戰

如果我們在北京和廣州有兩臺DNS服務器,北京和廣州用戶通過訪問www.test.com的時候,我希望北京訪問直接在北京DNS解析並返回,廣州與它相同,如何實現嗯?

在一臺由於我電腦有兩個不同的IP段,在一臺機器上實現這個功能

(a)修改/etc/named.conf文件

2017-09-21_212202.png2017-09-21_212250.png

(b)創建/etc/named.rfc1912.zones.test/etc/named.rfc1912.zones.app分別修改

2017-09-21_212508.png

2017-09-21_212553.png

(3)創建zone文件/var/named/app.com.zone/var/named/app.com.zone分別修改

2017-09-21_212818.png

2017-09-21_212852.png

(4)重啓dns服務 [root@localhost named]# service named restart

在Clinet客戶機上測試(IP 192.168.4.148和172.18.253.86)

2017-09-21_213117.png

2017-09-21_213211.png

噹噹噹,成功!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章