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

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

 

DNS查詢過程web

假設咱們要訪問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 .查看dom

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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)spa

   FQDN --> IP           AAAA IPv6.net

   Domain --> DNS Server NS code

   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. 1
      2
      3
      //      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中

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

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

  1. 1
    2
    3
    4
    5
    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. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $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. 1
    2
    3
    4
    5
    6
    [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. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    [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.  

    1. 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      $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. 1
      2
      3
      4
      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. 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      // 測試反向解析
      [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
相關文章
相關標籤/搜索