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

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

我无法通过我的 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.    检查对等连接的 DNS 配置。确保请求方接受方 VPC 的 DNS 解析均已启用。

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

5.    验证 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 中创建了已启用私有 DNS 选项的接口端点也是如此。此外,只有在创建接口端点的 VPC 中查询时,这些名称才会解析为私有 IP 地址。为了将端点域名解析为来自对等 VPC 的端点私有 IP 地址,您必须创建正确的 DNS 架构。

在以下示例中,在 VPC A 上配置了接口 VPC 端点,以将服务域名从 VPC B 解析到 VPC A 中的接口 VPC 端点 IP 地址:

  1. 在关闭 PrivateDNS 的情况下为服务创建接口端点。
  2. 使用创建接口端点的账户中的服务域名(例如 ssm.us-east-1.amazonaws.com)创建私有托管区。
  3. 确保对等连接中的两个 VPC 都已启用 DNS 主机名和 DNS 解析。
  4. 创建别名记录,将服务域名指向接口端点 DNS 的区域端点:vpce-057d3426e21755b8a-svk1k3tm.ssm.us-east-1.vpce.amazonaws.com。 或者,创建一条记录,将服务域名指向在 VPC A 中创建的接口 VPC 端点的私有 IP 地址。
  5. 将您创建的私有托管区关联到对等 VPC(VPC B)。 如果 VPC B 是跨账户的,请参阅如何将 Route 53 私有托管区关联到其他 AWS 账户上的 VPC?

问题排查步骤

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

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

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

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

5.    验证两个对等 VPC 是否与创建域名记录的同一个私有托管区相关联。

6.    确保记录指向正确的 VPC 端点区域特定域或接口端点 IP 地址。

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

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

为了解析,将 VPC B 关联到您在其中创建记录的自定义域的私有托管区。建立关联后,您可以从两个对等 VPC 中的资源解析私有托管区中的自定义域名。

问题排查步骤

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 在私有托管区域中创建了记录。


这篇文章对您有帮助吗?


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