【轉】bind - DNS 設定

http://www.l-penguin.idv.tw/article/dns.htm

參考資訊web

DNS 是全部伺服之母,電腦連節時均以 IP 為主,比方說輸入 202.43.195.52 就會到臺灣雅虎,當然您也能夠打 tw.yahoo.com 到 Yahoo-Taiwan 首頁,可是,當您輸入 tw.yahoo.com 時,可曾想過其實背後是由 DNS 幫您作轉換成 IP 的動做!dom

DNS 的組成,是由分散式 DB 所構成的,每個 DNS 能夠管理屬於本身的網域,也能夠受權本身所屬的子網域給別人,在你獲得網域之後,你上層的 DNS 就不會管你如何設定,如何受權;而你受權子網域之後,您也不用管理你的子網域如何管理,因為「一旦受權 徹底自由」。當然,您可別先掛掉 (或你的上一層 DNS),否則就連你的小孩 (子網域) 都跟著掛了!ui

實做 DNS 管理spa

如下,假設 abc 實業公司申請屬於他們的 domain,一旦申請了本身的 網域名稱 之後,接下來就要設定讓你的 DNS 能夠活起來,在 Linux 裡,長久以來多數都使用 bind 這個套件來作 DNS 的管理,他經歷了歷史的考驗,所以在多絕大部份的功能上都最為完整。code

檔案編輯

在編輯 DNS 時,大部份只須要編輯 database 檔,而初次或有網域變動時才會須要編輯到 /etc/named.conf。server

編輯設定檔 (/etc/named.conf)htm

# vi /etc/named.conf
blog

options {
     directory "/var/named";
}
controls {
          inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN {
     type hint;
     file "named.ca";
};
zone "localhost" IN {
     type master;
     file "localhost.zone";
     allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
     type master;
     file "named.local";
     allow-update { none; };
};
include "/etc/rndc.key";

當您開啟 /etc/named.conf 之後,您就能夠發現已經存在一些資訊了,而 /etc/named.conf 這個目錄主要是設定每個網域資訊是存在那一個檔案裡,比方說 localhost 這個 domain 是存在 localhost.zone 的檔案裡,而 root domain 資訊是放在 named.ca 裡面。然而,假設現在已經申請了 abc.com.tw 這個 domain,因此當 .com.tw 受權過來後就能夠設定我們所屬的網域了。dns

正解設定

編輯設定檔 (/etc/named.conf)ci

在 /etc/named.conf 裡面輸入一段設定,並指定 abc.com.tw 的網域資訊是放在那裡的。

zone "abc.com.tw" IN {
     type master;
     file "db-abc.com.tw";
     allow-update { none; };
};

指定 abc.com.tw 的 domain 資訊放在 db-abc.com.tw,把 /etc/named.conf 存起來。接下來要去「那裡」編輯 db-abc.com.tw 呢?其實答案就在 /etc/named.conf 裡的 options { directory "/var/named"; } 這個區段裡,看到了吧!因此接下來的 db-abc.com.tw 就要在 /var/named 編好之後放在這裡,這樣才能正確被讀入呢!

編輯設定檔 (/var/named/db-abc.com.tw)

$TTL          86400
$ORIGIN abc.com.tw.
@          1D IN SOA                    @ root.abc.com.tw. (
                                        2005021801          ; 修改序號
                                        3H                  ; refresh
                                        15M                 ; retry
                                        1W                  ; expiry
                                        1D )                ; minimum
                                        
@                   IN NS         dns.abc.com.tw.
dns.abc.com.tw.     IN A          11.22.33.100

;設定 MX record
@                   IN MX 10      ms1
@                   IN MX 20      ms2
ms1                 IN A          11.22.33.69
ms2                 IN A          11.22.33.70

www                 10 IN A       11.22.33.85     ;www 作 load balancing
www                 10 IN A       11.22.33.86     ;www 作 load balancing
web                 IN CNAME      www             ;讓 web.abc.com.tw 也指到 www

上述範列設定了一些技巧,如下一一解釋重要部份:

  • $ORIGIN abc.com.tw.
    說明這個設定檔是屬於那一個網域的。
  • root.abc.com.tw.
    指定管理者的 mail,也就 root@abc.com.tw,root 之後的 . 表明著 @ 的意思,不用 @ 的緣由是 "@" 符號有特別的含意。
  • @ IN NS dns.abc.com.tw.
    指定當前 abc.com.tw. 的 dns 查詢主機是那一部
  • dns.abc.com.tw. IN A 11.22.33.44
    指定 dns.abc.com.tw. 的正解。
  • @ IN MX 10 ms1
    @ IN MX 20 ms2

    指定 abc.com.tw. 的 MX 記錄,分別指向 ms1.abc.com.tw 和 ms2.abc.com.tw、而 ms1 的優先等級高於 ms2,此為重要設定,若郵件無法傳遞,有部份緣由是 MX 記錄沒有設好 (如有 mail gateway、mail routing 時尤為重要)。
  • ms1 IN A 11.22.33.50
    ms2 IN A 11.22.33.51

    設定 ms1.abc.com.tw 和 ms2.abc.com.tw 的正解 A 記錄。
  • www 10 IN A 11.22.33.85
    www 10 IN A 11.22.33.86

    既 www.abc.com.tw。設定了兩組 www 的 A 正解記錄主要是有兩臺 www 伺服器在運做,為避免伺服器太過忙碌,而使用兩組設定以分攤流量 (Load balancing)。
  • web IN CNAME www
    既 web.abc.com.tw,其實就是指向 www.abc.com.tw,這只是 www.abc.com.tw 的一個別名而已。

符號說明:

@:當地的 domain 簡寫,也就是 abc.com.tw

;:這個符號表明註解,在 ; 之後的文字將被視為無效。

此時,abc.com.tw 的網域正解設定應已完成,接下來看看 DNS 是否能查獲得

正解檢查

查 MX record

[root@rhel200 named]# host -t mx abc.com.tw
abc.com.tw mail is handled by 20 ms2.abc.com.tw.
abc.com.tw mail is handled by 10 ms1.abc.com.tw.
[root@rhel200 named]#

查 www.abc.com.tw

[root@rhel200 named]# host www.abc.com.tw
www.abc.com.tw has address 11.22.33.69
www.abc.com.tw has address 11.22.33.70

查 web.abc.com.tw

[root@rhel200 named]# host web.abc.com.tw
web.abc.com.tw is an alias for www.abc.com.tw.
www.abc.com.tw has address 11.22.33.85
www.abc.com.tw has address 11.22.33.86
[root@rhel200 named]#

反解設定

編輯設定檔 (/etc/named.conf)

加入一個 reserve zone。

zone "33.22.11.in-addr.arpa" IN {
                type master;
                file "db-11.22.33";
        };

再到 /var/named 裡編輯 db-11.22.33

$TTL    86400
@       IN      SOA     abc.com.tw. root.abc.com.tw.  (
                                      2004102501 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS      dns.abc.com.tw.
69      IN      PTR     ms1
70      IN      PTR     ms2
85      IN      PTR     www
86      IN      PTR     www
100      IN      PTR     dns

正反解的設其實都差很少,只是在新增對應反解時是使用 PTR 記錄。而 69 是 69.33.22.11.in-addr.arpa 的簡寫。

反解檢查

[root@mailgw named]# host 11.22.33.100
100.33.22.11.in-addr.arpa domain name pointer dns.abc.com.tw.
[root@mailgw named]# host 11.22.33.85
85.33.22.11.in-addr.arpa domain name pointer www.abc.com.tw.
[root@mailgw named]#

以上,如果正反解都 OK 了,那麼就能夠開開心心的讓別人查到您的 DNS 了。

Bind 9 新功能 view

view 在實作上, 主要的功能就是能夠讓你的 DNS 伺服器見人說人話, 見鬼說鬼話, 怎麼說呢, 比方說你在一些網路主機不想被別人使用 DNS 來查到, 那麼就能夠使用 view 功能來隔開, 像通常公司內的伺服器, 會使用內部網段, 可是又不想要讓別人能夠從外面查到 (就算查到對通常人也沒什麼用處), 又不想多增長一臺所謂的內部 DNS 伺服器, 因此我們就能夠使用 view 的功能, 看是 Client 連上來是屬於那一個區段來回應.

設定 acl

為什麼要設定 acl, 就是 Access Control List, 主要是用來分類羣組用的. 如下的範例, 將把 intranet 設定在 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24, 而不在這三個範圍之內的, 就叫 internet. 設定完之後, 再使用 view function 劃清界線.

如下, 在 /etc/named.conf 作設定

//acl 設定各不一樣 Client 的分組

 
 
 
 
 
acl "intranet" { 192.168.1.0/24; 192.168.2.0/24; 192.168.3.0/24; };
acl "internet" { ! 192.168.1.0/24; ! 192.168.2.0/24; ! 192.168.3.0/24; }; 
view "intranet" {
        //使用 match-clients 來檢視查尋的 Client 來源 (公司網路)
        match-clients { "intranet"; };
        zone "." IN {
                type hint;
                file "named.ca";
        };

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

        zone "0.0.127.in-addr.arpa" IN {
                type master;
                file "named.local";
                allow-update { none; };
        };

        zone "abc.com.tw" IN {
                type master;
                file "db.abc.com.tw";
        };

        zone "33.22.11.in-addr.arpa" IN {                type master;                file "db-11.22.33";        };

        // 如下這一段就是不但願本公司之外的人能夠查到
        zone "company.abc.com.tw" IN {
                type master;
                file "db-in.company.abc.com.tw";
        };

        // the company.abc.com.tw PTR record
        zone "1.168.192.in-addr.arpa" IN {                type master;                file "db-192.168.1.0";        };
};view "internet" {
        //使用 match-clients 來檢視查尋的 Client 來源 (非公司網路)
        match-clients { "internet"; };
        zone "." IN {
                type hint;
                file "named.ca";
        };

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

        zone "0.0.127.in-addr.arpa" IN {
                type master;
                file "named.local";
                allow-update { none; };
        };

        zone "abc.com.tw" IN {
                type master;
                file "db.abc.com.tw";
        };

        zone "33.22.11.in-addr.arpa" IN {                type master;                file "db-11.22.33";        };
};

以上設定, 就不示範如何設定 db 資料庫檔, 因為設定方法就如同上面所說的一樣, 沒有什麼改變.

你能夠很明確的發現, 在我們設定 view "internet" 和 view "intranet" 時, 都須要把本來的 zone 都從新定義才行, 看起來就會像是獨立的 DNS Server, 現在只要使用不一樣的網路, 就能夠發現你的 DNS 是見人說人話, 見鬼說鬼話了!

授權子網域

若是當您的網路規摩有必定的程度之後, 也許會想要再新增一個子網域. 在這個範例之後, 將會示範如何在一個現有的網域下再新增一個 DNS 網域, 並把該子網域授權給下層的單位管理.

新增一個 demo.abc.com.tw 的子網域, 並把 demo.abc.com.tw 的 DNS 伺服器指到 211.6.9.85

編輯 /var/named/db.abc.com.tw

$ORIGIN demo.abc.com.tw.
demo.abc.com.tw.     IN NS dns.demo.abc.com.tw.
dns.demo.abc.com.tw. IN A  211.6.9.85

避免成為 Open DNS servers

Open DNS servers 簡單來說,就是隻要你們指向你為查詢伺服器,那麼你就會為你們努力的查詢,並且來者不拒。成為 Open DNS servers,通常除了 ISP 以外,其它私人或企業伺服器應該是不須要的。

如下設定,能夠設定為只為 192.168.1.0/24 查詢,不為外界的連線查詢。

創建一個 acl:

root # vi /etc/named.conf

---------------/etc/named.conf-----------------------
#在檔案最上面加入 trusted 的 acl。
acl "trusted" {127.0.0.1; 192.168.1.0/24;};
----------------------------------------------------------
root #

在 option {}; 區段加入 allow-recursion 設定:

root # vi /etc/named.conf
---------------/etc/named.conf-----------------------
options {
~其它 option 設定~
allow-recursion { trusted; };
};
----------------------------------------------------------
root #

經過以上的設定之後,這臺 DNS 就只會為 192.168.1.0/24 和 127.0.0.1 (本機) 查詢。

相關文章
相關標籤/搜索