同账号跨区域且CIDR相同的两个VPC如何连接?含RDS与EC2场景
解决同CIDR VPC的连接问题
一、修改VPC CIDR的限制与备选方案
AWS不允许修改或删除已有资源的VPC主CIDR块,但可以给VPC添加额外的非重叠CIDR块。之后你可以逐步将部分资源迁移到新CIDR下,再通过VPC对等或中转网关连接,但你提到迁移资源难度大,这个方案优先级较低。
二、无需修改CIDR的可行方案
针对你的场景(EC2需访问RDS Aurora),推荐以下几种方案:
1. 使用AWS PrivateLink(最优选择)
因为你只需要区域B的EC2访问区域A的RDS,PrivateLink完全适配这个单向访问场景,且不受CIDR重叠限制:
- 在区域A的VPC中,为RDS Aurora创建VPC端点服务(需确保RDS所在子网启用了DNS解析)
- 在区域B的VPC中,创建指向该端点服务的接口型VPC端点
- 配置EC2的安全组允许访问VPC端点的端口(3306或自定义MySQL端口),同时RDS的安全组允许VPC端点的IP段访问
- 之后EC2可以通过VPC端点的DNS名称直接访问RDS,全程走AWS内网,无需公网或VPC对等
2. 中转网关(Transit Gateway)配合NAT地址转换
如果需要两个VPC的全量资源互通,可以用TG+NAT实例实现:
- 在两个VPC中分别部署NAT实例(选用支持IP转换的EC2实例,比如Amazon Linux 2)
- 给每个VPC添加一个新的非重叠CIDR块,为NAT实例分配该CIDR下的IP
- 创建跨区域中转网关,将两个VPC的NAT实例所在子网关联到TG
- 配置VPC路由表:本地资源访问对方VPC时,路由指向NAT实例;NAT实例配置SNAT(转换源IP为新CIDR)和DNAT(转换目标IP为对方VPC的原始CIDR)
- 安全组放行NAT实例与本地资源、TG之间的流量
3. VPN服务配合地址转换
可以在两个VPC中部署第三方VPN服务器(如OpenVPN),通过VPN隧道连接,并在VPN端配置地址转换,将重叠的CIDR映射为不同的网段,实现跨VPC通信。这种方案适合对AWS原生服务依赖较低的场景,但需要自行维护VPN实例。
方案对比
| 方案 | 复杂度 | 适用场景 | 优点 |
|---|---|---|---|
| AWS PrivateLink | 低 | 单向服务访问(如EC2→RDS) | 配置简单、安全、无CIDR限制 |
| TG+NAT实例 | 中 | 双向全VPC互通 | 保留原有CIDR、支持跨区域 |
| VPN+地址转换 | 高 | 非AWS原生服务偏好场景 | 灵活性高、可自定义配置 |
内容的提问来源于stack exchange,提问作者Mahmoudnasr
相关产品推荐
相关产品推荐

