域的权威 DNS 服务器是否必须允许递归以允许 CNAME 记录指向其他域?

sco*_*chi 5 domain-name-system cname-record recursive dreamhost heroku

所以我在 Dreamhost 上注册了一个域,它显然不进行递归查找,并且在 Heroku 上有一个应用程序。Heroku 应用程序始终配置为使用 CNAME 记录到proxy.heroku.com.

所以:

Authoritative DNS:  ns1.dreamhost.com (for foo.com)

CNAME record:       app.foo.com -> proxy.heroku.com

Resolves to:        Set of A records for EC2 IPs
Run Code Online (Sandbox Code Playgroud)

一些试图从 Windows Server 2003 DNS 服务器后面连接到该应用程序的人告诉我,它以不同的方式处理 SERVFAIL 并且无法解析 DNS。我试图了解这是否真的是我或他们的配置问题,特别是根据标题:

域的权威 DNS 服务器是否必须递归以允许 CNAME 记录指向其他域?

Fre*_*hie 6

不,您不需要对权威 DNS 服务器进行递归。根据您询问的对象,甚至认为(如果可能)您的权威服务器不是递归的也是一种很好的做法,因为它是抵御某些 DoS 攻击的一道防线。(例如Cisco 的文档在这里

来自我的域的示例如下(服务器正在运行 Bind 9 并且是非递归的)。

; <<>> DiG 9.5.1-P3 <<>> mail.<snip> @<my authoritative master>
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1216
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;mail.<snip>.       IN  A

;; ANSWER SECTION:
mail.<snip>.        86400   IN  CNAME   ghs.google.com.
ghs.google.com.     158151  IN  CNAME   ghs.l.google.com.
ghs.l.google.com.   33    IN  A       74.125.47.121

;; AUTHORITY SECTION:
google.com.     153556  IN  NS  ns4.google.com.
google.com.     153556  IN  NS  ns2.google.com.
google.com.     153556  IN  NS  ns3.google.com.
google.com.     153556  IN  NS  ns1.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.     169823  IN  A   216.239.32.10
ns2.google.com.     169823  IN  A   216.239.34.10
ns3.google.com.     169823  IN  A   216.239.36.10
ns4.google.com.     169823  IN  A   216.239.38.10
Run Code Online (Sandbox Code Playgroud)

这听起来更像是 Windows 2003 DNS 上的 DNS 配置错误,而不是其他任何事情。

  • 为了强调这一点……您将很难找到对 DNS 有任何了解的人,他们会建议在权威服务器上使用递归是一个好主意。大多数与 DNS 相关的令人讨厌的错误都需要启用递归,并且只要有可能,您应该将这些角色分开。 (7认同)