如何解决 Route 53 中基于 IP 的路由问题?

2 分钟阅读
0

当我在 Amazon Route 53 基于 IP 的路由策略上测试 DNS 解析时,我看到了意想不到的结果。

解决方法

示例场景

您的客户端有基于 IP 的路由记录,其中 CIDR 172.32.0.0/16 和 172.33.0.0/16 指向两个弹性负载均衡(ELB)负载均衡器。一个 ELB 负载均衡器位于弗吉尼亚州(us-east-1),另一个位于爱尔兰(eu-west-1)。CIDR 地址为 172.32.0.0/16 的客户端将域解析为 us-east-1 中的负载均衡器。CIDR 地址为 172.33.0.0/16 的客户端将域解析为 eu-west-1 中的负载均衡器。但是,客户没有收到预期输出。

**注意:**私有托管区不支持基于 IP 的路由方式。

要对基于 IP 的路由进行故障排除,请完成以下步骤:

1.    确认您已针对您的用例对 Route 53 托管区正确配置了基于 IP 的资源记录。访问 Route 53 控制台,并检查您在 Route 53 托管区配置中指定的默认位置。

注意:

  • 如果未在 CIDR 集合中指定与源 IP 地址匹配的 CIDR 块,则 Route 53 将使用默认的“*”位置进行应答。
  • 如果以下情况属实,则 Route 53 会以 NODATA 进行应答:
    未指定默认“*”位置。
    该查询源自一个 CIDR 块,该块与 CIDR 集合中任何指定的 CIDR 块都不匹配。
  • Route 53 会将 CIDR 长于您指定 CIDR 的 DNS 查询与 CIDR 集合中较短的指定 CIDR 进行匹配。例如,如果您在 CIDR 集合中指定 2001:db8::/32 作为 CIDR,并收到来自 2001:0db8:1234::/48 的查询,则 CIDR 会匹配。如果您在 CIDR 集合中指定 2001:db8:1234::/48,并收到来自 2001:db8::/32 的查询,则它不匹配。Route 53 以“*”位置的记录进行应答。

有关 CIDR 集合和 CIDR 块的限额,请参阅记录的限额

2.    检查客户端是否正确解析。

如果客户端在虚拟私有云(VPC)内解析并使用 VPC DNS .2 解析器,则基于 IP 的路由不起作用。这是因为 .2 解析器不支持 EDNS 客户端子网(ECS)。

如果客户端在 VPC 之外进行解析,请运行以下命令以验证您的 DNS 解析器是否支持 EDNS0:

Linux 或 macOS

dig TXT o-o.myaddr.google.com -4

Windows

nslookup -type=txt o-o.myaddr.google.com

以下输出示例列出了不支持 EDNS0 的 DNS 解析器:

$ dig TXT o-o.myaddr.google.com -4

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> TXT o-o.myaddr.google.com -4
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38328
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;o-o.myaddr.google.com. IN TXT

;; ANSWER SECTION:
o-o.myaddr.google.com. 60 IN TXT "3.209.83.70"

以下输出示例列出了支持 EDNS0 的 DNS 解析器:

$ dig TXT o-o.myaddr.google.com -4 @8.8.8.8

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> TXT o-o.myaddr.google.com -4 @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30624
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;o-o.myaddr.google.com. IN TXT

;; ANSWER SECTION:
o-o.myaddr.google.com. 60 IN TXT "172.253.8.137"
o-o.myaddr.google.com. 60 IN TXT "edns0-client-subnet 54.82.0.0/24"

3.    要检查 DNS 解析,请使用您的托管区的权威名称服务器来解析记录。运行以下命令。在以下命令示例中,将 example.com 替换为您的域名。

dig A example.com +subnet=172.3.0.0/16 @ns-1875.awsdns-42.co.uk

或者,使用 dignslookup 来验证 DNS 解析是否如期运行。在下列命令示例中,将 example.com 替换为您的域。

dig example.com @8.8.8.8
nslookup example.com 8.8.8.8

4.    如果您为基于 IP 的资源记录设置了运行状况检查记录,请使用这些记录来验证运行状况。如果具有默认(*)位置的记录的运行状况检查失败,则 Route 53 会将默认位置作为 DNS 查询响应返回。

相关信息

基于 IP 的路由

AWS 官方
AWS 官方已更新 1 年前