OpenVPN
OpenVPN — open-source VPN, работает поверх TLS/SSL в user-space. Написан Джеймсом Йонаном в 2001-2002. До появления WireGuard был де-факто стандартом «нормального VPN» — гибкий, кроссплатформенный, работал везде.
Как работает
- Создаёт виртуальный сетевой интерфейс (TUN — L3, или TAP — L2) через модуль ядра.
- Демон в user-space принимает пакеты с этого интерфейса, шифрует, отправляет через UDP или TCP на сервер.
- Сервер расшифровывает и роутит наружу.
- Handshake — обычный TLS. После него — свой протокол поверх шифрования.
Транспорт
| Транспорт | Особенности |
|---|---|
| UDP (по умолчанию) | Быстро, без TCP-over-TCP-проблем. Обычно порт 1194. |
| TCP | Работает через файрволы, но плохой перформанс (TCP-over-TCP head-of-line blocking). Порт 443 для маскировки под HTTPS. |
Криптография
- Data channel: AES-256-GCM (современно) или AES-256-CBC + HMAC-SHA256 (старая мода).
- Control channel: TLS 1.2/1.3.
- Аутентификация: X.509 сертификаты (CA, server-cert, client-cert) — «правильно». Иногда PSK (static key). Часто ещё login/password поверх (auth-user-pass).
- tls-auth / tls-crypt — HMAC-обёртка вокруг control-channel: пакеты без правильной подписи молча отбрасываются. Защита от DoS и сканирования сервера.
- PFS — да, за счёт TLS.
Конфигурация клиента
client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
verb 3
<ca>...</ca>
<cert>...</cert>
<key>...</key>
<tls-crypt>...</tls-crypt>
Плюсы
- Работает на всех платформах: Linux, Windows, macOS, iOS, Android, роутерах.
- Известный, проверенный, аудитов было много.
- Может по TCP/443 — обход файрволов.
- Богатая конфигурация: routes, DNS-push, множество клиентов, split-tunnel, redirect-gateway.
- PKI на X.509 — понятная для админов «энтерпрайза».
Минусы
- Медленный. User-space, тяжёлый TLS-handshake, много системных вызовов. Один поток на CPU-ядро — plateau обычно 500-800 Мбит/с даже на быстром железе. WireGuard-в 5-10 раз быстрее.
- Легко детектится. Свой TLS-fingerprint, характерные OPCODE в UDP-пакетах, размер handshake. GFW и другие DPI ловят на раз-два. Иногда прячут в stunnel или obfs4.
- Тормознутый handshake. Полный TLS-handshake при каждом переподключении.
- Настройка сложная. PKI, CA, генерация ключей, роуты — есть где ошибиться.
Управление / тулинг
- easy-rsa — генерация PKI из коробки.
- OpenVPN Access Server — коммерческая веб-панель.
- Pritunl, OpenVPN-CE, 3proxy с OpenVPN — open-source панели.
- AmneziaVPN умеет OpenVPN-cloak.
OpenVPN 3
В 2023-2024 OpenVPN выкатил OpenVPN 3 (DCO — Data Channel Offload): перенос data-channel в ядро (Linux/Windows). Ускорение в 3-5 раз, ближе к WireGuard. Но всё ещё tsopkin по сравнению.
Обфускация
- OpenVPN по себе не обфусцирован. DPI ловит.
- Внутри obfs4-туннеля — детект стал сложнее.
- AmneziaVPN добавляет собственный XOR-обфускатор и cloak-режимы.
- Через stunnel — оборачивает в чистое TLS+443, но всё ещё детектится по TLS-fingerprint-у.
Когда всё ещё имеет смысл
- Корпоративный VPN с PKI и AD-интеграцией.
- Совместимость с legacy-роутерами и клиентами.
- Если нужен TCP-fallback на 443.
Для нового домашнего VPN — всегда бери WireGuard или его обёртки (Tailscale, AmneziaWG).