VPN

28 июня 2026 · ~13 мин чтения

протокол сеть безопасность инфраструктура

VPN

VPN (Virtual Private Network, виртуальная частная сеть) — это техника, которая поверх обычного, недоверенного интернета строит «частный» канал между двумя точками: трафик внутри канала зашифрован и выглядит так, будто оба конца сидят в одной локальной сети.

История

VPN — это не одна технология, а семья. Идея старая, и развивалась она волнами.

Что это такое

VPN решает три задачи сразу, и поэтому слово стало размытым:

  1. Туннелирование. Один протокол едет внутри другого. Например, твой IP-пакет к серверу 192.168.0.1 (частный адрес офисной сети) упаковывается в обычный UDP-пакет к публичному VPN-серверу, который дальше его распаковывает и кладёт в свою локальную сеть. Снаружи никто не видит, что внутри был приватный адрес.
  2. Шифрование. Содержимое туннеля зашифровано так, что провайдер, кафе с Wi-Fi или АНБ видят только «какой-то поток байт между двумя IP». Они не узнают, на какой именно сайт ты ходишь и что ты там пишешь.
  3. Подмена видимой точки выхода. Сайты, к которым ты обращаешься через VPN, видят IP-адрес VPN-сервера, а не твой. Это даёт два эффекта: обход блокировок (если сервер в другой стране) и анонимность относительно конечного сайта (но не относительно VPN-провайдера).

Важная пара: VPN vs прокси. Прокси работает на уровне приложения (обычно HTTP/SOCKS): браузер знает, что ходит через прокси, остальной трафик идёт мимо. VPN перехватывает весь трафик ОС на уровне сетевого интерфейса (создаётся виртуальная сетевая карта utun0/wg0/tun0), поэтому через него идёт всё — браузер, мессенджеры, обновления macOS, фоновые сервисы.

Ещё одна пара: VPN vs Tor. У Tor три случайных промежуточных узла, ни один из которых не знает одновременно отправителя и получателя. У VPN один узел, который знает оба конца. Tor сильнее в анонимности, медленнее в скорости. VPN быстрее, но требует доверия к одному поставщику.

Аналогии из жизни

Бронированный фургон инкассации. Город — это публичный интернет. Везде едут обычные машины, любой может в окно подсмотреть. Фургон с деньгами едет тем же дорогам, но внутри стенки бронированные, окон нет, ключи только у банка — снаружи не видно, что везёт. VPN — это фургон.
Где ломается: аналогия молчит о том, что любой видит, что едет именно бронированный фургон. То есть факт использования VPN скрыть нельзя (без обфускации) — только содержимое. Провайдер видит, что ты подключился к IP такого-то VPN-сервиса, даже если не видит трафик внутри.

Дипломатическая почта. Письмо едет обычной почтой, но в дипломатическом мешке, который по конвенции нельзя вскрывать. Отправитель и получатель — конкретные посольства, но почтовая служба не знает содержимого.
Где ломается: аналогия предполагает, что есть международная конвенция, которую никто не нарушит. В случае VPN никакой конвенции нет — крупный игрок (государство, провайдер уровня страны) может физически перехватывать поток. Стойкость — только в криптографии, а не в правилах.

Туннель под рекой. Чтобы попасть с одного берега на другой, не нужно плыть среди лодок и волн — есть подземный туннель, в котором тихо, прямо и видеокамеры обоих концов знают, кто едет. VPN буквально называется «туннель».
Где ломается: настоящий туннель физически отделён от реки. В VPN «туннель» — это просто метафора: твои пакеты всё равно едут по тем же кабелям, что и весь интернет. Защита криптографическая, а не физическая. Если завтра математики сломают AES, «туннель» станет прозрачным задним числом для всего, что когда-либо через него прошло (если ключи скомпрометированы — это называется forward secrecy, и WireGuard её обеспечивает, а старые протоколы — не всегда).

Как это работает

Разберём на примере WireGuard, потому что он самый чистый и понятный.

Подготовка (один раз). На двух концах генерируются пары ключей: приватный и публичный (асимметричная криптография, как у SSH). Приватный не покидает устройство, публичный обменивают между сторонами. Конфиг сервера и клиента содержит публичный ключ другой стороны и список «разрешённых IP-адресов» (AllowedIPs).

Запуск (каждый раз).

  1. Клиент создаёт виртуальный сетевой интерфейс — на macOS это utun5 или похожий, в линуксе wg0. Операционная система видит его как обычную сетевую карту.
  2. В таблице маршрутизации появляется правило: «всё, что идёт на сеть 10.0.0.0/24 (или 0.0.0.0/0 если full-tunnel), отдавай в wg0».
  3. Когда приложение отправляет пакет на адрес внутри VPN, ядро по таблице маршрутизации заворачивает его в драйвер WireGuard.
  4. WireGuard упаковывает оригинальный пакет: добавляет заголовок с номером сессии, шифрует тело алгоритмом ChaCha20-Poly1305, заворачивает всё в UDP-датаграмму к публичному IP сервера.
  5. По обычному интернету эта UDP-датаграмма уходит к серверу.
  6. Сервер расшифровывает, видит исходный пакет, отдаёт в свой локальный интерфейс. Дальше пакет идёт по правилам сервера — либо в офисную сеть, либо в интернет с подменой src-адреса (это уже NAT, а не сам VPN).
  7. Ответ приходит обратно: сервер заворачивает, шифрует, UDP, твой клиент распаковывает.

Handshake. Раз в 2 минуты (или при простое) клиент и сервер делают Noise IK handshake — двусторонняя процедура, которая обновляет сессионные ключи. Если кто-то записал сегодняшний трафик и завтра украл приватный ключ — старые сессии всё равно не расшифруются (это и есть forward secrecy).

Куда едут DNS-запросы. Тонкий момент: если ты ввёл в браузере mail.ru, нужно сначала превратить имя в IP. Если DNS-сервер прописан в системе твой обычный (8.8.8.8 или провайдерский), DNS-запрос пойдёт мимо туннеля, и провайдер увидит, какие домены ты резолвишь, даже если HTTPS-трафик скрыт. Хороший VPN-конфиг указывает свой DNS внутри туннеля — например, DNS = 10.0.0.1 в WireGuard-профиле. Это называется DNS leak protection.

Kill switch. Если туннель упал (Wi-Fi мигнул, сервер недоступен), без kill switch операционная система спокойно начнёт слать трафик в обход — через обычный интерфейс, без шифрования. Kill switch — это правило файрвола, которое блокирует весь трафик, кроме идущего через VPN-интерфейс. Без него VPN дырявый.

[твоё приложение]
       │ исходный пакет: src=10.0.0.5  dst=192.168.0.1
       ▼
[виртуальная сетка wg0]
       │ ядро видит маршрут «эту сеть — в wg0»
       ▼
[драйвер WireGuard]
       │ шифрует тело, заворачивает в UDP
       ▼
[твоя физическая сетка eth0]
       │ обычный UDP-пакет: src=твой_публичный_IP  dst=IP_сервера:51820
       ▼
   ─────── интернет ───────
       │
       ▼
[физическая сетка сервера]
[драйвер WireGuard на сервере]
       │ расшифровывает, восстанавливает оригинальный пакет
       ▼
[локальная сеть на той стороне]

Где встречается в обычной жизни

Где встречается в IT и бизнесе

Кто пользуется

Альтернативы и конкуренты

Когда НЕ стоит использовать

Связанные понятия

Литература и источники

Где встретилось у меня

Вчера в проекте recheck для CRM Авито был обвал: launchd-таймер запустил скрейп в 11:00 МСК, но Selenium не смог открыть Chrome — SessionNotCreatedException. Разбор показал две вещи. Во-первых, 25–26 июня скрипт даже до Chrome не доходил: при выключенном VPN он логировал «CRM недоступен — поднимаю VPN…» и падал. То есть VPN — это входная точка ко всей инфраструктуре CRM, без него последующая логика просто не имеет смысла. Во-вторых, когда сегодня VPN всё-таки поднялся, всплыла другая проблема — залоченный профиль Chrome (SingletonLock с pid 5185). Параллельно вылез ещё один VPN-сюжет: SSH на отдельный сервер neiro тоже срезался на стадии handshake — fail2ban, видимо, забанил мой IP после серии попыток.

Краткое резюме