为什么我无法通过 VPC 对等连接解析域名?

上次更新日期:2022 年 4 月 12 日

我无法通过我的 Amazon Virtual Private Cloud(Amazon VPC)对等连接解析域名。如何排查此问题?

解决方法

注意:以下情况假定该 VPC 配置了 AmazonProvidedDNS。如果您使用的是自定义 DNS 但无法解析域名,请执行以下操作:

  • 在自定义 DNS 中添加记录。
    – 或者 –
  • 配置 DNS 以将某些查询转发到 Amazon 提供的 DNS。Amazon 提供的 DNS 是 VPC CIDR 的 .2 IP 地址。

场景 1:解析为在对等 VPC 中创建的 Amazon EC2 实例的公有 DNS

Amazon Elastic Compute Cloud(Amazon EC2)会在创建实例时分配私有和公有 DNS 名称。默认情况下,会将以下域名分配给实例:

  • 私有 DNS:ip-172-31-19-128.ec2.internal(适用于 us-east-1 区域)或 ip-172-31-12-97.us-west-2.compute.internal(适用于其他区域)。
  • 公有 DNS:ec2-54-147-16-116.compute-1.amazonaws.comec2-35-88-61-144.us-west-2.compute.amazonaws.com

如果您使用自定义域名(例如“example.com”)配置 DHCP 选项集,EC2 实例将使用该域名。例如,ip-172-31-12-97.us-west-2.example.com

从 AWS 中的任何实例解析为私有 DNS 时,将解析为您在其中创建实例的 VPC 的私有 IP 地址:

$ dig ip-172-31-12-97.us-west-2.compute.internal +short
172.31.12.97

从在对等 VPC 中创建的另一个实例解析实例的公有 DNS 时,将解析为该实例的公有 IP 地址:

$ dig ec2-35-88-61-144.us-west-2.compute.amazonaws.com +short
35.88.61.144

您可以将公有域名解析为 EC2 实例的私有 IP 地址。为此,请在 VPC 对等连接上启用以下任一选项:

  • Requester DNS resolution(请求方 DNS 解析)
    – 或者 –
  • Accepter DNS resolution(接受方 DNS 解析)

有关更多信息,请参阅为 VPC 对等连接启用 DNS 解析

启用 DNS 解析后,您可以将公有 DNS 解析为实例的私有 IP 地址,如以下例所示:

$ dig ec2-35-88-61-144.us-west-2.compute.amazonaws.com +short
172.31.12.97

如果在 VPC 对等连接上启用 DNS 解析后 DNS 解析不起作用,请使用以下步骤排查问题。

问题排查步骤

1.    验证源 VPC 和目标 VPC ID。

2.    确保使用 VPC 对等连接的源 VPC 和目标 VPC 之间存在活跃对等连接。

3.    确保对等连接中使用的两个 VPC 都已启用 DNS hostnames(DNS 主机名)和 DNS resolution(DNS 解析)。

4.    检查对等连接的 DNS 配置,并确保为请求方 VPC 和接受方 VPC 都启用了 DNS 解析。

5.    验证您要解析到的公有域名是否存在。检查目标 VPC,确保存在与域名中提到的公有 IP 相同的实例。

6.    验证 VPC 中的 DNS 配置是否为 AmazonProvidedDNSCustomDNS。如果您使用的是自定义 DNS,请验证自定义 DNS 是否能够解析公有实例的域名。如果自定义 DNS 无法解析该域名,请执行以下任一操作:

添加静态 DNS 记录。

– 或者 –

将查询重定向到 AmazonProvidedDNS

场景 2:解析在对等连接 VPC 中创建的服务的域名

当您创建有域名的服务时,可以从任意对等 VPC 的实例中解析该域名。这是因为为这些服务创建的域名是公有记录,可以从任何地方解析。例如,以下域名记录可公开解析:

  • testCLB-520693273.us-east-1.elb.amazonaws.com
  • test-87913728ca9b8a68.elb.us-east-1.amazonaws.com
  • vpce-057d3426e21755b8a-svk1k3tm.ssm.us-east-1.vpce.amazonaws.com

注意:即使域名用于私有负载均衡器,记录也是公有的,并将解析为私有 IP 地址。

服务终端节点域名(例如“ssm.us-east-1.amazonaws.com”)解析为公有 IP 地址。即使在对等 VPC 中创建了已启用 Private DNS(私有 DNS)选项的接口终端节点也是如此。您可以将服务终端节点的域名解析为接口终端节点的私有 IP 地址。为此,资源必须是您在其中创建接口终端节点的 VPC 的一部分。

示例

在 VPCA 上配置了接口 VPC 终端节点。您正在尝试从 VPCB 将服务域名解析为 VPCA 中的接口 VPC 终端节点 IP。在这种情况下,您在 VPCB 中需要一个 Amazon Route 53 出站解析程序终端节点,在 VPCA 中需要一个 Route 53 入站解析程序终端节点。

注意:有关使用向导配置 Route 53 Resolver 的信息,请参阅 Route 53 Resolver 入门

  1. 在 VPCB 中创建 Route 53 Resolver 出站终端节点(您要访问终端节点 DNS 的位置)。
  2. 在 VPCA 中创建 Route 53 Resolver 入站终端节点(您创建终端节点的位置)。
  3. 创建具有区域 VPCA 中的域名和目标 IP 地址的 Route 53 Resolver 规则。

VPCB 中的出站终端节点会将对服务域名的 DNS 查询转发到 VPCA 中入站解析程序终端节点的 IP。VPCA 中的入站终端节点接收服务域名的 DNS 查询。然后,入站终端节点将查询转发到 VPCA 中 Amazon 提供的 DNS 服务器进行解析。

在 Route 53 Resolver 终端节点处于活跃状态后,您可以使用私有 DNS 名称访问此终端节点。

问题排查步骤

1.    验证源 VPC 和目标 VPC ID。

2.    确保源 VPC 和目标 VPC 之间存在活跃对等连接。

3.    确保对等连接中使用的两个 VPC 都已启用 DNS hostnames(DNS 主机名)和 DNS resolution(DNS 解析)。

4.    检查对等连接的 DNS 配置,并确保为请求方 VPC 和接受方 VPC 都启用了 DNS 解析。

5.    验证您要解析到的公有域名是否存在。检查目标 VPC,并确保在 VPC 中创建了已启用 Private DNS(私有 DNS)选项的 VPC 接口终端节点。

6.    验证 VPC 中配置的 DNS 是否为 AmazonProvidedDNSCustomDNS。如果您使用的是自定义 DNS,请验证自定义 DNS 是否可以解析此域名。如果自定义 DNS 无法解析此域名,请添加静态 DNS 记录,或配置自定义 DNS 以将查询转发到 AmazonprovidedDNS

7.    验证与具有 VPC 解析程序终端节点的子网关联的路由表是否有指向源或目标 VPC 的对等路由。对两个 VPC 中的所有入站和出站 VPC 解析程序终端节点执行此操作。

8.    验证与创建解析程序终端节点的子网关联的网络 ACL 是否允许来自对等 VPC CIDR 的入站流量。

9.    验证入站和出站解析程序的配置是否正确,并且具有将流量转发到下一跃点的正确规则。有关更多信息,请参阅如何排查 Route 53 Resolver 终端节点的 DNS 解析问题

场景 3:在私有托管区域中创建的自定义域名

您为自定义域名创建了私有托管区域,该域名用于将域解析为在私有托管区域中创建的记录。VPC A 与私有托管区域关联。VPC B 与 VPC A 进行对等连接。您希望将自定义域名从 VPC B 解析到 VPC A,以便在其中解析自定义域。

有两种方法可以实现这一目的:

  • 解决方法 1:将查询从 VPC B 转发到主 VPC A 的 DNS。此情况与场景 2 类似。
  • 解决方法 2:将 VPC B 关联到您在其中创建记录的自定义域的私有托管区域。建立关联后,您可以从两个对等 VPC 中的资源解析私有托管区域中的自定义域名。

问题排查步骤

注意:对于解决方法 1,请按照场景 2 中提到的问题排查步骤进行操作。

1.    验证源 VPC 和目标 VPC ID。

2.    验证 VPC 中配置的 DNS 是否为 AmazonProvidedDNSCustomDNS。如果您使用的是自定义 DNS,则无法解析为私有托管区域中托管的记录。要解决此问题,请在自定义 DNS 上添加一个静态域名记录。或者,配置自定义 DNS 以将查询转发到 AmazonprovidedDNS

3.    如果您使用的是 Amazon 提供的 DNS,请验证您尝试解析的域及其托管位置(Amazon Route 53 或本地部署)。如果是本地部署,请确保用于将查询转发到本地部署 DNS 的出站解析程序终端节点配置正确。

4.    如果托管在 Route 53 私有托管区域中,请验证源 VPC 是否与私有托管区域关联。源 VPC 是您尝试解析自定义域名的位置。

5.    确保您尝试解析的 FQDN 在私有托管区域中创建了记录。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?