← К библиотеке
Основы Теория

Как устроен VPN-туннель под капотом

Пока ты не понимаешь, что происходит внутри туннеля, любой протокол для тебя — чёрный ящик, а любая поломка — «магия». Разберём механику один раз и нормально, чтобы дальше читать конфиги, а не заклинания.

Что значит «подключиться к VPN»

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

Ключевая идея — подмена точки входа в интернет. Для сайта, к которому идёт клиент, запрос приходит не от домашнего провайдера клиента, а от твоей ноды в Германии. А для провайдера клиента виден только зашифрованный поток до ноды — что именно внутри, он не читает.

Вот и весь VPN на уровне идеи. Дальше — детали, которые и решают, выживет туннель под инспекцией или нет.

Инкапсуляция: пакет в пакете

Обычный интернет-трафик — это пакеты: у каждого есть адрес отправителя, адрес получателя и полезная нагрузка. Когда включён туннель, происходит инкапсуляция: исходный пакет клиента (например, «хочу открыть example.com») целиком заворачивается внутрь нового пакета, адресованного твоей ноде.

Представь это как письмо в конверте, вложенное в другой конверт. Внешний конверт видят все по дороге — на нём написано только «ноде такой-то». Внутренний конверт с настоящим адресом получателя вскрывается только на ноде. Провайдер по пути видит внешний конверт и не знает, что внутри.

Именно из-за этого «конверта в конверте» VPN-трафик статистически отличается от обычного веб-сёрфинга — и именно за эти отличия его и ловит умная инспекция. Но об этом отдельно.

Шифрование: почему внутрь не заглянуть

Внешний конверт мало запечатать — его надо сделать нечитаемым. За это отвечает шифрование. Современные протоколы поднимают между клиентом и нодой криптографический канал: обе стороны договариваются об общем секрете (рукопожатие), после чего всё содержимое шифруется так, что перехватчик по пути видит только шум.

Тонкость в том, что сам факт рукопожатия виден. Инспекция не может прочитать содержимое, но может посмотреть, как выглядит установка соединения — какой протокол, какие параметры TLS, на какой домен клиент якобы идёт (SNI). Если рукопожатие выглядит как редкий кривой VPN-клиент, а не как обычный браузер, — это флаг. Поэтому вся современная борьба идёт не за «сильнее зашифровать», а за то, чтобы рукопожатие было неотличимо от обычного HTTPS.

Выходная точка: где трафик становится обычным

На ноде трафик расшифровывается, распаковывается из внешнего конверта и выходит в интернет уже как нормальный запрос — от IP-адреса ноды. Это и есть выходная точка (exit).

Отсюда несколько важных для оператора следствий:

  • Что видит сайт назначения — это IP ноды и её геолокацию. Клиент из России, вышедший через немецкую ноду, для сайта выглядит немцем.
  • Ответственность за выходной трафик формально ложится на владельца ноды — через неё идёт чужой трафик. Поэтому выходные ноды держат не на своей основной инфраструктуре и не там, где это создаст проблемы.
  • Репутация IP ноды — актив. Если через этот адрес кто-то нашумел или он попал в чёрные списки, часть сайтов начнёт клиенту показывать капчу или резать доступ.

Полный vs раздельный туннель

Есть два режима, и это не мелочь, а то, из-за чего половина клиентских тикетов.

  • Полный туннель (full-tunnel) — вообще весь трафик клиента идёт через ноду. Просто, но у клиента «палится VPN» на всех сайтах, и отечественные сервисы (маркетплейсы, банки), которые режут доступ через зарубежные IP, перестают открываться.
  • Раздельный туннель (split-tunnel) — часть трафика идёт через ноду, часть напрямую. Обычно правило простое: локальные и отечественные ресурсы — мимо туннеля, всё остальное — через ноду. Клиент и блокировки обходит, и банк с маркетплейсом у него открываются.

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

Собираем картину

Итого, один цикл работы туннеля:

  1. Клиент поднимает шифрованное соединение до ноды (рукопожатие, которое старается выглядеть как обычный HTTPS).
  2. Его трафик инкапсулируется — заворачивается во внешний конверт до ноды.
  3. По дороге провайдер видит только внешний конверт и шум внутри.
  4. Нода расшифровывает, распаковывает и выпускает трафик в интернет от своего IP.
  5. Правила маршрутизации решают, что идёт через ноду, а что напрямую.

Дальше по разделу — обзор протоколов: это разные способы делать шаг 1 и 2 так, чтобы шаг «провайдер видит конверт» не заканчивался блокировкой. Механику ты теперь знаешь, так что читаться это будет уже как инженерия, а не как магия.

Следующий гайд Обзор протоколов: кто кого и когда выбирать → Не понравилась статья или что-то непонятно? Напишите мне — помогу или поправлю. @notrealvpn →
Материал носит образовательный характер и посвящён инженерии сетевой инфраструктуры. Вы отвечаете за соблюдение законов своей юрисдикции.