Компьютерные сети

Сети в облаке: VPC

Раньше для своего датацентра нужно было арендовать помещение, покупать серверы, прокладывать кабели. Сегодня VPC в AWS создаётся за 30 секунд - полностью изолированная сеть с публичными и приватными подсетями.

  • **Netflix** - тысячи VPC в разных регионах для streaming инфраструктуры
  • **Stripe** - Multi-VPC архитектура для изоляции PCI DSS данных
  • **Airbnb** - VPC Peering между продакшн и аналитикой

Предварительные знания

  • Subnets and Masks
  • Firewall: Wall of Fire

VPC (Virtual Private Cloud)

**VPC (Virtual Private Cloud)** - это логически изолированная виртуальная сеть в облаке. Это твой собственный датацентр, только виртуальный: ты определяешь IP-диапазоны, подсети, маршруты, правила безопасности.

Представь: AWS имеет один огромный датацентр с миллионами серверов. VPC создаёт иллюзию, что твои 10 серверов находятся в отдельной изолированной сети, невидимой для других клиентов AWS.

**Изоляция VPC:** Трафик между разными VPC по умолчанию не проходит. Даже если IP-адреса пересекаются (10.0.0.0/16 в обоих VPC), конфликта нет - они в разных виртуальных сетях.

**Ключевые компоненты VPC:** • **CIDR block** - диапазон IP-адресов (например, 10.0.0.0/16 = 65,536 адресов) • **Internet Gateway** - точка выхода в интернет • **NAT Gateway** - выход в интернет для приватных подсетей (без входящих) • **Route Tables** - правила маршрутизации трафика • **Subnets** - сегменты сети в разных Availability Zones

Что обеспечивает изоляцию между VPC разных клиентов в AWS?

Public и Private Subnets

**Subnet (подсеть)** - это сегмент VPC, привязанный к конкретной Availability Zone. Подсети делятся на **public** (с доступом в интернет) и **private** (без прямого доступа).

**Public Subnet** имеет маршрут к Internet Gateway. Инстансы получают публичные IP и доступны из интернета. **Private Subnet** не имеет прямого выхода - только через NAT Gateway для исходящего трафика.

**Зачем NAT Gateway?** Приватные инстансы (базы данных, backend) должны скачивать обновления, обращаться к внешним API. NAT позволяет исходящий трафик, но блокирует входящий - инстанс невидим из интернета.

**Multi-AZ архитектура:** Для отказоустойчивости создают подсети в разных Availability Zones. Если AZ-a упадёт, трафик переключится на AZ-b. Load Balancer распределяет запросы между зонами.

Чем отличается public subnet от private subnet?

Security Groups

**Security Group** - это виртуальный stateful firewall на уровне инстанса (EC2, RDS, Lambda). Определяет, какой трафик разрешён входящий (inbound) и исходящий (outbound).

**Stateful** означает: если разрешён входящий трафик на порт 80, ответ автоматически пропускается обратно. Не нужно отдельно разрешать исходящий для ответов.

**Security Group References:** Вместо IP-адресов можно ссылаться на другие Security Groups. Например: app-sg разрешает трафик от web-sg. При добавлении новых web-серверов правила автоматически применяются.

**Best Practices для Security Groups:** • **Принцип минимальных привилегий** - открывать только необходимые порты • **Использовать references** вместо IP-адресов где возможно • **Разделять по функции** - отдельные SG для web, app, db • **Не использовать 0.0.0.0/0** для SSH - только VPN или bastion

Что означает 'stateful' в контексте Security Groups?

Network ACL

**Network ACL (NACL)** - это stateless firewall на уровне подсети. В отличие от Security Groups, NACL имеет нумерованные правила и применяется ко ВСЕМУ трафику подсети.

**Stateless** означает: нужно явно разрешать и входящий, и исходящий трафик. Если разрешён HTTP на 80, нужно отдельно разрешить ephemeral ports (1024-65535) для ответов.

**Когда использовать NACL?** Для блокировки известных вредоносных IP на уровне подсети, дополнительного слоя защиты (defense in depth), compliance требований. В большинстве случаев достаточно Security Groups.

**Defense in Depth:** ``` Internet → NACL → Security Group → Instance │ │ │ Subnet Instance Application level level level ``` NACL - первая линия защиты на уровне подсети. Security Group - вторая, на уровне инстанса. Application firewall (WAF) - третья.

Security Groups достаточно, NACL не нужны

NACL дополняет Security Groups для defense in depth и позволяет блокировать трафик на уровне подсети

Security Groups защищают только инстансы с этой группой. NACL защищает всю подсеть, включая новые инстансы. Также NACL может делать deny (блокировать конкретные IP), чего Security Groups не умеют

Почему NACL требует явного разрешения ephemeral ports для ответного трафика?

Итоги

  • **VPC** - логически изолированная виртуальная сеть в облаке с твоим CIDR блоком
  • **Public Subnet** → Internet Gateway, **Private Subnet** → NAT Gateway
  • **Security Groups** - stateful firewall на уровне инстанса, только Allow правила
  • **NACL** - stateless firewall на уровне подсети, Allow + Deny, по номерам правил
  • **Defense in Depth:** NACL → Security Group → Application firewall

Связанные темы

Облачные сети основаны на классических концепциях подсетей и firewalls:

  • Подсети и CIDR — VPC и Cloud Subnets используют стандартную адресацию
  • Firewalls — Security Groups и NACL - облачные реализации firewall

Вопросы для размышления

  • Какие сервисы в твоём приложении должны быть в public subnet, а какие в private?
  • Как бы ты организовал VPC для prod/staging/dev окружений - один VPC или разные?
  • В каких случаях NACL полезнее, чем Security Groups?

Связанные уроки

  • os-12-virtualization
Сети в облаке: VPC

0

1

Войти