路由器无法解析子域名

路由器无法解析子域名

我在家里托管了几个网站,比如 example.com 和 sub.example.com,尽管我的 DNS 记录设置正确(example.com 的记录指向我的路由器的 IP 地址,而 (*) 的 CNAME 值为“example.com”),但我的路由器似乎无法解析子域名。以下是一些练习的输出,其中我的实际域名和子域名被 example.com 和 sub.example.com 替换。

~ $ drill example.com @8.8.8.8    
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 55521
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION:
;; example.com. IN  A

;; ANSWER SECTION:
example.com.    899 IN  A   109.133.244.17

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 70 msec
;; SERVER: 8.8.8.8
;; WHEN: Fri Oct 13 10:06:23 2017
;; MSG SIZE  rcvd: 41


~ $ drill sub.example.com @8.8.8.8                                                                                                                  <<<
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 33949
;; flags: qr rd ra ; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION:
;; sub.example.com. IN  A

;; ANSWER SECTION:
sub.example.com.    1799    IN  CNAME   example.com.
example.com.    899 IN  A   109.133.244.17

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 105 msec
;; SERVER: 8.8.8.8
;; WHEN: Fri Oct 13 10:06:33 2017
;; MSG SIZE  rcvd: 62


~ $ drill example.com @192.168.1.1
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 59107
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION:
;; example.com. IN  A

;; ANSWER SECTION:
example.com.    781 IN  A   109.133.244.17

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 26 msec
;; SERVER: 192.168.1.1
;; WHEN: Fri Oct 13 10:06:43 2017
;; MSG SIZE  rcvd: 41

~ $ drill -V 10000 sub.example.com @192.168.1.1 
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 0
;; flags: rd ; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION:
;; sub.example.com. IN  A

;; ANSWER SECTION:

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; WHEN: Fri Oct 13 10:17:39 2017
;; MSG SIZE  rcvd: 0
Error: error sending query: Could not send or receive, because of network error

为了完整起见,以下是与域关联的 DNS 记录:

@ 900 IN A 109.133.244.17
@ 10800 IN SOA ns1.gandi.net. hostmaster.gandi.net. 1507886704 10800 3600 604800 10800
sub 10800 IN CNAME example.com.
imap 10800 IN CNAME access.mail.gandi.net.
pop 10800 IN CNAME access.mail.gandi.net.
smtp 10800 IN CNAME relay.mail.gandi.net.
webmail 10800 IN CNAME webmail.gandi.net.

有人知道是什么导致了这种奇怪的行为吗?

谢谢。

答案1

问题在于您在“基础”记录上使用 CNAME。这是一个常见的问题 - CNAME 不仅仅是将一个域重定向到另一个域,它还是该域的 SOA 委派 - 因此您通常希望在 www.example.com 上使用 CNAME,而不是在 example.com 上使用 CNAME。(规则是永远不要在域名上使用 CNAME,只能在子域上使用)

技术推理很困难 - 它指定在rfc1034 的 3.6.2。“域系统使用规范名称 (CNAME) RR 提供此类功能。CNAME RR 将其所有者名称标识为别名,并在 RR 的 RDATA 部分中指定相应的规范名称。 如果节点上存在 CNAME RR,则不应存在其他数据;这确保了规范名称及其别名的数据不会有差异。此规则还确保可以使用缓存的 CNAME,而无需与权威服务器核对其他 RR 类型。”

相关内容