DNS 架設講義

DNS 是什麼?

DNS 是用來解譯 領域名稱 <-> IP 位址 間的關係
( 由 領域名稱 ---查詢---> IP 位址 : 正解)
( 由 IP 位址 ---查詢---> 領域名稱 : 反解)

Example :

當我們在 Windows 下的 MS-DOS 模式 打 ping www.hinet.net 而看到

Pinging www.hinet.net [168.95.1.88] with 32 bytes of data:
...
由其中可以看 www.hinet.net 的 IP 為 168.95.1.88 (正解)

 

當我們在 Windows 下的 MS-DOS 模式 打 ping -a 168.95.1.88 而看到

Pinging www.hinet.net [168.95.1.88] with 32 bytes of data:
...
由其中可以看 168.95.1.88 的 領域名稱 為 www.hinet.net (反解)

如何設定 DNS (以 Linux RedHat 7.2 為例 )

首先確認 bind 套件是否有安裝 ( 以 rpm -q bind 來確認 , RedHat 中為 bind-9.1.3-4 版) ,
以下的步驟為設定和測試 :

步驟 1:

設定 /etc/resolv.conf

domain test.edu.tw (學校所擁有的領域名稱)
search test.edu.tw (學校所擁有的領域名稱)
nameserver 192.168.0.1 (這台 DNS 的 IP )

步驟 2:

設定 /etc/host.conf

order hosts,bind (當 DNS 收到查詢的要求時, 會先查 /etc/hosts 這個檔中是否有符合的 領域名稱 IP 資訊, 若無則改向 bind 服務來查詢)
multi on ( 允許 /etc/hosts 這個檔中一個IP 對應多個 領域名稱 )

步驟 3:

開啟防火牆

輸入 setup , 選 Firewall configuration

法1. 直接選 no firewall

法2. 選 Medium 再選 Customize ,打開需打開的 port , 然後手動在 Other ports 上輸入 53:udp

You can customize your firewall in two ways. First, you can select to
allow all traffic from certain network interfaces. Second, you can allow
certain protocols explicitly through the firewall. Specify additional
ports in the form 'service:protocol', such as 'imap:tcp'.

Trusted Devices: [ ] eth0 [ ] eth0.OLD

Allow incoming: [ ] DHCP [ ] SSH [ ] Telnet
[ ] WWW (HTTP) [ ] Mail (SMTP) [ ] FTP
Other ports
53:udp          

步驟 4:

(注意1: bind 套件所使用的DNS服務名稱不叫 bind 叫 namd )

(注意2: named.conf 中所指定的檔案、目錄 都必須存在, 並且 權限為 744 named.named )

options {
directory "/var/named"; ( Zone file 放置的目錄)
};
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;
type master;
file "named.local";
allow-update { none; };
};
// --- TEST DNS Zone and file ( 將需要修改增加的部份加到下方)
zone "test.edu.tw" IN { ( 正解: test.edu.tw 所管轄的 zone )
type master;
file "Zone.test";
allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN {( 反解: 192.168.0 所管轄的 zone)
type master;
file "Rev192.168.0";
allow-update { none; };
};
zone "cc.test.edu.tw" IN {( 正解: cc.test.edu.tw 所管轄的 zone, 而我們只是它的副DNS)
type slave;
file "slave/Zone.cc.test";
masters { 192.168.1.1; };
allow-update { 192.168.1.1; };
};
zone "1.168.192.in-addr.arpa" IN {( 反解: 192.168.1 所管轄的 zone, 而我們只是它的副DNS)
type slave;
file "slave/Rev192.168.1";
masters { 192.168.1.1; };
allow-update { 192.168.1.1; };
};

步驟 5:

撰寫 Zone , 預設目錄在 /var/named ( named.conf 中描述的目錄位置)

我們要依步驟4的 named.conf 來做三件事

1. 建立 目錄 slave , 修改擁有者, 群組, 更改權限
  ( cd /var/named , mkdir slave , chown named:named slave , chmod 744 slave)

2. 建立正解的 Zone file ( Zone.test )

@      IN  SOA ns1.test.edu.tw. root.ns1.test.edu.tw. (
        2002050203 ; serial
        28800 ; refresh
        14400 ; retry
        3600000 ; expire
        86400 ; default_ttl
        )
@      IN NS ns1.test.edu.tw.
@      IN A 192.168.0.1
@      IN MX 0 ns1.test.edu.tw.
@      IN MX 10 mail2.test.edu.tw.
ns1     IN A 192.168.0.1
names1    IN CNAME ns1
www     IN A 192.168.0.2
mail3     IN A 192.168.0.3
;
網域授權來源 ns1.test.edu.tw.
負責管理人員 root.ns1.test.edu.tw. (以.取代@)
2002050203 版本序號 (檔案有修改,號碼要增加)
28800 slave DNS 檢查的時間(單位: 秒)
14400 refresh 失敗時重試的時間(單位: 秒)
3600000 不能 refresh 資料時, 保留資料的時間
86400 記錄資料取回後在 cache 中暫存的時間
         )
name server 為 ns1.test.edu.tw.
name server 的 IP 為 192.168.0.1
郵件交換主機有 ns1.test.edu.tw. 優先權0 (小則高)
郵件交換主機有 mail2.testt.edu.tw. 優先權10 (大則低)
ns1.mit.edu.tw 對應 192.168.0.1
names1.mit.edu.tw 對應 192.168.0.1(同名的寫法)
www 對應 192.168.0.2
mail3 對應 192.168.0.3

3. 建立反解的 Zone file ( Rev192.168.0 )

;
@      IN  SOA ns1.test.edu.tw. root.ns1.test.edu.tw. (
        2002050203 ; serial
        28800 ; refresh
        14400 ; retry
        3600000 ; expire
        86400 ; default_ttl
        )
@      IN NS ns1.test.edu.tw.
;
1      IN PTR ns1.test.edu.tw.
2      IN PTR www.test.edu.tw.
3      IN PTR mail3.test.edu.tw.
網域授權來源 ns1.test.edu.tw.
負責管理人員 root.ns1.test.edu.tw. (以.取代@)
2002050203 版本序號 (檔案有修改,號碼要增加)
28800 slave DNS 檢查的時間(單位: 秒)
14400 refresh 失敗時重試的時間(單位: 秒)
3600000 不能 refresh 資料時, 保留資料的時間
86400 記錄資料取回後在 cache 中暫存的時間
         )
name server 為 ns1.test.edu.tw.

192.168.0.1 對應 ns1.test.edu.tw.
192.168.0.2 對應 www.test.edu.tw.
192.168.0.3 對應 mail3.test.edu.tw.

步驟 6:

重新啟動 named ( service named restart )

步驟 7:

測試 named

使用 dig 測試正解 ( 例: dig 領域名稱 )
使用 host 測試反解 ( 例: host IP )

或是使用 nslookup 測試正解和反解 (例: 輸入 nslookup 進入, 在 > 符號下輸入 領域名稱 或 IP , 輸入 exit 離開 )