VPN

Предпосылки: IP и маршрутизация (пакет, инкапсуляция), TLS (шифрование, аутентификация), Firewalls (зоны, внутренняя сеть).

Firewalls | CDN

Сотрудник работает из кафе. Его ноутбук подключён к публичному 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.


Firewalls | CDN