在 VPC 对等连接中使用来自不同 VPC 的 AWS Nat Gateway

在 VPC 对等连接中使用来自不同 VPC 的 AWS Nat Gateway

我想使用另一个 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

参考:无效的 VPC 对等连接配置

相关内容