DNS配置詳解(一)bind實現正向解析和反向解析

DNS是域名服務(Domain Name Service),負責把域名解析成IP地址(正向解析)或者把IP地址解析爲域名(反向解析)。


DNS查詢過程

假設我們要訪問www.abc.com,dns解析請求會發送給我們配置dns服務器,如果當前已有緩存則直接把結果返回給我們的終端,如果沒有則向dns的根查詢負責解析.com的服務器的IP,找到負責.com域的服務器後再向其查詢負責abc.com這個域的服務器的IP,得到結果後再向其查詢www.abc.com的IP地址,查詢到結果後再返回給我們。

    在這個過程中,我們只需要向我們指向的dns發起一次dns請求,他就會把最終的結果返回給我們,這個過程稱爲遞歸查詢,而當其緩存中沒有我們要查詢的記錄時,他需要一級一級的分別向根,.com, abc.com查詢,每一次的查詢請求都是他自己發起的,這個過程稱爲迭代查詢

由於abc.com這個域的解析不是由我們指向的dns服務器負責的,所以他返回給我們的答案爲非權威應答,而他通過迭代從負責abc.com的dns服務器查詢到的結果則爲權威應答


在互聯網上總共有13個根服務器,在linux系統上可以dig -t NS .查看

[root@bob ~]# dig -t NS . | awk '$4=="A" {print $0}'
d.root-servers.net.	5	IN	A	199.7.91.13
b.root-servers.net.	5	IN	A	192.228.79.201
a.root-servers.net.	5	IN	A	198.41.0.4
c.root-servers.net.	5	IN	A	192.33.4.12
j.root-servers.net.	5	IN	A	192.58.128.30
f.root-servers.net.	5	IN	A	192.5.5.241
k.root-servers.net.	5	IN	A	193.0.14.129
l.root-servers.net.	5	IN	A	199.7.83.42
e.root-servers.net.	5	IN	A	192.203.230.10
g.root-servers.net.	5	IN	A	192.112.36.4
i.root-servers.net.	5	IN	A	192.36.148.17
m.root-servers.net.	5	IN	A	202.12.27.33
h.root-servers.net.	5	IN	A	128.63.2.53

DNS資源記錄類型:   

   FQDN --> IP           A    IPv4 FQDN(Fully Qualified Domain Name)

   FQDN --> IP           AAAA IPv6

   Domain --> DNS Server NS 

   Domain --> Master DNS SOA(Start Of Authority)起始授權記錄:準確說明誰是主dns服務器,主輔之間如何同步

   FQDN --> FQDN         CNAME(Canonical Name)   別名記錄

   Domain --> Mail Server MX (Mail eXchanger) 郵件服務器,有優先級,0-99,數字越小,優先級越高

   IP --> FQDN            PTR(Pointer)     反向解析記錄


  正向解析和反向解析使用不同的名稱解析庫,每一個名稱解析庫叫做一個zone(區域)

  正向解析的根是 .(一個點)

  反向解析的根是 .in-addr.arpa.

  

DNS安裝配置

  1. 作爲DNS緩存服務器

    1. 全球使用最廣泛的dns服務器軟件bind,由www.isc.org維護,同時dhcp軟件也由他維護,可以去官網下載軟件源碼和文檔

    2. 安裝過程很簡單 yum install -y bind

    3. 主配置文件/etc/named.conf,默認配置是監聽在127.0.0.1上的且只允許本機查詢,只需要更改爲主機的對外地址或者直接註釋(監聽在所有網絡接口、允許所有主機查詢),啓動服務就可作爲一臺DNS緩存服務器了。

    4. bind9是C語言寫的,配置文件也是C語言風格,// 是註釋符,每個語句結束要加;分號,bind10據說用C++和Python寫的,options段定義的是全局參數


    5. //      listen-on port 53 { 127.0.0.1; };
      //      listen-on-v6 port 53 { ::1; };
      //      allow-query     { localhost; };
    6. rpm包給我們提供了啓動腳本named, service named start即可


  2. 配置正向解析

    1. 在named.conf中

directory       "/var/named";    
include "/etc/named.rfc1912.zones";

編輯named.rfc1912.zones添加以下內容以增加對域bob.org的管理

  1. zone "bob.org" IN {
    	type master;    // 類型爲主服務器
    	file "bob.org.zone";    // 指定資源解析庫存放位置,這個路徑是相對
    // named.conf中定義的directory的,即實際位置爲/var/named/bob.org.zone
    };


  2. 創建文件/var/named/bob.org.zone添加以一內容

  3. $TTL 43200;  // 這裏可以定義全局變量,如果沒有定義TTL則繼承這裏的43200單位秒 
    // 第一條記錄必須爲SOA記錄
    bob.org./*區域名稱,可以寫成@直接引用當前區域名稱*/	86400/*TTL,可不定義,會直接繼承全局的*/	
    IN /*Internet,固定格式*/	SOA /*記錄類型*/	ns.bob.org. /*主服務器的FQDN*/	
    admin.bob.org /*管理員郵箱,因爲@有特殊意義用點代替*/	
    $TTL 43200;
    @    86400    IN    SOA    ns.bob.org.    admin.bob.org (
    		201410070001; //serial number序列號
    		1h;    // refresh time 主輔之間刷新時間
    		5m;    // retry time 拉取信息不成功的重試時間
    		7d;    // expire time 過期時間,過期後輔服務器也將放棄解析
    		1d; )  // 否定答案的TTL
    		
    @/*引用當前域名,可省略*/	IN	NS	ns.bob.org. 
    	IN	MX	10	mail1.bob.org.
    	IN	MX	20	mail2 /*相當於mail2.bob.org.*/
    ns	IN	A	172.16.100.10
    www	IN	A	172.16.100.11
    webmail IN	CNAME	mail2
    mail1.bob.org.	IN	A	172.16.100.12	
    mail2.bob.org.	IN	A	172.16.100.13
  4. [root@localhost named]# named-checkconf  // 檢查配置文件
    [root@localhost named]# chown :named /var/named/bob.org.zone
    [root@localhost named]# named-checkzone "bob.org" "/var/named/bob.org.zone"
    // 檢查區域文件是否正確 
    zone bob.org/IN: loaded serial 3841574385
    OK
  5. [root@localhost named]# dig -t NS bob.org @172.16.100.10     // 測試是否可解析
    
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t NS bob.org @172.16.100.10
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34365
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    // 標誌aa(authority answer)權威答案
    ;; QUESTION SECTION:
    ;bob.org.			IN	NS
    
    ;; ANSWER SECTION:
    bob.org.		43200	IN	NS	ns.bob.org.
    
    ;; ADDITIONAL SECTION:
    ns.bob.org.		43200	IN	A	172.16.100.10
    
    ;; Query time: 0 msec
    ;; SERVER: 172.16.100.10#53(172.16.100.10)
    ;; WHEN: Wed Aug 27 14:13:38 2014
    ;; MSG SIZE  rcvd: 58





3. 配置反向解析


    1. $TTL 43200;
      @	86400	IN	SOA	ns.bob.org. admin.bob.org. (
      		201410070001;
      		1h;
      		5m;
      		7d;
      		1d;)
      
      	IN	NS	ns.bob.org.    // NS記錄是必須的
      	IN	MX	10	mail1.bob.org.
      	IN	MX	20	mail2.bob.org.
      10	IN	PTR	ns.bob.org.
      10	IN	PTR	www.bob.org.
      11	IN	PTR	mail1.bob.org.
      12	IN	PTR	mail2.bob.org.
      12	IN	PTR	webmail.bob.org.
    2. zone "100.16.172.in-addr.arpa" IN {
      	type master;
      	file "172.16.100.zone";
      };
    1. 在區域配置文件/etc/named.rfc1912.zones新建一個區域

    2. 創建反向資源解析庫文件/var/named/172.16.100.zone

    3. // 測試反向解析
      [root@localhost named]# dig -x 172.16.100.10 @172.16.100.10
      
      ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -x 172.16.100.10 @172.16.100.10
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11785
      ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
      ;; WARNING: recursion requested but not available
      
      ;; QUESTION SECTION:
      ;10.100.16.172.in-addr.arpa.	IN	PTR
      
      ;; ANSWER SECTION:
      10.100.16.172.in-addr.arpa. 43200 IN	PTR	www.bob.org.
      10.100.16.172.in-addr.arpa. 43200 IN	PTR	ns.bob.org.
      
      ;; AUTHORITY SECTION:
      100.16.172.in-addr.arpa. 43200	IN	NS	ns.bob.org.
      
      ;; ADDITIONAL SECTION:
      ns.bob.org.		43200	IN	A	172.16.100.10
      
      ;; Query time: 0 msec
      ;; SERVER: 172.16.100.10#53(172.16.100.10)
      ;; WHEN: Wed Aug 27 19:35:57 2014
      ;; MSG SIZE  rcvd: 116
      
      [root@localhost named]# host -t PTR 172.16.100.10
      10.100.16.172.in-addr.arpa domain name pointer ns.bob.org.
      10.100.16.172.in-addr.arpa domain name pointer



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