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

4 分的閱讀內容
0

我想對部分或間歇性 DNS 故障進行疑難排解。

解決方法

DNS 概述

DNS 將易於記住的名稱 (例如 www.example.com) 轉換為數字 IP 位址 (例如 192.0.2.1),然後將使用者路由到網際網路應用程式。此程序就稱為「DNS 解析」。 如需詳細資訊,請參閱什麼是 DNS?

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

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

註冊商的名稱伺服器設定錯誤

有時註冊商上的一個或多個名稱伺服器會設定錯誤。whois 查詢可提供網域註冊商設定的名稱伺服器。在 DNS 解析期間,如果註冊的名稱伺服器沒有回應或回應非預期的資訊,則本機解析器會傳回 SERVFAIL 訊息。但在某些情況下,本機解析器可能會嘗試使用未設定錯誤的其他名稱伺服器來傳送請求。如果是這樣,就會收到預期的 DNS 回應。

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

託管區域的名稱伺服器已變更

當託管區域中網域的 NS 記錄設定錯誤時,可能會發生部分 DNS 失敗。要麼是現有的名稱伺服器已更新,不然就是某些其他名稱伺服器已新增至 NS 記錄的值中。如果解析器嘗試使用錯誤的名稱伺服器解析網域,那麼您可能會遇到部分 DNS 失敗。

用戶端的 DNS 解析器無法解析網域

有時解析器組態檔中設定了錯誤的解析器,例如 Linux 中的 resolv.conf。當您從 Amazon Virtual Private Cloud (Amazon VPC) 中的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體解析網域時,EC2 執行個體會使用 resolv.conf 中定義的名稱伺服器。

Amazon 提供的 DNS 伺服器限流 DNS 查詢

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

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

完成下列操作後,網域的 DNS 查詢一律會從私有託管區域解析:

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

Route 53 中的 DNS 防火牆規則設定錯誤

如果有任何網域符合下列任一條件,請檢查您的網域是否設定了 Amazon Route 53 DNS 防火牆

  • 在網際網路上解決
  • 透過公共解析器進行解析 (即以 1.1.1.1 或 8.8.8.8 作為解析器 IP)
  • 無法從虛擬私有伺服器 (VPS) 解析。

Route 53 解析器端點設定錯誤

您可以設定 Route 53 解析器傳出端點和解析器規則,以將特定的 DNS 查詢傳送至內部部署 DNS 伺服器。請確定 Route 53 端點、解析器規則和內部部署 DNS 伺服器設定正確。如需詳細資訊,請參閱如何對 Route 53 解析器端點的 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 記錄的遞歸查詢。以下是包含 +trace 變數的 dig 命令範例:

$ 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.comServer:     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.comServer:     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.comServer:     UnKnown
Address:    205.251.193.21

Name:       www.amazon.com
Address:    54.239.25.200
AWS 官方
AWS 官方已更新 9 個月前