因此,我在 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
有人告诉我,他们尝试从 Windows Server 2003 DNS 服务器后面连接到该应用程序,它以不同的方式处理 SERVFAIL,无法解析 DNS。我试图了解这是否真的是我这边的配置问题,还是他们的配置问题,特别是根据标题:
域的权威 DNS 服务器必须是递归的才能允许 CNAME 记录指向其他域吗?
答案1
不,您不需要对权威 DNS 服务器启用递归。根据您询问的对象,甚至认为(如果可能)您的权威服务器不启用递归是一种好的做法,因为它是抵御某些 DoS 攻击的一道防线。(思科的文档是这里例如)
下面是来自我的域的一个示例(服务器正在运行 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
这听起来更像是 Windows 2003 DNS 的 DNS 配置错误。
答案2
权威服务器应该不是配置为提供递归服务。甚至无法解决 Microsoft 的一个潜在错误。
目前我无法引用章节和诗句(如果我找到,我会更新)。然而,这是 DNS 服务器操作公认的“最佳通用做法”。
如果查找链中的某个解析器返回,SERVFAIL
则这仅表示某处配置错误,或者您问了错误的问题(或使用错误标志提出了正确的问题)。
就您而言,如果您要求递归答案(默认情况下这样做),dreamhost.com
服务器就会返回。它们完全有权这样做,它们是权威服务器,而不是递归服务器。SERVFAIL
nslookup
在我的系统上,如果我使用dig
并特别禁用递归,我会得到:
% dig +norecurse @ns1.dreamhost.com mail.scotchi.net.
; <<>> DiG 9.6.0-APPLE-P2 <<>> +norec @ns1.dreamhost.com mail.scotchi.net.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54426
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 13
;; QUESTION SECTION:
;mail.scotchi.net. IN A
;; ANSWER SECTION:
mail.scotchi.net. 14400 IN CNAME ghs.google.com.
答案3
Dreamhost 使用 powerdns(呃),同样糟糕...但 Windows 递归解析器确实很烂。
问题是,为什么您客户端站点上的 Windows DNS 框会出现 SERVFAIL?它们不应该出现。
并且,上述海报是正确的 - 如果您对某个域具有权威性,您可以将其 cname、A、失败、您命名到任何域/ip(您不必知道与其他域的粘合)。
也许就是这样 —— 要求您的 A 记录(并获得 cname)的 DNS 解析器认为它也知道 heroku.com 的粘合剂。
您可以分析原始查询的列出的名称服务器以查看发生了什么,但在“最坏情况”下,您只需提供“A”记录即可。这只是一个 PITA。
如果你想发布一个现实世界的失败域,那很酷;你也可以 PM 或 AIM nerdNG :p(我喜欢用 dns 查找根本原因问题。Go fig)
答案4
我一直在寻找与我自己的问题“类似”的问题这里并且似乎有相当多的相似点(例如Windows2003 DNS服务器和SERVFAIL响应)
如果有人有上述“潜在的 Microsoft 错误”的链接,他们介意发布详细信息吗?
非常感激。