我的 DNS 查询返回了其他区域中的 Web 服务器的 IP 地址。例如,美国的某个用户被路由到位于欧洲的某个 Web 服务器的 IP 地址。如何排查并解决 Amazon Route 53 地理位置路由问题?

Route 53 地理位置路由问题可能由以下原因导致:

  • 地理位置路由设置中缺少默认位置
  • DNS 解析器不支持 EDNS0 的 EDNS 客户端子网扩展,这可能导致对位置的确定不准确
  • 地理位置分散的 DNS 解析器
  • 未全球发布的资源记录 DNS 更改

1.    确保对 Route 53 托管区域的资源记录进行正确配置,并且存在默认的资源记录集。例如,从 AWS Route 53 控制台检查 Route 53 托管区域配置中指定的默认位置。

考虑以下示例输出:

>> dig images.example.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.45.amzn1 <<>> images.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51385
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;images.example.com.             IN        A

;; AUTHORITY SECTION:
images.example.com.        60    IN        SOA    ns-1875.awsdns-42.co.uk.awsdns-hostmaster.amazon.com.1 7200 900 1209600 86400

;; Query time: 65 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Tue Feb  7 22:02:30 2017
;; MSG SIZE  rcvd: 124

如果您的地理位置路由设置中没有配置默认位置,DNS 响应将为 rcode 字段返回 NOERROR,且 ANSWER 部分中没有结果。为纠正此问题,请在您的地理位置路由设置中添加一个默认位置。

2.    使用检查工具中的 Route 53 测试记录集来确定针对特定请求返回哪些资源记录。有关更多信息,请参阅使用检查工具查看 Amazon Route 53 如何响应 DNS 查询

3.    Route 53 支持 EDNS0EDNS 客户端子网扩展。解析器或本地名称服务器将 EDNS 客户端子网附加到 DNS 查询中,以在客户端的源 IP 子网上进行 DNS 查询。

如果该数据没有随请求传送,则 Route 53 会使用 DNS 解析器的源 IP 地址来大致确定客户端的位置,并以解析器位置的 DNS 记录来响应地理位置查询。如果 EDNS 数据未传送到 Route 53,并且客户端使用的是不同地区的递归名称服务器,这将导致位置信息不佳,从而为 DNS 查询提供错误的资源记录。

要解决这一问题,请更改为支持 EDNS 客户端子网的递归 DNS 服务器,执行 DNS 解析,然后共享输出。如果递归 DNS 服务器不支持 EDNS 客户端子网,请尝试使用支持的 DNS 服务器;例如 Google DNS、OpenDNS 和 Amazon DNS 服务器。对于 EC2-Classic,Amazon DNS 服务器位于 172.16.0.23。对于 EC2-VPC,Amazon DNS 服务器位于 VPC 网络范围起始地址 + 2 的位置。

4.    检查客户端 DNS 解析器,以验证其在地理上接近其位置。Route 53 使用 resolver-identity.cloudfront.net 来映射 DNS 查询的来源 IP 地址。要收集解析器的 IP 地址,请使用命令每分钟运行一次或安排 Cron 任务。例如,使用以下命令之一:

dig resolver-identity.cloudfront.net

nslookup resolver-identity.cloudfront.net

使用 Maxmind 的 GeoIP 数据库 (maxmind.com/en/geoip-demo) 或您偏好的 GeoIP 数据库来检查解析器返回的 IP 地址的位置,然后验证 DNS 解析器接近客户端的公有 IP 地址。

考虑以下示例输出:

dig resolver-identity.cloudfront.net

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.45.amzn1 <<>> resolver-identity.cloudfront.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45073
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;resolver-identity.cloudfront.net.            IN        A

;; ANSWER SECTION:
resolver-identity.cloudfront.net.    10       IN        A    x.y.z.w
;; Query time: 11 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Tue Feb  7 22:45:00 2017
;; MSG SIZE  rcvd: 66

;; Query time: 11 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Tue Feb  7 22:45:00 2017
;; MSG SIZE  rcvd: 66

5.    使用您偏好的工具(例如 cachecheck.opendns.com)检查 DNS 传播是否有任何问题。

注意:别名地理位置资源记录可能需要 60 秒才会反映更改。


此页面对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2017 年 3 月 15 日