我们有一个指向 Amazon Elastic Load Balancer 实例的 CNAME 条目。出于某种原因,我的移动应用程序可以在 wifi 上解析此条目,但不能在 3G 上解析 - 我想它在 3G 上与不同的名称服务器通信,而不是在 Wifi 上,并得到了不同的答案。
通过本地名称服务器执行时,ANY 查询如下所示(部分内容已被删除以保护无辜者):
; <<>> DiG 9.6.0-APPLE-P2 <<>> elb.foo.com ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1051
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;elb.foo.com. IN ANY
;; ANSWER SECTION:
elb.foo.com. 299 IN CNAME elb-foo-com-12345.us-east-1.elb.amazonaws.com.
elb-foo-com-12345.us-east-1.elb.amazonaws.com. 1 IN SOA ns-123.amazon.com. dns.amazon.com. 1288881125 3600 900 7776000 60
elb-foo-com-12345.us-east-1.elb.amazonaws.com. 600 IN NS ns-123.amazon.com.
elb-foo-com-12345.us-east-1.elb.amazonaws.com. 60 IN A 174.129.0.0
但是,当我直接查询名称服务器(@dns1.registrar-servers.com)时,我得到以下答案:
; <<>> DiG 9.6.0-APPLE-P2 <<>> @dns1.registrar-servers.com elb.foo.com ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 7735
;; flags: qr rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;elb.foo.com. IN ANY
;; ANSWER SECTION:
elb.foo.com. 300 IN CNAME elb-foo-com-12345.us-east-1.elb.amazonaws.com.
这里有趣的部分是“警告:请求递归但不可用”和“SERVFAIL”。我想我需要与我的 DNS 提供商交谈,但我的谈话要点应该是什么?如果我无法解决问题,我该怎么办?
编辑:我尝试使用 Android“Ping 和 DNS”应用来解析域名。在 3G 上,除了 CNAME 和 SOA 类型外,其他所有类型的域名都会超时或显示“类型未找到”。根据该应用,我认为使用的 DNS 服务器是 69.78.96.14。
答案1
“请求递归”警告不应该相关 - 即使请求了递归,大多数权威服务器仍将继续提供权威答案,这是默认设置dig
。
我刚刚使用 Google 查找了托管在同一位置的域名,结果如预期一样。但是尝试其他已知不托管在该位置的域名时,会出现SERVFAIL
。
这有点奇怪 - 正常错误应该是REFUSED
,但它表明您的域名在该服务器上没有正确配置。
答案2
令人惊讶的是,似乎是这个问题:
http://developer.amazonwebservices.com/connect/thread.jspa?threadID=53360
Verizon 的 DNS 系统中的管道显然无法处理较大的 CNAME 条目,并且条目超时。将负载均衡器名称重命名为单个字符解决了这个问题。
答案3
这是一个更好的解决方案,在 Amazon 的 Route 53 中创建一个别名。当然,它要求您通过他们获得您的 DNS。
http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/HowToAliasRRS.html