Перейти к содержанию
Innovialabs

Что такое VPC: подсети, группы безопасности и шлюзы

Основы4 мин

Коротко

VPC — это ваша изолированная сеть внутри облака: вы делите её на публичные и приватные подсети, фильтруете трафик группами безопасности и направляете его через internet и NAT gateway, чтобы база данных никогда не смотрела в интернет.

Что такое VPC

VPC (Virtual Private Cloud) — это частная сеть, которую вы создаёте внутри публичного облака. Физически ваши серверы работают на общем оборудовании с другими клиентами, но логически живут в собственном адресном пространстве, которое никто не видит и куда никто не попадёт без вашего разрешения.

При создании VPC вы задаёте диапазон IP-адресов в нотации CIDR, например 10.0.0.0/16. Каждый сервер, база данных и балансировщик внутри получает приватный адрес из этого диапазона. По умолчанию ресурсы разных VPC не видят друг друга, а из интернета внутрь ничего не проходит.

В AWS и Google Cloud это называется VPC, в Azure та же идея называется Virtual Network (VNet). Детали отличаются, но строительные блоки ниже есть везде.

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

Подсеть (subnet) — это часть диапазона VPC, например 10.0.1.0/24. В AWS каждая подсеть находится в одной зоне доступности, поэтому для отказоустойчивости подсети обычно создают минимум в двух зонах.

Подсеть делает «публичной» или «приватной» не галочка, а её таблица маршрутов (route table):

  • Публичная подсеть — маршрут 0.0.0.0/0 (всё за пределами VPC) ведёт на internet gateway. Ресурсы с публичным IP здесь доступны из интернета.
  • Приватная подсеть — маршрута на internet gateway нет. У ресурсов только приватные адреса, снаружи до них не достучаться.

Простое правило: в публичные подсети кладите только то, что обязано принимать соединения из интернета, например балансировщик. Всё остальное — в приватные.

Шлюзы: как трафик входит и выходит

КомпонентНаправлениеЗачем нужен
Internet gatewayвход и выходСвязывает публичные подсети с интернетом
NAT gatewayтолько выходДаёт приватным ресурсам выход в интернет (обновления, внешние API), но не делает их доступными снаружи
VPN или частный каналв обе стороныСоединяет VPC с офисной сетью или другим дата-центром

NAT gateway стоит в публичной подсети. Приватные серверы отправляют через него исходящие запросы и получают ответы, но начать соединение с ними снаружи невозможно. Управляемый NAT gateway тарифицируется отдельно, поэтому посмотрите цены у своего провайдера, прежде чем ставить его в каждую зону.

Группы безопасности и сетевые ACL

Группа безопасности (security group) — виртуальный файрвол, привязанный к ресурсу: серверу, базе, балансировщику. Ключевые свойства в AWS:

  • в ней только разрешающие правила, всё неразрешённое заблокировано;
  • она stateful: если входящий запрос разрешён, ответ уходит автоматически;
  • в правиле можно указать другую группу безопасности вместо диапазона IP, например «порт 5432 только от группы серверов приложения».

Network ACL работает на уровне подсети, не хранит состояние и поддерживает запрещающие правила. Большинство небольших проектов оставляют ACL по умолчанию и фильтруют всё группами безопасности.

Типовая схема для веб-приложения

Для приложения с бэкендом и базой данных:

  1. VPC 10.0.0.0/16 в двух зонах доступности.
  2. Публичные подсети (по одной на зону): балансировщик и NAT gateway.
  3. Приватные подсети приложения: серверы или контейнеры с приложением.
  4. Приватные подсети данных: база данных, без какого-либо маршрута в интернет.

Группы безопасности:

  • lb-sg: разрешить 443 (и 80 для редиректа) с 0.0.0.0/0;
  • app-sg: разрешить порт приложения только от lb-sg;
  • db-sg: разрешить порт базы только от app-sg.

Единственная точка входа из интернета — балансировщик. База недоступна снаружи, даже если кто-то узнает её адрес.

Для администрирования не открывайте SSH всему миру. Используйте session manager провайдера, bastion-хост со строгими правилами или VPN.

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

  • База в публичной подсети «чтобы быстро подключиться с ноутбука». Обычно так и остаётся.
  • Порт 22 или 3306 открыт для 0.0.0.0/0 в группе безопасности.
  • Пересекающиеся диапазоны CIDR между VPC или с офисной сетью — потом мешают peering и VPN.
  • Слишком маленький диапазон: менять VPC позже сложнее, чем сразу заложить /16.
  • Продакшен в default VPC без проверки её настроек.

Частые вопросы

Классический VPS-хостинг даёт сервер с публичным IP и файрволом — для простого сайта этого достаточно. VPC полезен, когда компонентов несколько, например приложение и отдельная база, и они должны общаться между собой приватно.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.