我想使用另一个 VPC 中的 Nat Gateway(而不是 EC2 上的 Nat 实例!)将我的流量从对等 VPC 路由到 Internet。我的基础设施如下所示:
/---------------------VPC-LIVECHAT---------------------\
| /---Subnet A---\ /---Subnet B---\ /---Subnet C---\ |
| | | | | | | |
| \-10.10.0.0/24-/ \-10.10.1.0/24-/ \-10.10.2.0/24-/ |
\------------------------------------------------------/
| |
| VPC Peering Connection |
| |
/----------------------VPC-COMMON----------------------\
| /---Subnet A---\ /---Subnet B---\ /---Subnet C---\ |
| | /--------\ | | /--------\ | | /--------\ | |
| | | NAT GW | | | | NAT GW | | | | NAT GW | | |
| | \--------/ | | \--------/ | | \--------/ | |
| \-10.10.3.0/24-/ \-10.10.4.0/24-/ \-10.10.5.0/24-/ |
\------------------------------------------------------/
| |
| VPC Peering Connection |
| |
/---------------------VPC-DATABASE---------------------\
| /---Subnet A---\ /---Subnet B---\ /---Subnet C---\ |
| | | | | | | |
| \-10.10.6.0/24-/ \-10.10.7.0/24-/ \-10.10.8.0/24-/ |
\------------------------------------------------------/
我的想法:
- 我将设置 VPC-COMMON 及其子网,并在每个子网中设置 Nat 网关(每个可用区一个子网)
- 我将设置 VPC-LIVECHAT 和 VPC-DATABASE VPC,创建 VPC Peering 连接
- 在 VPC-COMMON 子网中,同一子网中将有路由 0.0.0.0/0 -> Nat Gateway
- 在 VPC-LIVECHAT 和 VPC-DATABASE 子网(全部)中,将有路由 VPC-COMMON CIDR -> VPC Peering Connection
- 在 VPC-LIVECHAT 和 VPC-DATABASE 的每个子网中都会有路由 0.0.0.0/ -> VPC-COMMON 相应子网中的 Nat 网关(子网 A 将使用 VPC-COMMON 子网 A 中的 NAT GW,依此类推...)
我认为这个设置应该可以很好地工作,它只是路由 VLAN。但在 AWS 中却不行。AWS 不允许我在路由表中的不同 VPC 中使用 Nat Gateway,并出现错误
“路由表 rtb-293fa54d 和接口 interface-c2002e9e 属于不同的网络”
我也无法在 AWS 中使用 Nat Gateway 的私有 IP,AWS 不支持路由目标中的 IP 地址(我真的很想知道为什么)。
我正在使用 CloudFormation,我的路线定义如下所示:
"RoutePrivate3ToNatInCommon" : {
"Type" : "AWS::EC2::Route",
"Condition" : "IsNotVpcCommon",
"Properties" : {
"DestinationCidrBlock" : "0.0.0.0/0",
"RouteTableId" : { "Ref" : "PrivateSubnet3RoutingTable" },
"NatGatewayId" : { "Fn::GetAtt" : [ "NatGatewaySettingsForNotCommon", "NatGatewayAZC" ] }
}
}
NatGatewaySettingForNotCommon 是我的自定义 lambda 支持的资源,它可以帮助我获取每个可用区域的 Nat 网关列表。
有什么方法可以实现此设置吗?每个区域大约有 10 个 VPC,每个 VPC 中有 3 个私有子网,我真的不想设置(并支付)30 个 Nat 网关。这看起来像常规的“非云”网络设置,因此在云中实现它应该没有问题。还是这样?
答案1
AWS 不支持此类配置。VPC Peering 不支持“多跳”路由。VPC Peering 不支持以下配置。
- VPC A -> VPC B -> 互联网
- VPC A -> VPC B -> VPC C