【发布时间】:2019-02-14 12:12:54
【问题描述】:
我想将我的子域 (w.example.com) 指向 (ns1.w.example.com)
NS w.example.com directs to ns1.w.example.com.
A ns1.w.example.com directs to 192.0.2.139
>> dig w.example.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> w.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 20571
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;w.example.com. IN A
;; Query time: 195 msec
;; SERVER: 67.207.67.3#53(67.207.67.3)
;; WHEN: Thu Feb 14 12:10:13 UTC 2019
;; MSG SIZE rcvd: 43
为什么它会破坏 DNS 解析并让我知道将我的子域 (w.example.com) 指向 (ns1.w.example.com) 的正确方法
什么是正确的做法?
【问题讨论】:
-
始终使用
dig和@选项来指定您查询的名称服务器,否则在排除故障时,您可能会从其他名称服务器获得回复,而不是您期望的。而且您总是需要先检查您所在区域的权威名称服务器,然后再检查递归服务器。 -
A
SERVFAIL表示一个重大错误,如果它在您控制的名称服务器上,您应该首先查看它的日志文件并在那里阅读正在发生的事情。它也可能与 DNSSEC 相关,在这种情况下,将+cd添加到您的dig调用中,以确保在您的第一次测试中禁用 DNSSEC。 -
“点”是什么意思?要么将子区域委托给其他名称服务器(在这种情况下,您需要正确的
NS记录,以及与A和AAAA的潜在粘合)还是只解析特定的名称?在第二种情况下,您不需要委托,因为名称中的“点”与委托之间没有一对一的映射。在example.com区域中,您可以毫无问题地直接拥有ns1.w.example.com IN A 192.0.2.139,而无需任何NS记录(无委托)。 -
如果你想用
dig来分析问题,试试dig +trace @8.8.8.8 w.example.com和dig +trace @8.8.8.8 ns1.w.example.com,然后你会看到它在哪里中断(前提是w只有一个NS)。跨度> -
@Leo, No,
dig与@和+trace同时使用没有意义,因为@不会被考虑在内,因为+trace强制正常分辨率进程从根名称服务器开始。首先需要测试的是直接在权威名称服务器上,然后才在递归名称服务器上进行测试。请记住,世界上不仅有8.8.8.8,还有1.1.1.1、9.9.9.9、80.80.80.80或64.6.64.6等等。无论如何,最好先测试本地递归的,特别是如果你可以控制它们(绕过任何缓存问题等)