VPN
Предпосылки: IP и маршрутизация (пакет, инкапсуляция), TLS (шифрование, аутентификация), Firewalls (зоны, внутренняя сеть).
Сотрудник работает из кафе. Его ноутбук подключён к публичному Wi-Fi. Все данные между ноутбуком и роутером кафе передаются через воздух — любой в радиусе действия может перехватить трафик. HTTPS защищает содержимое HTTP-запросов, но метаданные (какие домены, какие IP, когда и как часто) остаются видимыми. Кроме того, внутренние сервисы компании (Jira, GitLab, база данных) доступны только из офисной сети — из кафе к ним не подключиться.
Туннелирование: сеть внутри сети
VPN (Virtual Private Network) решает обе проблемы, создавая зашифрованный туннель между клиентом и VPN-сервером. Весь сетевой трафик (или его часть) упаковывается в зашифрованные пакеты и отправляется через интернет к VPN-серверу, который расшифровывает их и отправляет дальше от своего имени.
Механизм — двойная инкапсуляция. Исходный IP-пакет (например, запрос к jira.company.com) шифруется целиком и помещается внутрь нового IP-пакета, адресованного VPN-серверу:
+------------------------------------------------------------+
| Внешний IP-пакет (ноутбук -> VPN-сервер) |
| +--------------------------------------------------------+ |
| | Зашифрованные данные: | |
| | Исходный IP-пакет (ноутбук -> jira.company.com) | |
| +--------------------------------------------------------+ |
+------------------------------------------------------------+
Для наблюдателя в кафе виден только трафик до VPN-сервера — зашифрованный поток байтов. Ни адреса назначения, ни содержимое запросов определить нельзя.
VPN-сервер находится в офисной сети, поэтому после расшифровки пакет оказывается “внутри” сети и может обращаться к внутренним сервисам.
IPSec
IPSec (Internet Protocol Security) — набор протоколов для шифрования и аутентификации на уровне IP. Работает в двух режимах.
Transport mode — шифруется только payload IP-пакета, IP-заголовок остаётся открытым. Используется для связи между двумя конкретными хостами.
Tunnel mode — шифруется весь исходный IP-пакет и помещается в новый. Используется для site-to-site VPN (соединение двух офисных сетей) и remote access VPN.
IPSec состоит из двух основных протоколов. ESP (Encapsulating Security Payload) — шифрование и аутентификация данных. IKE (Internet Key Exchange) — согласование ключей и параметров шифрования (аналог TLS-рукопожатия).
IPSec встроен в ОС (Linux, Windows, macOS), что делает его стандартным выбором для корпоративных VPN. Сложность конфигурации — главный недостаток: множество параметров, комбинации алгоритмов, фазы IKE.
WireGuard
WireGuard — современный VPN-протокол, разработанный как минималистичная альтернатива IPSec и OpenVPN. Принципы: минимум кода (~4000 строк в ядре Linux против ~100000 у OpenVPN), фиксированный набор криптографических примитивов (нет выбора алгоритмов — меньше возможностей для ошибок), работа на уровне ядра для производительности.
Конфигурация WireGuard сводится к обмену публичными ключами между клиентом и сервером — несколько строк конфигурации вместо десятков страниц у IPSec.
WireGuard использует UDP как транспорт и хорошо работает при смене сети (переключение Wi-Fi → мобильная сеть): соединение привязано к ключам, а не к IP-адресам.
Для корпоративных VPN WireGuard часто используется через обёртки (Tailscale, Netmaker), которые добавляют управление ключами, корпоративную аутентификацию и discovery.
Split tunneling
По умолчанию VPN направляет весь трафик через туннель. Запрос к YouTube и запрос к внутренней Jira идут одним путём — через VPN-сервер. Для YouTube это бессмысленно: добавляет латентность (трафик идёт в офис и обратно) и нагружает VPN-сервер.
Split tunneling — режим, при котором через VPN идёт только трафик к определённым сетям (например, 10.0.0.0/8 — внутренняя сеть компании), а остальной трафик идёт напрямую в интернет.
Компромисс: split tunneling снижает нагрузку на VPN и улучшает производительность, но трафик в интернет остаётся незащищённым. Для сценария “работа из кафе” полный туннель безопаснее; для сценария “доступ к офисным сервисам из дома” split tunneling практичнее.
Site-to-Site VPN
Помимо клиентского VPN (один пользователь подключается к сети), существует site-to-site VPN: постоянный зашифрованный канал между двумя сетями. Два офиса, соединённые через интернет, работают как одна сеть — устройства в офисе A видят устройства в офисе B по внутренним IP-адресам.
Site-to-site VPN обычно реализуется через IPSec в tunnel mode между роутерами двух сетей. Трафик шифруется и расшифровывается прозрачно — устройства в сетях не знают о существовании VPN.