跳至内容

如何对 Route 53 VPC Resolver 端点的 DNS 解析问题进行故障排除?

3 分钟阅读
0

我无法使用 Amazon Route 53 中的入站或出站端点解析 DNS 记录。

解决方法

对 Route53 入站端点进行故障排除

要允许网络上的 DNS 解析程序使用入站端点将 DNS 查询转发到 Route 53 VPC Resolver,请采取以下操作:

  • 如果本地 DNS 服务器必须将 DNS 查询转发到域的入站端点,请创建条件转发规则。必须在本地 DNS 服务器上创建规则。此配置适用于私有托管区和公有域。

  • 确认您已通过 AWS Direct Connect 连接或 VPN 连接到入站解析程序端点 IP 地址。此步骤验证您是否可以从本地网络访问入站解析程序端点 IP 地址。使用以下 telnet 命令测试端口 53 上的入站端点解析程序 IP 地址之间的连接:

    telnet yourInboundEndpointResolverIPAddress 53.

    注意: 将 yourInboundEndpointResolverIPAddress 替换为您的信息。

  • 检查与入站解析程序端点关联的安全组。安全组必须允许 TCP 和 UDP 端口 53 上的来自本地 DNS 服务器 IP 地址的流量。

  • 确认包含入站端点的子网的自定义网络访问控制列表(网络 ACL)允许以下内容:
    端口 53 上来自本地 DNS 服务器的入站 UDP 和 TCP 流量。
    传输至目标端口范围 1024 – 65535 上本地 DNS 服务器的出站 UDP 和 TCP 流量。

  • 确认与创建了入站端点解析程序的子网关联的路由表中包括指向本地网络的路由。通过 Direct Connect 连接或 VPN 配置路由。此路由允许入站端点解析程序返回 DNS 查询响应。

  • 要验证域解析,请从本地 DNS 服务器或本地主机完成域名查找。

  • 注意: 将 yourPrivateHostedZoneDomainName 和 yourInboundEndpointIPAddress 替换为您的信息。
    对于 Windows,请运行以下命令:

    nslookup yourPrivateHostedZoneDomainName

    对于 Linux 或 macOS,请运行以下命令:

    dig yourPrivateHostedZoneDomainName
  • 如果上述命令无法返回记录,请将 DNS 查询直接发送到入站解析程序端点 IP 地址。这会绕过本地 DNS 服务器。
    对于 Windows,请运行以下命令:

    nslookup yourPrivateHostedZoneDomainName yourInboundEndpointIPAddress

    对于 Linux 或 macOS,请运行以下命令:

    dig yourPrivateHostedZoneDomainName @ yourInboundEndpointIPAddress
  • 确认您的本地 DNS 服务器仅发送递归查询。Route 53 入站解析程序不支持迭代查询。

  • 如果您在私有托管区中进行解析,请确认将入站解析程序端点和私有托管区已与正确的 Amazon Virtual Private Cloud(Amazon VPC)相关联。

对 Route53 出站端点进行故障排除

要确保 Route 53 VPC Resolver 使用出站端点有条件地将查询转发给网络上的解析程序,请完成以下步骤。

测试出站端点

要测试出站转发,请查询 Amazon VPC DNS 解析程序 IP 地址。此地址是您的 Amazon VPC CIDR 的基址加 2。

对于 Linux 或 macOS,请运行以下命令:

dig example.com @10.0.0.2

对于 Windows,请运行以下命令:

nslookup example.com 10.0.0.2

注意: 将 ** 10.0.0.2 ** 替换为 Amazon VPC 的 DNS 解析程序 IP 地址。

注意: 请勿直接查询出站端点 ENI IP 地址。直接发送到出站 ENI IP 地址的查询会静默超时。

如果 IP 地址返回,则表示转发规则匹配,目标 DNS 服务器成功响应。如果未返回,请执行以下操作:

  • 如果返回值为 SERVFAIL,则表示出站端点无法访问目标 DNS 服务器,或者目标未返回任何响应。请检查您的安全组、网络 ACL 和路由。此外还应检查 DNS 防火墙规则是否阻止了查询。
  • 如果返回值为 NXDOMAIN,则表示查询能访问目标 DNS 服务器,但该域不存在。检查转发规则中的域。
  • 如果查询超时,请检查是否已将转发规则与 Amazon VPC 关联以及出站端点是否正常运行。如果您的配置满足上述条件但查询仍超时,请联系 Support 团队进行故障排除。

**确定自定义 DNS 服务器 **

如果您的 Amazon VPC DHCP 选项集指定了自定义 DNS 服务器,而不是 AmazonProvidedDNS,则来自 Amazon Elastic Compute Cloud(Amazon EC2)的查询将首先发送到该自定义服务器。查询不会发送到 Route 53 VPC Resolver。除非查询到达 (.2) 地址,否则转发规则不会执行。

要确定您的实例使用的 DNS 服务器,请在 Linux 上运行以下命令:

cat /etc/resolv.conf

如果您的实例在同一 Amazon VPC 中使用自定义 DNS,请在自定义 DNS 服务器上配置条件转发服务器。使用此转发服务器将相关域转发到 Amazon VPC DNS 解析程序 IP 地址 (.2)。

如果您的实例在不同的 Amazon VPC 中或本地使用自定义 DNS,则只能从其自身的 Amazon VPC 内访问 .2 解析程序。****在工作负载 Amazon VPC 中创建 Route 53 Resolver 入站端点。配置自定义 DNS 服务器以转发到入站端点 ENI IP 地址。通过 Amazon VPC 对等连接、AWS Transit Gateway、Direct Connect 或 VPN 来路由这些 IP 地址。

检查与本地 DNS 服务器的网络连接

对于本地 DNS 服务器,请检查与出站解析程序端点关联的安全组。出口规则必须允许传输到您的服务器 IP 地址的 UDP 和 TCP 端口 53 流量。

检查创建了出站端点接口的子网中的自定义网络 ACL 规则。这些规则必须允许以下内容:

  • 传输至端口 53 上本地 DNS 服务器的出站 UDP 和 TCP 流量。
  • 临时端口范围 1024 – 65535 上来自本地 DNS 服务器的入站 UDP 和 TCP 流量。

确认出站端点子网的路由表中设置了通过 Direct Connect 或 VPN 到达本地 DNS 服务器的路由。检查本地 DNS 服务器的防火墙配置。防火墙必须允许来自出站解析程序端点 IP 地址的流量。

注意: 无需在 Amazon VPC 之间建立网络连接即可将 DNS 查询转发到 Resolver 规则。这适用于相同账户或不同账户中的 Amazon VPC。您只需要在出站端点的 Amazon VPC 和远程 DNS 解析程序之间建立网络连接。

检查 Resolver 规则配置

执行以下操作来检查 Resolver 规则是否配置错误:

  • 如果您使用共享规则,请确保已将共享规则与 Amazon VPC 相关联。
  • 共享规则中引用的出站端点属于规则所有者的账户。确认已符合从所有者的出站端点到目标 DNS 服务器的网络连接要求。网络连接要求包括安全组、网络 ACL、路由和本地防火墙规则。
  • 检查是否设置了针对同一域名将流量路由到您网络的 Resolver 规则。此域名优先于私有托管区。
  • 检查是否存在比预期域更具体的域名规则。Resolver 使用包含最具体域名的规则来路由出站 DNS 查询。

有关更多信息,请参阅 VPC Resolver 如何确定查询中的域名是否与任何规则匹配。

对高查询量下的间歇性故障进行故障排除

安全组连接跟踪可以将出站端点吞吐量从每个 ENI 每秒 1 万次查询(QPS)降低到每个 ENI 每秒低至 1500 次查询。症状包括间歇性的 SERVFAIL 响应或与峰值流量相关的超时。有关更多信息,请参阅安全组连接跟踪。

若要避免连接跟踪,请按照 Resolver 端点扩展最佳实践中的建议,在出站端点上使用以下宽松的安全组规则:

  • 入口: TCP 和 UDP,所有端口,来自 0.0.0.0/0。
  • 出口: TCP 和 UDP,端口 53,传输到 0.0.0.0/0。

使用 VPC 流日志和 Resolver 查询日志进行调试

使用 VPC 流日志捕获出站端点弹性网络接口上的网络流量信息。确认流量是否离开端点,并确认是否返回响应。

使用 Route 53 Resolver 查询日志记录来查看查询转发、转发规则匹配情况和响应状态。

AWS 官方已更新 2 个月前