Amazon-Web-Services

跨 VPC 對等使用來自不同 VPC 的 AWS Nat Gateway

  • July 14, 2016

我想使用來自另一個 VPC 的 Nat 網關(不是 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-/ |
\------------------------------------------------------/

我的點子:

  • 我將在每個子網中設置具有子網和 Nat 網關的 VPC-COMMON(每個 AZ 一個子網)
  • 我將設置 VPC-LIVECHAT 和 VPC-DATABASE VPC,創建 VPC 對等連接
  • 在 VPC-COMMON 子網中,路由 0.0.0.0/0 -> Nat Gateway 在同一子網中
  • 在 VPC-LIVECHAT 和 VPC-DATABASE 子網(全部)中,將有路由 VPC-COMMON CIDR -> VPC 對等連接
  • 在 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,每個區域有 3 個私有子網,我真的不想設置(並支付)30 個 Nat 網關。這看起來像正常的“非多雲”網路設置,因此在雲中實現它應該沒有問題。或者是嗎?

AWS 不支持這種類型的配置。VPC 對等互連不支持“多跳”路由。通過 VPC 對等互連不支持以下配置。

  • VPC A -> VPC B -> 網際網路
  • VPC A -> VPC B -> VPC C

參考:無效的 VPC 對等連接配置

引用自:https://serverfault.com/questions/789844