Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何解决 Route 53 中基于 IP 的路由问题?
当我在 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
或者,使用 dig 或 nslookup 来验证 DNS 解析是否如期运行。在下列命令示例中,将 example.com 替换为您的域。
dig example.com @8.8.8.8 nslookup example.com 8.8.8.8
4. 如果您为基于 IP 的资源记录设置了运行状况检查记录,请使用这些记录来验证运行状况。如果具有默认(*)位置的记录的运行状况检查失败,则 Route 53 会将默认位置作为 DNS 查询响应返回。
相关信息
- 语言
- 中文 (简体)
