我正在测试一个有两个对等 VPC 的场景:
- VPC A 的 CIDR 为 10.0.0.0/16
- VPC B 的 CIDR 为 172.17.0.0/16
两个 VPC 都具有具有以下 CIDR 的私有子网和公有子网:
- VPC-A-PRIV 的 CIDR 为 10.0.1.0/24
VPC-A-PUB 的 CIDR 为 10.0.101.0/24
VPC-B-PRIV 的 CIDR 为 172.17.1.0/24
- VPC-B-PUB 的 CIDR 为 172.17.101.0/24
我了解对等连接路由表选项卡包含具有与 VPC 对等连接关联的条目的表。这些表之一与 VPC A 中的公共子网相关联,如下所示:
- 10.0.0.0/16 --> 本地
- 0.0.0.0/0 --> igw-id
- 172.17.0.0/16 --> vpc-peering-connection-A-to-B
因此,为了测试它是否有效,我在 VPC-A-PUB 子网中创建了一个实例,并在 VPC-B-PUB 子网中创建了另一个实例。我可以在这些实例之间成功 ping。
但是,如果我改为在 VPC-B-PRIV 子网中创建 VPC-B 实例,则无法从 VPC-A-PUB 子网 ping 它。这让我很困惑,因为上表中的对等连接路由包含了整个 VPC B 地址范围(172.17.0.0/16 --> vpc-peering-connection-A-to-B)。
如果我要执行从同一 VPC 中的公共实例 ping 私有实例的相同测试,则测试将通过......我认为它会通过的原因是因为本地规则包含整个 VPC 范围 (10.0. 0.0/16 --> 本地)。
我觉得我不了解 AWS 中私有子网和公共子网之间的关系。特别是关于私有子网如何从外部网络(无论是 VPC 还是互联网)接收流量。