1. 程式人生 > >DNS配置詳解 bind實現正向解析和反向解析

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

cell 8.4 -s intern 資源記錄 ted borde linux系統 ans

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 .查看

1 2 3 4 5 6 7 8 9 10 11 12 13 14 [[email protected] ~]# 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. 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./*區域名稱,[email protected]*/ 86400/*TTL,可不定義,會直接繼承全局的*/ IN /*Internet,固定格式*/ SOA /*記錄類型*/ ns.bob.org. /*主服務器的FQDN*/ admin.bob.org /*管理員郵箱,[email protected]*/ $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 [[email protected] named]# named-checkconf // 檢查配置文件 [[email protected] named]# chown :named /var/named/bob.org.zone [[email protected] 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 [[email protected] 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 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 // 測試反向解析 [[email protected] 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 [[email protected] 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

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