DNS 記錄之解答過程
- 網際網路上資料封包的傳送要有目的端的 IP 位址才能送達,但 IP 位址對人們而言並不好用,例如:我們通常不會去記清華大學首頁的 IP 位址,但記網域名稱(domain name) www.nthu.edu.tw,顯然容易多了(即使用搜尋引擎,大概也不會去記搜尋引擎的 IP 位址)。那電腦如何找到目的端的 IP 位址,這就得仰賴 DNS 服務所提供的查詢服務,因此,若電腦上未能正確設定 DNS 伺服器,該部電腦就無法建立任何用網域名稱的連線。
- DNS 為網際網路服務 (Internet service) 重要的基礎之一,當 DNS 記錄無法順利查詢時,多數使用者會認為網路出狀況,但要釐清問題的原因並不容易,因為整個 DNS 運作架構是一個龐大、複雜的分散式系統,由全世界各地的網管人員分工合作來管理維護。
- 下圖僅以查詢 www.pme.nthu.edu.tw 的 IPv4 位址 (A record) 為例(DNS 尚有其他多種記錄,如:MX、CNAME、PTR等,雖不在本文所舉的例子範圍內,但其查詢過程亦同。),來介紹 DNS 記錄之解答過程(resolving process),說明電腦與 DNS 伺服器如何運作。
各步驟說明
- 電腦對 Recursive DNS 伺服器 140.114.64.1 (此由該台電腦的設定所決定)送出查詢 www.pme.nthu.edu.tw 的 IPv4 位址的請求(以下簡稱此查詢)。
- Recursive DNS 伺服器 140.114.64.1 對 ROOT NS (name server)(因 140.114.64.1 伺服器本身有 ROOT NS 的 IP 位址設定資料)送出此查詢。
- ROOT NS 無此查詢答案,回覆告知授權區域(authoritative zone) tw 的 NS 資料。
模擬第2、3步過程之操作指令如下: # dig @a.root-servers.net www.pme.nthu.edu.tw ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 9, ADDITIONAL: 12 ;; QUESTION SECTION: ;www.pme.nthu.edu.tw. IN A ;; AUTHORITY SECTION: tw. 172800 IN NS A.DNS.tw. ... ;; ADDITIONAL SECTION: A.DNS.tw. 172800 IN A 203.73.24.8 ... ;; Query time: 143 msec ;; SERVER: 198.41.0.4#53(198.41.0.4)
- 140.114.64.1 轉向 tw NS 送出此查詢。
- tw NS 無此查詢答案,回覆告知授權區域 edu.tw 的 NS 資料。
- 140.114.64.1 轉向 edu.tw NS 送出此查詢。
- edu.tw NS 無此查詢答案,回覆告知授權區域 nthu.edu.tw 的 NS 資料。
- 140.114.64.1 轉向 nthu.edu.tw NS 送出此查詢。
- nthu.edu.tw NS 無此查詢答案,回覆告知授權區域 pme.nthu.edu.tw 的 NS 資料。
- 140.114.64.1 轉向 pme.nthu.edu.tw NS 送出此查詢。
- pme.nthu.edu.tw NS 有此查詢答案,回覆告知www.pme.nthu.edu.tw 的 IPv4 位址為 140.114.57.163
模擬第10、11步過程之操作指令如下: # dig @dns1.pme.nthu.edu.tw. www.pme.nthu.edu.tw ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.pme.nthu.edu.tw. IN A ;; ANSWER SECTION: www.pme.nthu.edu.tw. 86400 IN A 140.114.57.163
- 140.114.64.1 將此查詢答案回覆該台電腦。
- 140.114.64.1 將此查詢結果放入暫存空間 (cache),下次相同的查詢則可以直接回答,不用去外界查,而資料暫存的時間不會超過該筆資料的 TTL (Time-to-live) 設定值。
補充說明
(Caching) recursive DNS server
- 提供 DNS 查詢服務,負責將客戶的查詢,從根找到正確的授權答案給客戶。
- 最好限定客戶 IP 來源,不要對整個 Internet 開放,以避免成為 DNS DDoS Attack 的打手;同時減少 DNS cache poisoning 的機會。因此,本中心之 recursive DNS 伺服器 140.114.63.1 與 140.114.64.1 僅限提供本校 IP 使用。
Authoritative DNS server
- 負責登記授權區域(zone) 的最新、最正確 DNS 記錄(record)資料;同時回答來自 Ineternet 各方詢問該授權範圍的 DNS 查詢 (query),最好不要回答非授權範圍內的查詢,建議與(Caching) recursive DNS server 分開建置,以提高安全性。因此,本中心之 authoritative DNS 伺服器 140.114.63.10, 140.114.63.20 與 140.114.64.10 僅回答本中心授權範圍的 DNS 查詢,若使用者錯誤將之設定為個人電腦用的 DNS 伺服器,將無法正常進行 DNS 查詢工作。
- 不回答非授權範圍內的查詢。
# dig @dns1.nthu.edu.tw www.mit.edu ; <<>> DiG 8.3 <<>> @dns1.nthu.edu.tw www.mit.edu ; (1 server found) ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 4 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUERY SECTION: ;; www.mit.edu, type = A, class = IN ;; Total query time: 0 msec ;; FROM: mx to SERVER: dns1.nthu.edu.tw 140.114.64.10 ;; WHEN: Tue May 19 16:03:27 2009 ;; MSG SIZE sent: 29 rcvd: 29
- 為提高服務可用性,最好有兩台(含)以上同時提供服務,採 Master/Slave 架構,由 master 保有原始的 DNS 記錄(record)資料,slave 透過 zone transfer 由 master 獲得備份的資料。
- 上下層授權的 NS 資料最好一致,以減少發生問題的機會。
- nthu.edu.tw NS 授權 pme.nthu.edu.tw NS 為 dns1.pme.nthu.edu.tw. 與 dns2.pme.nthu.edu.tw. 兩筆。
# dig @dns1.nthu.edu.tw pme.nthu.edu.tw ns ; <<>> DiG 8.3 <<>> @dns1.nthu.edu.tw pme.nthu.edu.tw ns ; (1 server found) ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 2 ;; QUERY SECTION: ;; pme.nthu.edu.tw, type = NS, class = IN ;; AUTHORITY SECTION: pme.nthu.edu.tw. 1D IN NS dns1.pme.nthu.edu.tw. pme.nthu.edu.tw. 1D IN NS dns2.pme.nthu.edu.tw. ;; ADDITIONAL SECTION: dns1.pme.nthu.edu.tw. 1D IN A 140.114.58.60 dns2.pme.nthu.edu.tw. 1D IN A 140.114.58.130 ;; Total query time: 1 msec ;; FROM: mx to SERVER: dns1.nthu.edu.tw 140.114.64.10 ;; MSG SIZE sent: 33 rcvd: 103
- dns1.pme.nthu.edu.tw NS 查到的 pme.nthu.edu.tw NS 也是 dns1.pme.nthu.edu.tw. 與 dns2.pme.nthu.edu.tw. 這兩筆。
# dig @dns1.pme.nthu.edu.tw pme.nthu.edu.tw ns ; <<>> DiG 8.3 <<>> @dns1.pme.nthu.edu.tw pme.nthu.edu.tw ns ; (1 server found) ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2 ;; QUERY SECTION: ;; pme.nthu.edu.tw, type = NS, class = IN ;; ANSWER SECTION: pme.nthu.edu.tw. 1D IN NS dns2.pme.nthu.edu.tw. pme.nthu.edu.tw. 1D IN NS dns1.pme.nthu.edu.tw. ;; ADDITIONAL SECTION: dns1.pme.nthu.edu.tw. 1D IN A 140.114.58.60 dns2.pme.nthu.edu.tw. 1D IN A 140.114.58.130 ;; Total query time: 2 msec ;; FROM: mx to SERVER: dns1.pme.nthu.edu.tw 140.114.58.60 ;; WHEN: Tue May 19 15:53:54 2009 ;; MSG SIZE sent: 33 rcvd: 103
TTL
每筆 DNS 記錄(record)其 TTL 由區域授權 NS 所指定,以本例而言,pme.nthu.edu.tw NS 指定 www.pme.nthu.edu.tw 的 TTL 為 1D (1 day)。
# dig @dns1.pme.nthu.edu.tw www.pme.nthu.edu.tw ; <<>> DiG 8.3 <<>> @dns1.pme.nthu.edu.tw www.pme.nthu.edu.tw ; (1 server found) ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUERY SECTION: ;; www.pme.nthu.edu.tw, type = A, class = IN ;; ANSWER SECTION: www.pme.nthu.edu.tw. 1D IN A 140.114.57.163 ;; AUTHORITY SECTION: pme.nthu.edu.tw. 1D IN NS dns2.pme.nthu.edu.tw. pme.nthu.edu.tw. 1D IN NS dns1.pme.nthu.edu.tw. ;; ADDITIONAL SECTION: dns1.pme.nthu.edu.tw. 1D IN A 140.114.58.60 dns2.pme.nthu.edu.tw. 1D IN A 140.114.58.130 ;; Total query time: 21 msec ;; FROM: mx to SERVER: dns1.pme.nthu.edu.tw 140.114.58.60 ;; WHEN: Tue May 19 15:18:31 2009 ;; MSG SIZE sent: 37 rcvd: 123