В чем разница между NAT Gateway и Internet Gateway в AWS?

«В чем разница между NAT Gateway и Internet Gateway в AWS?» — вопрос из категории Облачные платформы, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Оба шлюза работают с VPC, но решают разные задачи, связанные с доступом в интернет.

Internet Gateway (IGW) — это горизонтально масштабируемый и отказоустойчивый компонент AWS, который обеспечивает двустороннюю связь между ресурсами в вашей VPC и публичным интернетом.

  • Назначение: Сделать подсеть или ресурс (например, EC2-инстанс) публично доступным.
  • Как работает: Прикрепляется к VPC. Чтобы ресурс в публичной подсети получил выход в интернет, ему нужно:
    1. Иметь публичный IP-адрес (или Elastic IP).
    2. Иметь маршрут в таблице маршрутизации (Route Table) своей подсети, направляющий трафик 0.0.0.0/0 на igw-....
  • Трафик: И входящий, и исходящий.

NAT Gateway — это управляемый сервис AWS, который позволяет ресурсам в приватных подсетях инициировать исходящие соединения с интернетом (например, для скачивания обновлений), но блокирует любые входящие соединения из интернета.

  • Назначение: Обеспечить безопасный исходящий доступ для ресурсов, которые не должны быть доступны извне (например, инстансы БД, бэкенд-сервисы).
  • Как работает: Размещается в публичной подсете (чтобы сам имел выход через IGW). Для приватной подсети в ее таблице маршрутизации создается правило, направляющее трафик 0.0.0.0/0 на nat-....
  • Трафик: Только исходящий, инициированный изнутри VPC.

Практический пример архитектуры:

Публичная подсета:            Приватная подсета:
[ EC2 (веб-сервер) ]          [ EC2 (база данных) ]
         |                              |
         v                              v
[ Internet Gateway ] <------ [   NAT Gateway   ]
         ^                              |
         |_____________________________ |
          (Только ответы на запросы из приватной подсети)

Таблица маршрутизации для приватной подсети:

Destination      Target
10.0.0.0/16      local      # Локальный трафик внутри VPC
0.0.0.0/0        nat-0abcd1234  # Весь остальной трафик -> NAT Gateway

Ключевое отличие: IGW — для публичного доступа (двусторонний), NAT Gateway — для безопасного исходящего доступа из приватных ресурсов (односторонний).