为什么我无法解析接口 VPC 终端节点的服务域名?

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

我正在为 AWS 服务使用接口 virtual private cloud (Amazon VPC) 端点。我想使用默认服务域名(例如 ec2.us-east-1.amazonaws.com),以通过 VPC 接口端点访问服务。为什么我无法解析接口 VPC 终端节点的服务域名?

解决方法

要解析接口 VPC 终端节点的服务域名(例如 ec2.us-east-2-amazonaws.com),请记住以下几点:

  • 要将服务域名解析为接口 VPC 终端节点的私有 IP,您必须将 DNS 查询发送到创建接口端点的 VPC 的 Amazon 提供的 DNS。Amazon 提供的 DNS 是 VPC CIDR plus 2 的基础。
  • 在创建接口 VPC 终端节点的 VPC 上,验证 VPC 的 DNS 属性DNS 主机名DNS 解析)是否已启用。
  • 使用接口 VPC 终端节点访问可用的 AWS 服务(如 Amazon Elastic Compute Cloud (Amazon EC2))时,您可以在端点上启用私有 DNS 名称。启用此参数后,对服务域名的查询将解析为私有 IP 地址。这些私有 IP 地址是在给定接口端点的每个关联子网中创建的弹性网络接口的 IP 地址。
    启用私有 DNS 名称后,您可以通过 AWS PrivateLink 使用服务域名(例如 ec2.us-east-1.amazonaws.com)运行 AWS API 调用。
    对于接口 VPC 终端节点,验证私有 DNS 名称是否已打开。如果未开启私有 DNS 名称,则服务域名或端点域名将解析为区域公有 IP。有关启用私有 DNS 名称的步骤,请参阅修改接口端点
  • 您可以在 VPC 的 DHCP 选项集中指定自定义域名服务器。使用自定义域名服务器时,对服务域名的 DNS 查询会发送到自定义域名服务器进行解析。自定义域名服务器可能位于 VPC 内部或 VPC 外部。
    自定义域名服务器必须将服务域名转发到创建接口端点的 VPC 的 Amazon 提供的 DNS 服务器。
  • 如果您尝试从 VPC 外部(跨 VPC 或本地部署)访问接口端点,请确保您具有 DNS 架构。DNS 架构应将对服务域名的 DNS 查询转发到创建接口端点的 VPC 的 Amazon 提供的 DNS 服务器。
    您可以对源网络中的服务域名使用工具(如 nslookupdig)来确认其解析到的 IP。
    或者,您可以在软件开发工具包上使用区域端点域名来执行 API 调用。接口端点的区域端点域名可从任何网络解析。以下是使用 AWS Command Line Interface (AWS CLI) 执行描述调用的示例:
$aws ec2 describe-instances --endpoint-url https://vpce-aaaabbbbcccc-dddd.vpce-svc-12345678.us-east-1.vpce.amazonaws.com
  • 如果您为服务域名创建了 Amazon Route 53 私有托管区域,请确保将正确的源 VPC 附加到托管区域。有关更多信息,请参阅如何排查 Route 53 私有托管区域的 DNS 解析问题?
    注意:为了路由 DNS 查询,必须使用 VPC 对等连接、AWS Transit Gateway 等建立从网络到 VPC 的连接。