为什么我无法解析接口 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 服务器。
您可以对源网络中的服务域名使用工具(如 nslookup 或 dig)来确认其解析到的 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
注意:为了路由 DNS 查询,必须使用 VPC 对等连接、AWS Transit Gateway 等建立从网络到 VPC 的连接。