Клиент шифрует пакет на твоём устройстве → отправляет на ВПН-сервер по шифрованному туннелю → сервер расшифровывает и форвардит на реальный сайт. Ответы идут обратно тем же путём. Снаружи виден только шифрованный трафик к ВПН-серверу.
Этап 1: handshake (рукопожатие)
Когда тапаешь "подключить":
- Клиент шлёт hello-пакет на ВПН-сервер.
- Сервер отвечает своим public-ключом.
- Клиент и сервер выводят общий session-ключ через Diffie-Hellman (или Curve25519 на WireGuard).
- Дальше — весь трафик шифруется этим session-ключом симметрично.
Handshake на WireGuard — ~50мс. На OpenVPN — 200мс+ из-за полного TLS-handshake. Делается один раз на сессию.
Этап 2: шифрование пакета
Каждый IP-пакет с устройства проходит через ВПН-клиент:
- Оригинальный пакет (например, HTTPS-запрос к google.com) формируется в стеке ОС.
- ВПН-клиент перехватывает пакет до отправки в сеть.
- Пакет шифруется symmetric-шифром (ChaCha20-Poly1305 или AES-256-GCM) с session-ключом.
- Шифрованный пакет заворачивается в новый пакет с IP-адресом ВПН-сервера как destination.
Снаружи: пакет идёт от твоего IP к ВПН-серверу. Содержимое — непонятный шум. Реальный destination (google.com) виден только ВПН-серверу после расшифровки.
Этап 3: туннелирование
"Туннель" — это просто стабильное шифрованное соединение между клиентом и сервером. По нему идут все пакеты твоего трафика.
В терминах сети: твой провайдер видит поток пакетов одного типа (например, WireGuard UDP-пакеты на порт 51820) к одному IP. Не видит сколько внутри отдельных соединений, какие сайты, какой контент.
Этап 4: выход
На ВПН-сервере:
- Входящий пакет расшифровывается session-ключом.
- Получается оригинальный IP-пакет с реальным destination.
- Сервер форвардит пакет в публичный интернет от своего IP.
- Сайт видит запрос с IP ВПН-сервера, не с твоего.
Ответ от сайта приходит на ВПН-сервер, шифруется тем же session-ключом, отправляется обратно в туннель к тебе. Клиент расшифровывает и отдаёт в стек ОС — приложение получает ответ как будто ВПН не было.
Что видят разные стороны
- Твой провайдер: что ты подключён к ВПН-серверу. Не видит конкретные сайты или содержимое.
- WiFi-сеть: то же что провайдер.
- ВПН-провайдер: видит реальные сайты куда ходишь (он же расшифровывает). Не видит содержимое HTTPS-трафика.
- Сайт: видит IP ВПН-сервера, не твой. Может видеть всё что обычно (User-Agent, куки, поведение).