DNS 如何運作,以及如何對部分或間歇性 DNS 故障進行疑難排解?

4 分的閱讀內容
0

DNS 如何運作,以及如何對部分或間歇性 DNS 故障進行疑難排解?

解決方法

DNS 概述

DNS 將易於記住的名稱 (例如 www.example.com) 轉換為數字 IP 位址,例如 192.0.2.1,以將使用者路由到網際網路應用程式。此程序稱為「DNS 解析」。 授權名稱伺服器會將網域名稱解析為一个 IP 位址或多個 IP 位址,並透過 DNS 解析程式鏈路傳遞 IP 位址給用戶端 (例如,要求檢視網站的使用者的電腦)。然後,用戶端會使用該 IP 位址連線到託管網站的伺服器。當 DNS 無法正常運作時,DNS 伺服器無法解析網域名稱。因此,DNS 伺服器無法為用户端提供網站託管伺服器的 IP 位址。這意味著這些網站無法從網際網路存取。

如需詳細資訊,請參閱什麼是 DNS?

部分、暫時或間歇性 DNS 失敗情況

在某些情況下,用戶端會短時間或間歇性發生 DNS 失敗。以下是可能導致部分 DNS 失敗的常見情況:

情況 1: 註冊商錯誤設定了名稱伺服器

有時一個或多個名稱伺服器在註冊商上設定錯誤。"whois" 查詢可提供在網域註冊商上設定的名稱伺服器。在此情況下,在 DNS 解析期間,如果註冊的名稱伺服器沒有回應或回應非預期的資訊,則本機解析器會傳回 SERVFAIL 訊息。但在某些情況下,本機解析器可能使用不同的名稱伺服器嘗試請求,並且可能傳回結果。

此外,本機解析器可能在 TTL 時間內快取錯誤的名稱伺服器,並且可能將下一個查詢傳送到設定錯誤的名稱伺服器。

情況 2: 託管區域的名稱伺服器已更改

部分 DNS 失敗的另一個原因是網域的 NS 記錄在託管區域中設定錯誤。在這種情況下,現有的名稱伺服器已更新,或是某些其他名稱伺服器已新增至 NS 記錄的值中。

在這種情況下,如果解析器嘗試使用錯誤的名稱伺服器解析網域,某些用戶端可能會遇到部分 DNS 失敗。

情況 3: 用戶端的 DNS 解析器無法解析網域

有時用戶端在解析器組態檔中設定自訂或不正確的解析器,例如 Linux 中的 resolv.conf。如果是這種情況,且您正在從 Amazon Virtual Private Cloud (Amazon VPC) 中的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體解析網域,則 EC2 執行個體會使用 resolv.conf 中定義的名稱伺服器。

情況 4: Amazon 提供的 DNS 伺服器限流 DNS 查詢

Amazon 提供的 DNS 伺服器強制限制每個彈性網路介面每秒 1024 個封包。Amazon 提供的 DNS 伺服器拒絕任何超過此限制的流量。由於 DNS 限流,DNS 會間歇性逾時。您可以在執行個體上開啟快取或增加應用程式上的 DNS 重試計時器來解決此問題。

情況 5: 網域 URL 從網際網路解析,而不是從 EC2 執行個體解析

如果您已執行下列動作,網域的 DNS 查詢一律會從私有託管區域解析:

如果您網域的查詢記錄不存在於私有託管區域中,則 DNS 查詢會失敗,並且不會轉寄到公有網域。由於 DNS 記錄存在於公有網域區域中,因此它會從網際網路解析。

對基於 Linux 作業系統的 DNS 失敗進行疑難排解

使用 dig 命令對主機的 /etc/resolv.conf 檔案中設定的用戶端 DNS 伺服器執行查詢。

$ dig www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13150
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.amazon.com.    IN    A

;; ANSWER SECTION:
www.amazon.com.        41    IN    A    54.239.17.6

;; Query time: 1 msec
;; SERVER: 10.108.0.2#53(10.108.0.2)
;; WHEN: Fri Oct 21 21:43:11 2016
;; MSG SIZE rcvd: 48

在上述範例中,答案部分顯示 54.239.17.6 是 www.amazon.com 的 HTTP 伺服器的 IP 位址。

如果您新增 +trace 變數,dig 命令也可以執行 DNS 記錄的遞歸查詢,如下列範例所示:

$ dig +trace www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> +trace www.amazon.com
;; global options: +cmd
.        518400    IN    NS    J.ROOT-SERVERS.NET.
.        518400    IN    NS    K.ROOT-SERVERS.NET.
.        518400    IN    NS    L.ROOT-SERVERS.NET.
…
;; Received 508 bytes from 10.108.0.2#53(10.108.0.2) in 31 ms

com.        172800    IN    NS    a.gtld-servers.net.
com.        172800    IN    NS    b.gtld-servers.net.
com.        172800    IN    NS    c.gtld-servers.net.
…
;; Received 492 bytes from 193.0.14.129#53(193.0.14.129) in 93 ms
amazon.com.        172800    IN    NS    pdns1.ultradns.net.
amazon.com.        172800    IN    NS    pdns6.ultradns.co.uk.
…
;; Received 289 bytes from 192.33.14.30#53(192.33.14.30) in 201 ms
www.amazon.com.    900    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.    900    IN    NS    ns-1568.awsdns-04.co.uk.
www.amazon.com.    900    IN    NS    ns-277.awsdns-34.com.
…
;; Received 170 bytes from 204.74.108.1#53(204.74.108.1) in 87 ms

www.amazon.com.    60     IN    A    54.239.26.128
www.amazon.com.    1800   IN    NS   ns-1019.awsdns-63.net.
www.amazon.com.    1800   IN    NS   ns-1178.awsdns-19.org.
…
;; Received 186 bytes from 205.251.195.251#53(205.251.195.251) in 7 ms

您也可以執行僅傳回名稱伺服器的查詢,如下列範例所示:

$ dig -t NS www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> -t NS www.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48631
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.amazon.com.        IN    NS

;; ANSWER SECTION:
www.amazon.com.        490    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.        490    IN    NS    ns-1178.awsdns-19.org.
www.amazon.com.        490    IN    NS    ns-1568.awsdns-04.co.uk.
www.amazon.com.        490    IN    NS    ns-277.awsdns-34.com.

;; Query time: 0 msec
;; SERVER: 10.108.0.2#53(10.108.0.2)
;; WHEN: Fri Oct 21 21:48:20 2016
;; MSG SIZE rcvd: 170

在上述範例中,www.amazon.com 具有下列四個權威名稱伺服器:

  • ns-1019.awsdns-63.net。
  • ns-1178.awsdns-19.org。
  • ns-1568.awsdns-04.co.uk。
  • ns-277.awsdns-34.com。

這四個伺服器中的任何一個都可以權威地回答關於 www.amazon.com 主機名稱的問題。使用 dig 命令直接定位特定名稱伺服器。檢查指定網域的每個權威名稱伺服器是否都正確回答。

以下是向 www.amazon.com 查詢其中一個權威名稱伺服器 (ns-1019.awsdns-63.net) 的輸出範例。伺服器回應表示 www.amazon.com 可在 54.239.25.192 上使用:

$ dig www.amazon.com @ns-1019.awsdns-63.net.
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com @ns-1019.awsdns-63.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31712
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.amazon.com.    IN    A

;; ANSWER SECTION:
www.amazon.com.        60    IN    A    54.239.25.192

;; AUTHORITY SECTION:
www.amazon.com.        1800    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.        1800    IN    NS    ns-1178.awsdns-19.org.
www.amazon.com.        1800    IN    NS    ns-1568.awsdns-04.co.uk.
…

;; Query time: 7 msec
;; SERVER: 205.251.195.251#53(205.251.195.251)
;; WHEN: Fri Oct 21 21:50:00 2016
;; MSG SIZE rcvd: 186

下列行顯示 ns-576.awsdns-08.net 是 amazon.com 的權威名稱伺服器:

;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0

aa 標誌的存在表明名稱伺服器 ns-1019.awsdns-63.net 向我們提供了對資源記錄 www.amazon.com 的權威回答。

對基於 Windows 作業系統的 DNS 失敗進行疑難排解

使用 nslookup 公用程式傳回與主機名稱相關聯的 IP 位址,如下列範例所示:

C:\>nslookup www.amazon.com
Server:     ip-10-20-0-2.ec2.internal
Address:    10.20.0.2

Non-authoritative answer:
Name:       www.amazon.com
Address:    54.239.25.192

若要使用 nslookup 公用程式判斷主機名稱的權威名稱伺服器,請使用 -type=NS 標誌:

C:\>nslookup -type=NS www.amazon.com
Server:     ip-10-20-0-2.ec2.internal
Address:    10.20.0.2

Non-authoritative answer:
www.amazon.com    nameserver = ns-277.awsdns-34.com
www.amazon.com    nameserver = ns-1019.awsdns-63.net
www.amazon.com    nameserver = ns-1178.awsdns-19.org
…

若要查看 www.amazon.com 的 ns-277.awsdns-34.com 是否正確回應對 www.amazon.com 的請求,請使用下列語法:

C:\>nslookup www.amazon.com ns-277.awsdns-34.com
Server:     UnKnown
Address:    205.251.193.21

Name:       www.amazon.com
Address:    54.239.25.200

AWS 官方
AWS 官方已更新 2 年前