我尝试在我的 Amazon VPC 以及与另一个 AWS 账户关联的 VPC 之间创建 Amazon Virtual Private Cloud(Amazon VPC)对等连接。但是,我收到了以下错误消息:“The connection failed due to incorrect VPC-ID, Account ID, or overlapping CIDR range.(由于 VPC-ID、账户 ID 不正确或 CIDR 范围重叠,连接失败。)”
解决方法
检查 Amazon VPC 设置
与另一个 AWS 账户中的 VPC 创建 VPC 对等连接时,确保检查以下设置 :
- 正确输入了 **VPC(接受方)**的账户 ID。
- 选择了 **VPC(接受方)**的正确 VPC ID。
- 所选 **VPC(请求方)**和 **VPC(接受方)**的主 CIDR 块或辅助 CIDR 块均没有重叠。
**注意:**如果您的 VPC 存在重叠的 CIDR 块,您将无法创建 VPC 对等连接。您必须删除并重新创建一个具有非重叠 CIDR 块的 VPC。
实施重叠 CIDR 块的最佳实践
通过 AWS Transit Gateway 使用私有 NAT 网关和 Application Load Balancer,在具有重叠 CIDR 块的两个 VPC 之间建立私有通信。
完成以下步骤。
第一个 VPC:
- 添加一个不相同的辅助 CIDR。
- 在 CIDR 的主数据块和辅助数据块中创建其他私有子网。
- 在辅助 CIDR 子网中创建私有 NAT 网关,以在子网范围内建立私有 IP 地址。
第二个 VPC:
- 将辅助 CIDR 添加到主重叠 CIDR。
- 在主 CIDR 中创建另一个相同的私有子网。
- 在新创建的私有子网中,启动托管 Amazon Elastic Compute Cloud(Amazon EC2)实例的应用程序。
- 在不同的可用区中再创建两个私有子网。
- 创建内部 Application Load Balancer,然后从步骤 4 中选择子网。
- 配置 Application Load Balancer,然后通过选择已启动的实例作为 Target(目标)来注册实例。**注意:**Application Load Balancer 的目标必须是主 CIDR 私有子网中的工作负载,第一个 VPC 的工作负载需要访问这些工作负载。另外,请确保已注册的目标运行正常。
Transit Gateway:
- 创建 Transit Gateway,然后为默认路由表传播选择 Disabled(已禁用)。
- 通过在每个可用区中关联相应的子网,为每个 VPC 创建 Transit Gateway VPC 附件。
- 在 Transit Gateway 路由表中输入路由,以将目标 CIDR 路由到 VPC 附件。
VPC 路由表:
对于第一个 VPC:
- 编辑私有子网中工作负载的路由表。
- 通过私有 NAT 网关为辅助目标 CIDR 添加静态路由。
- 创建或修改启动私有 NAT 网关的 NAT 子网路由表。
- 通过 Transit Gateway 向目标 VPC 的辅助 CIDR 添加路由条目。
对于第二个 VPC:
- 编辑 Application Load Balancer 子网的路由表。
- 通过 Transit Gateway 为第一个 VPC 的辅助 CIDR 的返回流量添加路由。
连接检查:
- 使用 SSH 连接到第一个 VPC 的工作负载实例。
- 通过 Application Load Balancer 测试第二个 VPC 中目标实例的连接。
**重要提示:**确保可用区或 VPC 附件中的子网与 NAT 网关的可用区或子网一致。
限制:
- 将流量路由到私有 NAT 网关和另一个 VPC 使本地部署网络成为单向网络。如果本地部署网络是单向的,则连接另一端的资源无法使用 NAT 网关。
- 您只能将 NAT 网关路由到 Transit Gateway,以便在两个 VPC 或一个 VPC 与本地部署网络之间进行出站私有通信。
- 由于 NAT 网关仅执行源 NAT,因此前面的设置仅允许源发起与目标 VPC 的连接。如果您需要从第二个重叠 VPC 到第一个 VPC 的双向流量,则必须撤消设置。在第二个 VPC 中创建 NAT 网关,并让 Application Load Balancer 以第一个 VPC 中的实例为目标。