Linux學習筆記之   DNS原理介紹、DNS搭建、主從複製、子域授權和視圖

相關理論介紹


什麼是DNS?

DNS( Domain Name System)是“域名系統”的英文縮寫,是因特網的一項服務,它作爲將域名和IP地址相互映射的一個分佈式數據庫,能夠使人更方便的訪問互聯網。DNS 使用TCP和UDP端口53。當前,對於每一級域名長度的限制是63個字符,域名總長度則不能超過253個字符。


DNS域名空間:

整個DNS架構是一顆倒置的樹狀層次結構,這個樹狀結構稱爲DNS域名空間(DNS domain namespace)。自頂而下依次是根域,頂級域,二級域,其種二級域是供公司和個人申請使用。

FQDN:(Full Qualified Domain Name)完全合格限定域名,是指包含全路徑的主機名(列出了所有域),保證可以在DNS空間中準確定位主機,也就是主機名的一種完全表示形式。


DNS軟件:實現DNS服務的程序

BIND:Berkely Internet Name Domain ,ISC (www.isc.org) ,使用最廣方的DNS軟件

DNS服務器:域名服務器是指保存有該網絡中所有主機的域名和對應IP地址,並具有將域名轉換爲IP地址功能的服務器。

解析類型:

Name-->IP 正向解析

IP-->Name 反向解析

注意:正反向解析是完全不同的兩顆解析樹,不必在同一個服務器上,正反向區域記錄也沒必要完全對應


DNS查詢模式:

遞歸(Recursion):一次詢問就要得到結果的查詢方式,客戶端本地指向的DNS服務器,多工作在此種模式,它收到客戶端請求後,會全權負責代替客戶端去做解析,知道得到答案回覆給客戶端。

迭代(Interactive):每次查詢得到的是一個相對答案,需要多次詢問,才能得到最終答案,互聯網上DNS之間的查詢模式多是迭代查詢。每個DSN只專門負責自己改解析的區域。


主DNS服務器:維護所負解析的域內解析庫服務器;解析庫由管理員維護

從 DNS服務器:從主DNS服務器或其它DNS服務器那裏"複製"(區域傳遞)一份解析庫

序列號:解析庫的版本號,前提,任何時候,主服務器解析庫發生變化,其序列遞增

刷新時間:從服務器從主服務器請求同步的時間間隔

重試時長:從服務器請求同步失敗時,再次嘗試的時間間隔(小於刷新間隔)

過期時長:從服務器始終聯繫不上主服務器時候,多久之後放棄服務器角色,停止提供服務

"通知"機制:即便下次同步時間沒到,如果主服務器記錄有變更,會主動通知從服務器過來同

步數據區域傳送:

全量傳送:傳遞整個解析庫

增量傳送:傳送解析庫變化的那部分內容

區域解析庫:由衆多資源記錄組成


資源記錄:Resource Record (RR)

記錄類型:A, PTR, SOA, NS, CNAME, MX...

SOA: Start Of Authority, 起始授權記錄,一個區域解析庫有且僅有一個SOA記錄,且必須爲解析庫的第一條記錄

A: Internet Address,作用 FQDN-->IP

AAAA: FQDN-->IPV6

PTR: PoinTeR, IP-->FQDN

NS: Name Server, 專用於標明當前區域的DNS服務器

CNAME: Canonical Name,別名記錄

MX: Mail Exchanger, 郵件交換器,標明當前域內誰是郵件服務器


資源記錄定義的格式:

語法:name    [TTL]    IN    RR_type    value

注意:

1.TTL可以全局集成,TTL是指允許其他服務器將數據在緩存中存放TTL 所指定的時間。如果你的數據不是經常變動或變動不大,可以考慮將TTL默認

值設爲幾天

2.@可用於引用當前區域的名字

3.同一個名字可以通過多條記錄定義多個不同的值;此時DNS服務器會以輪詢方式響應

4.同一個值也可能有過個不同的定義名字,通過多個不同的名字指向同一個值定義,僅表示通過多個不同的名字找到同一個主機

注:爲了方便描述,下文所用到的 hsp.com. 是一個虛擬的域名


SOA:(Satart Of Authorization 起始授權記錄)


name: 當前區域的名字,例如“hsp.com.”

value: 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字

1.當前區域的主DNS服務器FQDN,也可以使用當前區域的名字

2.當前區域的管理員的郵箱地址,但郵箱地址中不可使用@,一般用.替換,如admin.hsp.com

3.(主從服務協調的屬性以及否定的答案的統一的TTL)

如:

hsp.com.86400IN SOA ns.hsp.com. nsadmin.hsp.com. (

201509100;序列號

2H;刷新時間

10M;重試時間

1W    ;過期時間

1D    ;否定答案的TTL值

)


NS:Name Server


name:當前區域的名字

value:當前區域的某DNS服務器的名字,例如:ns.hsp.com.

注意:一個區域可以有多個NS記錄

例如:

hsp.com.IN NS ns1.hsp.com.

hsp.com.IN NS  ns2.hsp.com.

注意:

1.相鄰的兩個資源記錄的name相同時,後續的可省略,上述示列中第二行的name hsp.com. 可以省略不寫

2.對NS記錄而言,任何一個ns記錄後面的服務器名字,都應該在後續有一個A記錄


MX: Mail Exchanger


name:當前區域的名字

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

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

例如:

hsp.com.IN MX   10 mx1.hsp.com.

IN MX 20 mx2.hsp.com.

注意:

1.對於MX記錄而言,任何一個MX記錄後面的服務器名字,都應在後續有一個A記錄 


A:Address


name:某主機的FQDN名,如www.hsp.com.

value:主機名對應的主機的IP地址

例如:

www.hsp.com.IN A 1.1.1.1

www.hsp.com.IN A1.1.1.2

mx1.hsp.com.IN A 1.1.1.3

mx2.hsp.com.IN A 1.1.1.3

        注:一下兩種書寫代表泛域名解析,避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析至某特定地址

*IN A 1.1.1.4

hsp.com.IN      A    1.1.1.4


AAA: IPv6的A紀錄

name:FQDN

value:IPv6,同上,只是IP地址是IPv6格式的地址


PRT:


name:IP地址,遵循固定格式,IP地址需反向書寫,1.2.3.4 要寫做4.3.2.1,且特定後綴是in-addr.arpa.,完整寫法爲4.3.2.1-in-addr.arpa.

value:FQDN

例如:

4.3.2.1.in-addr.arpa.IN PRT www.hsp.com.

簡寫成:4IN PTR www.hsp.com.

注意:網絡地址及後綴可以省略,主機地址依然需要反向書寫


CNAME:


name:別名的FQDN

value:正式名字的FQDN

如下配置:如果訪問www.hsp.co.cn ,則會被引導至www.hsp.com.

www.hsp.com.cn IN CNAME www.hsp.com.



實驗目標:搭建DNS服務器,實現正向,反向解析,及DNS服務器主從複製功能 ,子域授權,視圖。

實驗環境:

1.主機S1 IP地址爲:172.17.0.10   

  主機S2 IP地址爲:172.17.0.30

  主機S7 IP地址爲: 172.17.0.20

wKiom1YLUUahd51hAAFom8QsR2c799.jpg


實驗步驟:

首先在S1上實現緩存服務器設置



一:檢查bind軟件包有無安裝如下軟件包,如果沒有,使用yum install安裝

~]$rpm -qa bind*
bind-libs-9.8.2-0.37.rc1.el6.x86_64        #庫文件
bind-9.8.2-0.37.rc1.el6.x86_64            #bind 程序
bind-utils-9.8.2-0.37.rc1.el6.x86_64        #工具包
bind的相關文件路徑:
/etc/named.conf  #主配置文件
/etc/named.rfc1912.zones  #區域配置文件
/var/named  #保存區解析庫文件的目錄


二:編輯主機S1的bind的配置文件(etc/named.conf,/etc/named.rfc1912.zones)

       配置文件中可以使用//或/*   */ 來註釋
options {                Opions 裏定義的全局配置,會對所有區域生效,如監聽端口扥等                           
//      listen-on port 53 { 127.0.0.1; };          #監聽的網卡,註釋掉代表監聽主機上所有網卡                                                           
//      listen-on-v6 port 53 { ::1; };
        directory       "/var/named";           
        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; };          #允許查詢的客戶端,可以使用any ;none;localhost,IP等來做限制
        recursion yes;      #是否認允許給客戶端遞歸查詢,本地DNS這個一定要開啓                                
        dnssec-enable no;    #dnssec 安全相關的高級配配置,關閉dnssec功能
        dnssec-validation no;  #dnssec 安全相關的高級配置,關閉dnssec功能
//      dnssec-lookaside auto;
        /* Path to ISC DLV key */
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
        type hint;   #hint 是根區域類型, 可選類型有hint|master|slave 分別代表根區域|主區域|從區域
        file "named.ca";   #區域解析庫文件
};
include "/etc/named.rfc1912.zones";  #代表會讀取/etc/named.rfc1912.zones中定義的區域文件
//include "/etc/named.root.key";
]#named-checkconf   #檢查配置文件是否有語法錯誤,沒有任何輸出則代表語法正確
[root@S1 ~]# service named start  #嘗試啓動bind 服務
Generating /etc/rndc.key:                              [  OK  ]
Starting named:                                     [  OK  ]
 
[root@S1 ~]# ss -tuan | grep 53    #檢查默認端口53有沒有正常監聽
udp    UNCONN     0      0            172.17.0.10:53                    *:*  
...省略了其它不相關的N行輸出
  注:至此,S1 server 172.17.0.10 已經可以作爲一個緩存服務器工作。


三:修改主機S1的區域配置文件 (/etc/named.rfc1912.zones),添加如下zone

zone "hsp.com" IN {
        type master;
        file "hsp.com.zone";
        allow-update { none; };
};
]$named-checkconf  #檢查配置文件是否有語法錯誤
四:創建區正向解析庫文件
]$cd /var/named/
[root@S1 named]# vim hsp.com.zone  #創建區域數據文件hsp.com.zone,文件內容如下
[root@S1 named]# chmod 640 hsp.com.zone     #修改權限爲640
[root@S1 named]# chown .named hsp.com.zone     #改變屬組爲named
[root@S1 named]# ll hsp.com.zone    #驗證權限和屬組
-rw-r----- 1 root named 374 Sep 20 21:57 hsp.com.zone
   
[root@S1 named]# named-checkzone "hsp.com" hsp.com.zone   #檢查區域數據文件是否有語法錯誤
zone hsp.com/IN: loaded serial 3940705495
OK
[[email protected] /var/named]$chown :named hsp.com.zone   #修改hsp.com.zone的屬組爲named(因named服務會以named用戶來運行服務)
[email protected] /var/named]$ll hsp.com.zone   #驗證文件權限爲640,屬組爲named
-rw-r----- 1 root named 330 Sep 17 00:02 hsp.com.zone
[[email protected] /var/named]$service named start  #啓動named服務
Starting named:             [  OK  ]
[root@S1 named]# host -t A ns1.hsp.com 172.17.0.10    #使用host 命裏測試能否成功正向解析ns1.hsp.com,
Using domain server:
Name: 172.17.0.10
Address: 172.17.0.10#53
Aliases: 
ns1.hsp.com has address 172.17.0.10    #對照hsp.com.zone數據文件,可知解析成功
#同理,解析mx1.hsp.com,對照hsp.com.zone文件,可知解析成功
[root@S1 named]# dig -t  A mx1.hsp.com. 172.17.0.10
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A mx1.hsp.com. 172.17.0.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14750
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;mx1.hsp.com.INA
;; ANSWER SECTION:
mx1.hsp.com.86400INA172.17.0.40      #此處可見解析成功
;; AUTHORITY SECTION:
hsp.com.86400INNSns1.hsp.com.
hsp.com.86400INNSns2.hsp.com.
;; ADDITIONAL SECTION:
ns1.hsp.com.86400INA172.17.0.10
ns2.hsp.com.86400INA172.17.0.30
;; Query time: 3 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Mon Sep 21 00:15:18 2015
;; MSG SIZE  rcvd: 113
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 45733
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;172.17.0.10.INA
;; AUTHORITY SECTION:
.10783INSOAa.root-servers.net. nstld.verisign-grs.com. 2015092000 1800 900 604800 86400
;; Query time: 3 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Mon Sep 21 00:15:18 2015
;; MSG SIZE  rcvd: 104
測試泛域名解析:
[root@S1 named]# host -t A 88.hsp.com 172.17.0.10    #嘗試正向解析不存在的主機88.hsp.com
Using domain server:
Name: 172.17.0.10
Address: 172.17.0.10#53
Aliases: 
88.hsp.com has address 172.17.0.99   #解析到了172.17.0.99 ,正是在區域文件的添加的泛域名解析的IP,所以成功。


注:至此主DNS正向解析成功完成 ;接下來,將在S1上創建反向解析區域和解析庫文件。

]$vim /etc/named.rfc1912.zones    #修改區域配置文件,在文件末尾添加如下反向解析區域"0.17.172.in-addr.arpa"
zone "0.17.172.in-addr.arpa" IN {
        type master;
        file "0.17.172.zone";
};    
~]$cd /var/named/
[root@S1 named]# vim 0.17.172.zone    #創建如下反向解析文件

wKiom1YLU_DR41chAAEJpOV_qIQ297.jpg

[root@S1 named]# chmod 640 0.17.172.zone     #修改權限爲640
[root@S1 named]# chown .named 0.17.172.zone     #修改其屬組爲named
[root@S1 named]# ll 0.17.172.zone     #驗證權限,屬組修改成功
-rw-r----- 1 root named 347 Sep 21 00:31 0.17.172.zone
[root@S1 named]# named-checkzone "0.17.172.in-addr.arpa" 0.17.172.zone     #檢查反向解析文件有無語法錯誤
zone 0.17.172.in-addr.arpa/IN: loaded serial 3940705495
OK
[root@S1 named]# rndc reload        #重新加載配置文件
server reload successful
[root@S1 named]# dig -x 172.17.0.40 @172.17.0.10    #反向解析IP 172.17.0.40
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 172.17.0.40 @172.17.0.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3858
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;40.0.17.172.in-addr.arpa.INPTR
;; ANSWER SECTION:
40.0.17.172.in-addr.arpa. 86400INPTRmx1.hsp.com.    #解析正確
;; AUTHORITY SECTION:
0.17.172.in-addr.arpa.86400INNSns1.hsp.com.
;; ADDITIONAL SECTION:
ns1.hsp.com.86400INA172.17.0.10
;; Query time: 1 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Wed Sep 30 02:00:21 2015
;; MSG SIZE  rcvd: 101
也可以使用nslookup 來做測試:
[root@S1 named]# nslookup
> 172.17.0.10    #指定DNS服務器
Server:172.17.0.10
Address:172.17.0.10#53
10.0.17.172.in-addr.arpaname = ns1.hsp.com.
10.0.17.172.in-addr.arpaname = www.hsp.com.0.17.172.in-addr.arpa.
> 172.17.0.40
Server:172.17.0.10
Address:172.17.0.10#53
40.0.17.172.in-addr.arpaname = mx1.hsp.com.         #解析成功

至此,主DNS服務器正反向解析成功


小結一下以上測試用到過的的命令有dig, nslook,host


dig [-t type] name [@SERVER] [query options]

dig用於測試dns系統,因此,不會查詢hosts文件進行解析;
   查詢選項:
+[no]trace:跟蹤解析過程
        +[no]recurse:進行遞歸解析
測試反向解析:
        dig -x IP @SERVER
模擬區域傳送:
        dig -t axfr ZONE_NAME @SERVER
[root@S2 slaves]# dig -t axfr hsp.com @172.17.0.10   #可傳送整個解析區域
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t axfr hsp.com @172.17.0.10
;; global options: +cmd
hsp.com.86400INSOAns1.hsp.com. admin.hsp.com. 3940705495 7200 600 604800 86400
hsp.com.86400INNSns1.hsp.com.
hsp.com.86400INMX10 mx1.hsp.com.
*.hsp.com.86400INA172.17.0.99
ftp.hsp.com.86400INCNAMEwww.hsp.com.
mx1.hsp.com.86400INA172.17.0.40
ns1.hsp.com.86400INA172.17.0.10
www.hsp.com.86400INA172.17.0.10
hsp.com.86400INSOAns1.hsp.com. admin.hsp.com. 3940705495 7200 600 604800 86400
;; Query time: 2 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Thu Sep 24 22:23:30 2015
;; XFR size: 9 records (messages 1, bytes 229)

host命令:

host [-t type] name [SERVER]

[root@S2 slaves]# host -t A www.hsp.com 172.17.0.10
Using domain server:
Name: 172.17.0.10
Address: 172.17.0.10#53
Aliases: 
www.hsp.com has address 172.17.0.1

nslookup命令:

nslookup [-option] [name | -] [server]
交互式模式:
nslookup>
server IP: 指明使用哪個DNS server進行查詢;
set q=RR_TYPE: 指明查詢的資源記錄類型;
NAME: 要查詢的名稱;

然後實現從DNS服務器配置

一:如上文創建主DNS服務器時一樣,編輯主配置文件/etc/named.conf, 註釋掉不需要的配置,關閉dnssec等等。


二:編輯/etc/named/named.rfc ,添加如下兩個區域文件:

zone "hsp.com" IN {
        type slave;            #類型爲slaves
        masters {172.17.0.10;};    #指定它的主DNS服務器
        file "slaves/hsp.com.zone";    #路徑必須在slaves下,區域名和主DNS中的區域名必須對應
};
zone "0.17.172.in-addr.arpa" IN {
        type slave;    #類型爲slaves
        masters {172.17.0.10;};    #指定它的主DNS服務器
        file "slaves/0.17.172.zone";    #路徑必須在slaves下,區域名和主DNS中的區域名必須對應
};


三:啓動named 服務

[root@S2 slaves]# named-checkconf    #檢查配置文件有無語法錯誤,沒有任何輸出代表語法正確
[root@S2 slaves]# service named restart    #重啓named服務
Stopping named:                                         [  OK  ]
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                         [  OK  ]
[root@S2 slaves]# ls #可以發現區域文件已經自動傳送過來了
0.17.172.zone  hsp.com.zone
[root@S2 slaves]# host -t A www.hsp.com 172.17.0.30    #正解www.hsp.com
Using domain server:
Name: 172.17.0.10
Address: 172.17.0.10#53
Aliases: 
www.hsp.com has address 172.17.0.10    #正解成功
[root@S2 slaves]# host -t PTR ftp.hsp.com 172.17.0.30    #通過從DNS服務器正解ftp.hsp.com
Using domain server:
Name: 172.17.0.30
Address: 172.17.0.30#53
Aliases: 
ftp.hsp.com is an alias for www.hsp.com.


四:驗證主從同步功能,主DNS服務器S1的修改,能否自動傳送到從DNS服務器S2

修改主DNS服務器,添加一條A記錄 172.17.0.66,並將版本號+1

wKioL1YLVprDXSbXAAGGdmnQEvU188.jpg

[root@S1 named]# rndc reload
server reload successful
#tail /var/log/messages    #查看系統日誌

wKiom1YLVrbjGucyAAQLBYvQrmA324.jpg


查看DNS服務器區域文件是否有剛剛添加的新記錄

wKioL1YLV5DwD5EHAAIS-siR688568.jpg

至此: 主從,同步完成。



創建子域並實現子域授權:


此時將創建子域ops.hsp.com,並將S7作爲子域的DNS服務器

S7  172.17.0.20


一:創建子域ops.hsp.com DNS服務器

[root@s7 named]# vim /etc/named.rfc1912.zones   #創建如下區域
zone "ops.hsp.com" IN {
        type master;
        file "ops.hsp.com.zone";
};
[root@s7 named]# named-checkconf #檢查配置文件語法
[root@s7 named]# vim /var/named/ops.hsp.com.zone    #區域解析庫文件內容如下

wKioL1YLWHzxNF4hAADGd-Qa160052.jpg

[root@s7 named]# named-checkzone "ops.hsp.com" ops.hsp.com.zone #檢查解析庫文件語法
zone ops.hsp.com/IN: loaded serial 2015092000
OK
[root@s7 named]# systemctl restart named.service    #重啓服務
[root@s7 named]# systemctl status named.service     #查看服務狀態
named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled)
   Active: active (running) since Mon 2015-09-21 18:37:43 CST; 11s ago....
...此處略去N行輸出信息...
www.ops.hsp.com has address 172.17.0.23
[root@s7 named]# host -t A ns1.ops.hsp.com 172.17.0.20
Using domain server:
Name: 172.17.0.20
Address: 172.17.0.20#53
Aliases: 
ns1.ops.hsp.com has address 172.17.0.20

二:驗證能否解析子域本身

[root@s7 named]# host -t A www.ops.hsp.com 172.17.0.20    #可以解析ops區域
Using domain server:
Name: 172.17.0.20
Address: 172.17.0.20#53
Aliases: 
www.ops.hsp.com has address 172.17.0.23

三:在主DNS服務器S1授權子域ops.hsp.com 

如下圖所示,在主DNS服務器上添加

wKiom1YLWkGD1ZhCAAHKs3t6z9Q603.jpg

四:在主DNS服務器測試能否解析子域

[root@S1 named]# dig -t A ns1.ops.hsp.com @172.17.0.10
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A ns1.ops.hsp.com @172.17.0.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1483
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;ns1.ops.hsp.com.INA
;; ANSWER SECTION:
ns1.ops.hsp.com.86099INA172.17.0.20     #成功解析
;; AUTHORITY SECTION:
ops.hsp.com.86099INNSns1.ops.hsp.com.
;; Query time: 4 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Wed Sep 30 03:14:38 2015
;; MSG SIZE  rcvd: 63

五:測試在子域能否解析父域

[root@s7 named]# dig -t A ftp.hsp.com @172.17.0.20
; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -t A ftp.hsp.com @172.17.0.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33341
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ftp.hsp.com.INA
;; ANSWER SECTION:
ftp.hsp.com.86400INCNAMEwww.hsp.com.        #解析成功
www.hsp.com.85911INA172.17.0.10
;; AUTHORITY SECTION:
hsp.com.85911INNSns1.hsp.com.
;; ADDITIONAL SECTION:
ns1.hsp.com.85911INA172.17.0.10
;; Query time: 145 msec
;; SERVER: 172.17.0.20#53(172.17.0.20)
;; WHEN: Wed Sep 30 03:15:41 CST 2015
;; MSG SIZE  rcvd: 108

視圖


Bind View:爲了實現來自不同區域的客戶,解析到不同的之地址,返回到不同的結果

試圖:

一個bind服務器可以定義多個view,每個view中可以定義一個或多個zone 每個view用來匹配一組客戶端

多個view內可能需要對同一個區域進行解析,但使用不同區域解析庫文件

view VIEW_NAME {

match-clients {};

}

注意:

1.一旦啓用了view,使用zone都只能定義在view中

2.僅有必要在匹配到允許遞歸請求的客戶所在的view中定義根區域

3.客戶端請求到達時,是自上而下


利用視圖,實現分離解析:(不同客戶端請求解析同一主機,得到不同的解析結果)


重新規劃S1,S2的IP地址如下圖所示

S1有兩張網卡,地址分別爲192.168.1.110,172.17.0.10

S2IP地址爲192.168.1.111

wKiom1YLXCzjU407AAO5JcuG0ko092.jpg

wKioL1YLXDmhholcAANL9fYZzAs281.jpg


期望172.17網段客戶機和其它網段客戶機對www.hsp.com解析出不同結果

一:先在主配置文件中定義一個acl方便後續使用

wKiom1YLXOqjdagjAAK0pgcD8rA368.jpg

二:創建視圖internal,external

view internal {                #視圖internal的起始標記
        match-clients { mynet; };                
        allow-recursion { mynet; };        
zone "." IN {   #所有需要查詢的ZONE,都必須放置於視圖中,所有,將/etc/named.conf 中的根區域移動至此處
        type hint;
        file "named.ca";
};
zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
zone "hsp.com" IN {
        type master;
        file "hsp.com.zone";
zone "0.17.172.in-addr.arpa" IN {
        type master;
        file "0.17.172.zone";
        notify yes;
        also-notify {172.17.0.30;};
};
};        #視圖internal的結束標記 
view external {        #視圖external,用來爲S2 192.168.1.111提供單獨解析,因爲其IP並不會被上面internal 中的acl匹配到,所以用此視圖中的區域解析庫文件
        match-clients { any; };
        zone "hsp.com" in {
        type master;
        file "hsp.com.external";    #單獨的及解析庫文件
        allow-update { none; };
};
};
[
root@S1 named]# named-checkconf     #檢查語法


[root@S1 named]# cp -a  hsp.com.zone hsp.com.external   #複製原解析庫作爲模板
並做如下修改

wKioL1YLXnrgxLf4AAHmXhM6xA8695.jpg

[root@S1 named]# rndc reload    #重載配置文件
server reload successful

三:驗證解析結果

[root@S2 ~]# dig -t A music.hsp.com @192.168.1.110
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t A music.hsp.com @192.168.1.110
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18864
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;music.hsp.com.INA
;; ANSWER SECTION:
music.hsp.com.86400INA172.17.0.166  #它用的hsp.com.external庫文件解析的,實驗成功
;; AUTHORITY SECTION:
hsp.com.86400INNSns1.hsp.com.
;; ADDITIONAL SECTION:
ns1.hsp.com.86400INA172.17.0.10
;; Query time: 5 msec
;; SERVER: 192.168.1.110#53(192.168.1.110)
;; WHEN: Wed Sep 30 04:54:35 2015
;; MSG SIZE  rcvd: 81
[root@s7 ~]# dig -t A music.hsp.com @172.17.0.10
; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -t A music.hsp.com @172.17.0.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4712
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;music.hsp.com.INA
;; ANSWER SECTION:
music.hsp.com.86400INA172.17.0.66 #解析出來的仍舊是172.17.0.66,因爲它被Internal view匹配到了
;; AUTHORITY SECTION:
hsp.com.86400INNSns1.hsp.com.
;; ADDITIONAL SECTION:
ns1.hsp.com.86400INA172.17.0.10
;; Query time: 5 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Wed Sep 30 05:00:43 CST 2015
;; MSG SIZE  rcvd: 92


補充:


bind中基礎的安全相關的配置:

acl:把一個或多個主機歸併爲一個集合,並通過一個統一的名稱調用:

acl acl_name {

ip;

ip

net/prelen;

};

示列:

acl mynet {

172.17.0.0/16;

};


bind 有四個內置的acl;

none:沒有一個主機

any:任意主機

local:本機

localnet:本機的IP同掩碼運算後得到的網絡地址

注意:acl 只能先定義後使用,因此,其一般定義在配置文件的options前面

訪問控制的指令

allow-query {}: 允許查詢的主機,白名單,如果不指定主機,所有被拒接

allow-transfer {}: 允許區域傳送的主機,白名單,如果不指定主機,所有被拒接

allow-recursion {}:允許遞歸的主機

allow-update {}: 允許更新的主機,比較危險,一般情況是拒絕所有 allow-update {none}

注:訪問控制指令放在zone 中,只對zone生效,如果放在options中,對所有zone生效

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