AWS - отправка трафика для Интернета через шлюз NAT и для частного трафика в другой VPC
Я нахожусь в ситуации, когда мне нужно подключить общедоступный API, используя 1 IP (проблема с белым списком), через различные докеры, следовательно, используя шлюз NAT. В то же время Docker также необходимо подключиться к RDS (из другого VPC) и выполнить чтение / запись.
Как этого добиться? Возможно ли организовать общедоступный маршрут трафика через шлюз NAT, а частный трафик через пиринг VPC - к другому VPC?
Заранее спасибо.
1 ответ
Я потратил два дня на то, чтобы найти этот ответ, поэтому разместил его для людей с похожим вариантом использования.
Реализация:
- Создан "Новый VPC" для докеров, на котором будет размещаться дополнительный доход.
- Создал "Новый Интернет-шлюз" и подключил его к "Новому VPC"
- Создан "Nat Gateway" и связан эластичный IP-адрес, который внесен в белый список "External API".
- Создано "пиринговое соединение VPC", запрошенное "новым VPC" и принятое "VPC по умолчанию"
- Созданы 2 подсети в "Новом VPC", 1 для частной и 1 для общедоступной (на данный момент общедоступная, чтобы я мог подключиться для тестирования, для автоматических докеров будет достаточно частного)
- Для "Общедоступной подсети" изменен маршрут с точки 0.0.0.0/0 на "Новый интернет-шлюз" и 172.xx.0.0/16 для указания на "Пиринговое соединение VPC".
- Для "частной подсети" изменен маршрут с точки 0.0.0.0/0 на "шлюз NAT", чтобы весь трафик проходил через определенный IP.
Тестирование:
- Я получил доступ к "Внешнему API" из экземпляра, созданного на "NewVPC"->"Частная подсеть",
- Я netcat "Порт RDS - 3306", размещенный на "VPC по умолчанию"
Результат:
- В журнале "Внешний API" отображается IP, связанный с "Nat Gateway".
- "Порт RDS - 3306", размещенный в "VPC по умолчанию", преобразуется в экземпляр в "Новом VPC"