VPC: подсети, security groups и шлюзы

Строим собственную изолированную сеть в облаке и управляем тем, кто куда ходит.

VPC (Virtual Private Cloud) — ваша изолированная виртуальная сеть в AWS, внутри которой живут инстансы, подсети и правила доступа.

Зачем нужен VPC

Все ваши ресурсы в облаке должны где-то «стоять» с точки зрения сети. VPC — это частная сеть только для вашего аккаунта, со своим диапазоном IP-адресов. Внутри неё вы решаете, какие машины смотрят в интернет, а какие спрятаны, и кто с кем может общаться.

Подсети: публичные и приватные

VPC делится на подсети (subnets), каждая живёт в одной зоне доступности. Подсеть бывает публичной или приватной:

  • Публичная подсеть имеет маршрут в интернет — туда ставят то, что должно быть доступно снаружи (веб-сервер, балансировщик).
  • Приватная подсеть не имеет прямого выхода наружу — туда прячут базы данных и бэкенды, чтобы их нельзя было достать из интернета напрямую.
VPC 10.0.0.0/16
  +-- Публичная подсеть 10.0.1.0/24 (AZ a)  -> веб-сервер, балансировщик
  +-- Приватная подсеть 10.0.2.0/24 (AZ a)  -> база данных, бэкенд
         |
  Internet Gateway  ->  выход в интернет только для публичной подсети

Security groups — файрвол инстанса

Security group — это виртуальный файрвол вокруг инстанса. Он описывает, какой входящий и исходящий трафик разрешён. Правила работают по принципу «разрешено только то, что явно указано»: например, открыть 22 порт (SSH) для своего IP и 80/443 (веб) для всех.

НаправлениеПортИсточникСмысл
входящий4430.0.0.0/0сайт по HTTPS для всех
входящий22ваш IP/32SSH только вам

Как работает под капотом

Чтобы публичная подсеть вышла в интернет, к VPC присоединяют Internet Gateway (интернет-шлюз), а в таблице маршрутизации подсети прописывают маршрут на него. Приватной подсети такого маршрута не дают — поэтому достать её из интернета напрямую невозможно. Security group работает как stateful-файрвол: если вы разрешили входящее соединение, ответный трафик пройдёт автоматически, без отдельного исходящего правила. Группы применяются к сетевой карте инстанса, поэтому проверяются ещё до того, как пакет дойдёт до операционной системы.

Частые ошибки

  • Класть базу данных в публичную подсеть. БД должна жить в приватной — её не должно быть видно из интернета.
  • Открывать 0.0.0.0/0 на все порты. Это распахивает сервер всему интернету; открывайте только нужные порты нужным источникам.
  • Забыть про маршрут на Internet Gateway. Без него даже «публичная» подсеть не выйдет в сеть.

Итог

  • VPC — ваша изолированная сеть в AWS со своим диапазоном IP.
  • Публичные подсети смотрят в интернет (через Internet Gateway), приватные — спрятаны.
  • Security group — stateful-файрвол инстанса: разрешено только то, что явно указано.
Проверьте себя
1. Где правильно разместить базу данных в VPC?
AВ публичной подсети
BВ приватной подсети без прямого выхода в интернет
CВне VPC
DВ Internet Gateway
2. Что обеспечивает выход публичной подсети в интернет?
ASecurity group
BInternet Gateway и маршрут на него в таблице маршрутизации
CПриватная подсеть
DBucket policy
3. Почему security group называют stateful?
AОна хранит состояние счёта
BОтветный трафик на разрешённое входящее соединение проходит автоматически
CОна зависит от штата (state) США
DОна запоминает пароли