Использование AWS Nat Gateway из разных VPC через пиринг VPC
Я хотел бы использовать Nat Gateway (не Nat Instance на EC2!) Из другого VPC для маршрутизации моего трафика от одноранговых VPC к Интернету. Моя инфраструктура выглядит так:
/---------------------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 в каждой подсети (одна подсеть на AZ)
- Я настрою VPC-LIVECHAT и VPC-DATABASE VPC, создаю пиринговые соединения VPC
- В подсетях 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/ -> шлюз Nat в соответствующей подсети VPC-COMMON (подсети A будут использовать NAT GW в подсети A VPC-COMMON и т. Д.)
Я думаю, что эта установка должна работать довольно хорошо, это просто маршрутизируемые VLAN. Но не в AWS. AWS не хочет разрешать мне использовать Nat Gateway в разных VPC в таблице маршрутов с ошибкой
"Таблица маршрутизации rtb-293fa54d и interface interface-c2002e9e принадлежат разным сетям"
Я также не могу использовать частный IP шлюза Nat в AWS, 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 - это мой собственный лямбда-ресурс, который помогает мне получить список шлюзов Nat для каждой зоны доступности.
Есть ли способ, как добиться этой настройки? У меня будет около 10 VPC на регион, по 3 частных подсети в каждой из них, и я действительно не хочу устанавливать (и платить за) 30 шлюзов Nat. Это похоже на обычную "не облачную" настройку сети, поэтому не должно быть проблем с ее реализацией в облаке. Либо это?
1 ответ
Этот тип конфигурации не поддерживается AWS. VPC Peering не поддерживает маршрутизацию с несколькими прыжками. Следующие конфигурации не поддерживаются через пиринг VPC.
- VPC A -> VPC B -> Интернет
- VPC A -> VPC B -> VPC C