我在向 DNS 发出查询时遇到问题,但不确定在哪里寻找根本原因。
我有一条记录“www.alumninews.uottawa.ca”,这是一条 CNAME 记录,指向我托管的“uottawa.mailoutinteractive.com”的 A 记录。当我查询我的 ISP 的 DNS 服务器时,我得到了不同的响应:
第一个不递归
$ dig +recurse www.alumninews.uottawa.ca @64.59.184.13
; <<>> DiG 9.8.1-P1 <<>> +recurse www.alumninews.uottawa.ca @64.59.184.13
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 13260
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.alumninews.uottawa.ca. IN A
;; ANSWER SECTION:
www.alumninews.uottawa.ca. 3600 IN CNAME uottawa.mailoutinteractive.com.
;; Query time: 139 msec
;; SERVER: 64.59.184.13#53(64.59.184.13)
;; WHEN: Wed Apr 3 11:33:55 2013
;; MSG SIZE rcvd: 87
请注意,CNAME 尚未得到解析(详细信息请参见下文)。
第二个正确解析了 CNAME(注意 TTL 现在是 3532,而不是上面的默认 3600):
$ dig +recurse www.alumninews.uottawa.ca @64.59.184.13
; <<>> DiG 9.8.1-P1 <<>> +recurse www.alumninews.uottawa.ca @64.59.184.13
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16716
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.alumninews.uottawa.ca. IN A
;; ANSWER SECTION:
www.alumninews.uottawa.ca. 3532 IN CNAME uottawa.mailoutinteractive.com.
uottawa.mailoutinteractive.com. 300 IN A 209.15.195.166
;; Query time: 30 msec
;; SERVER: 64.59.184.13#53(64.59.184.13)
;; WHEN: Wed Apr 3 11:35:03 2013
;; MSG SIZE rcvd: 103
此外,当我使用 wireshark 捕获网络流量时,我发现查找 uottawa.mailoutinteractive.com 时出现的错误是“回复代码:没有这样的名称(3)”,这是由于递归失败造成的:
Domain Name System (response)
[Request In: 3993]
[Time: 0.057954000 seconds]
Transaction ID: 0xf07c
Flags: 0x8183 Standard query response, No such name
1... .... .... .... = Response: Message is a response
.000 0... .... .... = Opcode: Standard query (0)
.... .0.. .... .... = Authoritative: Server is not an authority for domain
.... ..0. .... .... = Truncated: Message is not truncated
.... ...1 .... .... = Recursion desired: Do query recursively
.... .... 1... .... = Recursion available: Server can do recursive queries
.... .... .0.. .... = Z: reserved (0)
.... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
.... .... ...0 .... = Non-authenticated data: Unacceptable
.... .... .... 0011 = Reply code: No such name (3)
Questions: 1
Answer RRs: 1
Authority RRs: 0
Additional RRs: 0
Queries
www.alumninews.uottawa.ca: type A, class IN
Name: www.alumninews.uottawa.ca
Type: A (Host address)
Class: IN (0x0001)
Answers
www.alumninews.uottawa.ca: type CNAME, class IN, cname uottawa.mailoutinteractive.com
Name: www.alumninews.uottawa.ca
Type: CNAME (Canonical name for an alias)
Class: IN (0x0001)
Time to live: 1 hour
Data length: 32
Primaryname: uottawa.mailoutinteractive.com
在 Wireshark 中,成功的查找如下所示(这是具有相同问题的不同域):
Domain Name System (response)
[Request In: 70]
[Time: 0.051422000 seconds]
Transaction ID: 0x417d
Flags: 0x8180 Standard query response, No error
1... .... .... .... = Response: Message is a response
.000 0... .... .... = Opcode: Standard query (0)
.... .0.. .... .... = Authoritative: Server is not an authority for domain
.... ..0. .... .... = Truncated: Message is not truncated
.... ...1 .... .... = Recursion desired: Do query recursively
.... .... 1... .... = Recursion available: Server can do recursive queries
.... .... .0.. .... = Z: reserved (0)
.... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
.... .... ...0 .... = Non-authenticated data: Unacceptable
.... .... .... 0000 = Reply code: No error (0)
Questions: 1
Answer RRs: 2
Authority RRs: 0
Additional RRs: 0
Queries
www.bulletinsanciens.uottawa.ca: type A, class IN
Name: www.bulletinsanciens.uottawa.ca
Type: A (Host address)
Class: IN (0x0001)
Answers
www.bulletinsanciens.uottawa.ca: type CNAME, class IN, cname uottawa.mailoutinteractive.com
Name: www.bulletinsanciens.uottawa.ca
Type: CNAME (Canonical name for an alias)
Class: IN (0x0001)
Time to live: 41 minutes, 26 seconds
Data length: 32
Primaryname: uottawa.mailoutinteractive.com
uottawa.mailoutinteractive.com: type A, class IN, addr 209.15.195.166
Name: uottawa.mailoutinteractive.com
Type: A (Host address)
Class: IN (0x0001)
Time to live: 5 minutes
Data length: 4
Addr: 209.15.195.166 (209.15.195.166)
Uottawa 的 DNS 服务器配置为不返回递归查询信息,所以我的理解是我的 ISP 将进行第二次查询来解析 CNAME。但我不知道为什么它失败了一次,然后第二次成功了。它似乎对我来说这是我们的 ISP(Shaw)和托管我的 DNS 的 Route53 之间的问题。
我还注意到它经常继续失败---我可以继续执行失败的 dig 命令一段时间,然后它才会再次成功。
我已经走到这一步了,但不知道如何进一步调试。知道哪里出了问题吗?
答案1
数据包捕获没有显示任何你的挖掘查询没有显示的内容。Reply code: No such name (3)
是一种冗长的说法NXDOMAIN
(代码 3),后者对 DNS 管理员更有意义。我不会从您的帖子中删除数据包捕获,但如果您同意我的观点,其他人就不必费力地浏览这些文字。
的回应NXDOMAIN
是有问题的;它表明成功的您的 ISP 的递归名称服务器进行查找。从您的角度来看,这是不好的行为,因为记录丢失了,但失败的方式却说明了另一回事。您的 ISP 的服务器说:“我与权威名称服务器进行了交谈,收到了成功的回复,并且他们告诉我记录不存在”。这与 完全不同SERVFAIL
,后者表明存在实际的沟通问题。
查询之间的不同响应很可能是由于负载平衡造成的:您查询的 IP 地址后面有多个服务器。其中一个服务器已“负面缓存”查找失败,并且在ncache
该域的间隔到期之前不会再次尝试查找。他们的另一台服务器成功了,并“积极缓存”了它,导致它在 TTL 持续时间内记住该答案。(3532 表示自该事件以来已过去 68 秒,3532+68 = 3600)
结论
由于 AWS 的分布式特性,我们任何人都很难为您提供超出此范围的建议。我查询了提供给我的四个名称服务器地址,没有发现任何问题。
如果再次看到此问题,您可以尝试A
直接查询记录以查看是否有任何突出的问题:
dig www.alumninews.uottawa.ca @64.59.184.1
(+recurse
默认设置,不是必需的)
最好的办法是下次发生这种情况时要求您的 ISP 进一步调查,但要准备好接受这样的回应:“我们的服务器正在按照指令运行,我们无法帮助您”。
答案2
在我看来,这是我们的 ISP(Shaw)和托管我的 DNS 的 Route53 之间的问题。
我同意。因为 8.8.8.8 和 8.8.4.4(谷歌的 DNS 服务器)以及我的本地 DNS 服务器没有出现您所描述的任何问题,所以是时候向您的 ISP 名称服务器的管理员报告了。