You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VPC接口终端点配置疑问:非关联子网实例为何解析到其IP?

问题分析与解决方案

你对VPC接口终端点的理解确实存在偏差

当你为VPC接口终端点启用私有DNS后,AWS会自动修改VPC的默认DNS解析规则:整个VPC内的所有实例,无论部署在哪个子网,都会将S3的区域域名(比如s3.us-east-1.amazonaws.com)解析到接口终端点的IP地址——这就是当前两个实例执行dig s3.us-east-1.amazonaws.com结果一致的原因,属于正常行为。

你的预期(仅Subnet A的实例解析到接口IP,Subnet D解析公网IP)不符合接口终端点私有DNS的默认逻辑,因为私有DNS是作用于整个VPC的,而非仅关联了终端点的子网。

实现子网级解析区分的方法

要让不同子网的实例分别解析到接口终端点IP或S3公网IP,需要通过DNS配置来实现,具体步骤如下:

1. 调整接口终端点的私有DNS设置

首先禁用VPC接口终端点的私有DNS,这样VPC默认DNS不会再强制把S3域名解析到接口终端点。

2. 创建Route 53私有托管区

在Route 53中创建与你的VPC关联的私有托管区,域名设置为s3.us-east-1.amazonaws.com。

3. 配置子网级解析规则

  • 在私有托管区中添加一条A记录,将域名指向你的VPC接口终端点的IP地址。
  • 编辑私有托管区的关联VPC设置,仅关联Subnet A和Subnet B所在的VPC(并指定这两个子网),让只有这两个子网的实例使用该私有托管区的解析规则。

这样配置后:

  • Subnet A、B的实例会通过私有托管区解析到接口终端点IP
  • Subnet D的实例会使用默认公网DNS解析,返回S3的公网区域IP

替代方案(不推荐用于生产)

如果不想配置Route 53,可以在Subnet D的i-02实例本地修改/etc/hosts文件,手动添加S3公网IP与域名的映射,但这种方式维护成本高,不适合多实例场景。

额外注意

S3的VPC接口终端点主要用于S3的控制平面操作(如API调用、控制台访问),数据平面的对象访问通常使用VPC网关终端点,如果你是为了让私有子网访问S3对象,网关终端点是更合适的选择,且网关终端点不需要关联子网,只要路由表配置正确即可。

内容的提问来源于stack exchange,提问作者ziad hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 21:15:11