WireGuard или OpenVPN для своего VPS: что выбрать
WireGuard быстрее и проще для self-hosting: конфигурация клиента занимает около 10 строк. Узнайте о 4 случаях, когда OpenVPN всё же лучше.
Краткий ответ
WireGuard и OpenVPN для одного человека, который запускает VPN-сервер на собственном VPS, нельзя считать равноценными вариантами: выбирайте WireGuard. Он компактнее, работает внутри ядра Linux, устанавливает соединение за долю секунды, а рабочая конфигурация клиента занимает около десяти строк. У OpenVPN остаются четыре практические задачи. Если ни одна из них вам не нужна, OpenVPN не требуется.
Эти четыре задачи: выход из сети, в которой разрешен только TCP-порт 443; подключение к существующему центру сертификации; аутентификация именованных пользователей с помощью пароля или второго фактора; работа в режиме моста на уровне 2. Ниже приведены обоснования этой рекомендации и точный момент, с которого каждое исключение начинает относиться к вам.
Почему WireGuard выбрали администраторы собственных серверов
Исходный код достаточно мал, чтобы его изучить. Проект WireGuard содержит реализацию протокола примерно в 4,000 строках кода. Если учитывать библиотеку OpenSSL, от которой OpenVPN зависит при выполнении всех криптографических операций, объём OpenVPN достигает шестизначного числа строк. Размер имеет значение, поскольку каждая строка расширяет поверхность атаки, а вы и ваш проверяющий не станете читать 100,000 строк. 4,000 строк прочитать можно.
Он работает в ядре. WireGuard входит в основную ветку Linux начиная с версии 5.6, поэтому Ubuntu 24.04 и Debian 13 поставляют его без необходимости компиляции. Пакеты шифруются там, где они уже находятся, в пространстве ядра. Их не нужно копировать в процесс пользовательского пространства и обратно. Сначала проверьте это:
sudo modprobe wireguard && echo okНа VPS с KVM эта команда выводит ok. В контейнерной виртуализации с общим ядром хоста, например OpenVZ или LXC, она завершается с Operation not supported, поскольку нельзя загрузить модуль в ядро, которое вам не принадлежит.
Согласовывать нечего. WireGuard использует один фиксированный набор шифров: ChaCha20-Poly1305 для данных и ключи Curve25519. Версию нельзя понизить, и нет параметра, который можно указать неправильно. OpenVPN согласовывает с каждым клиентом шифр и версию TLS (transport layer security). Это обеспечивает гибкость, но также создаёт условия для неправильной настройки. Сервер, на котором оставлено значение data-ciphers AES-256-GCM:AES-128-CBC, без проблем перейдёт на шифр CBC для клиента, который не предлагает ничего лучше. В журнале это не будет отмечено как проблема.
Порт не отвечает. Пакет WireGuard, не прошедший проверку аутентификации сообщения, отбрасывается без какого-либо ответа. Поэтому nmap -sU -p 51820 возвращает open|filtered независимо от того, прослушивает ли что-либо этот порт. Сервер OpenVPN в режиме TCP устанавливает TCP-соединение до того, как решает, что клиенту доступ запрещён. Этого достаточно, чтобы сканер определил наличие службы. OpenVPN поверх UDP с tls-crypt почти так же не отвечает, поэтому этот аргумент относится к запуску OpenVPN поверх TCP, а не к OpenVPN в целом.
Роуминг не требует дополнительных действий. Узел WireGuard определяется открытым ключом, а не адресом. Ноутбук переходит из домашней сети в мобильную точку доступа, отправляет одно рукопожатие с нового адреса, и сервер обновляет конечную точку, на которую отправляет ответы. Переподключения нет, поскольку соединение изначально не устанавливалось в этом смысле. OpenVPN может работать аналогично с float, но клиент обычно разрывает и заново устанавливает полную сессию TLS. Поэтому после открытия крышки задержка заметна в OpenVPN и отсутствует в WireGuard.
Скорость в 2026: разрыв сократился
В течение многих лет главным аргументом в пользу скорости было то, что OpenVPN копировал каждый пакет в userspace, шифровал его там и копировал обратно, а WireGuard никогда не покидал kernel. Теперь это уже не вся картина. Сравнение, которое это игнорирует, устарело.
OpenVPN 2.7, выпущенный в феврале 2026, получил поддержку основного модуля ядра ovpn, включенного в Linux 6.16. Это DCO (data channel offload): канал управления остается в userspace, а основной поток данных переносится в kernel. Примерно так всегда работал WireGuard. На kernel и OpenVPN достаточно новых для использования этой функции пропускная способность находится в одном классе, а не отличается на порядок. Проверьте, что именно установлено у вас:
uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3По состоянию на июль 2026 стандартный Ubuntu 24.04 LTS поставляется с OpenVPN 2.6, а не с 2.7, и для модуля ovpn требуется версия 2.7. В этом выпуске offload доступен только через более старый пакет openvpn-dco-dkms. Он собирает внешний модуль для работающего kernel, поэтому модуль приходится пересобирать после каждого обновления kernel. У WireGuard такого дополнительного компонента нет.
Перед тем как считать DCO причиной остаться на OpenVPN, ознакомьтесь с ограничениями. DCO поддерживает только туннели Layer 3, принимает только шифры AEAD (authenticated encryption with associated data: AES-GCM или ChaCha20-Poly1305), не поддерживает сжатие и на сервере работает только с topology subnet. Каждое из этих ограничений уменьшает гибкость, которая изначально была главным аргументом в пользу OpenVPN. Быстрый OpenVPN — это OpenVPN, настроенный так, чтобы работать как WireGuard.
Не доверяйте опубликованным показателям пропускной способности, включая данные на этой странице. На VPS предел обычно задается доступными ресурсами CPU или сети, а не протоколом. Измерьте пропускную способность самостоятельно с помощью iperf3, запущенного через туннель, а затем повторите измерение вне туннеля и сравните результаты.
Где OpenVPN по-прежнему оправдан
Вам нужно выйти во внешнюю сеть через TCP-порт 443. WireGuard работает только через UDP, и это сделано намеренно. Режим TCP не планируется. Сеть отеля или корпоративный прокси, разрешающий только TCP 443, пропустит OpenVPN, настроенный с proto tcp-server и port 443, поскольку такой трафик выглядит как обычный сеанс TLS. Для работы WireGuard в той же сети потребуется оболочка, например wstunnel или udp2raw. Это означает, что нужно запускать и регулярно обновлять еще один процесс. Учтите конфликт: если веб-сервер уже занимает TCP 443 на этом IP-адресе, один из двух сервисов придется перенести на другой порт.
Вы уже используете центр сертификации. OpenVPN выполняет аутентификацию с помощью сертификатов X.509, поэтому он без проблем встраивается в уже используемую инфраструктуру открытых ключей (PKI). Срок действия сертификатов истекает автоматически. Чтобы отозвать сертификат, достаточно добавить его в список отзыва сертификатов, который сервер получает через crl-verify. В WireGuard нет сертификатов, сроков их действия и списка отзыва. Чтобы удалить узел, нужно изменить конфигурацию сервера и перезагрузить ее. Для 10 узлов это несложно. Для 400 узлов при наличии требования к аудиту модель с сертификатами значительно упрощает работу.
Вам нужны именованные пользователи, а не только ключи. OpenVPN может передать аутентификацию внешней системе с помощью auth-user-pass-verify или подключаемого модуля, например openvpn-plugin-auth-pam.so. Так можно добавить LDAP или второй фактор с одноразовым паролем. В WireGuard вообще нет понятия пользователя. Ключ либо указан в конфигурации, либо отсутствует. Если требуется, чтобы «Sara вводила код со своего телефона», WireGuard не может реализовать это самостоятельно.
Вам нужен уровень 2 или клиент для устаревшей системы. OpenVPN с dev tap передает кадры Ethernet в режиме моста. Это важно для протоколов широковещательной передачи и старых игр по локальной сети. WireGuard работает только на уровне 3 и всегда будет работать только на этом уровне. Кроме того, OpenVPN имеет клиенты для оборудования и операционных систем, на которых приложение WireGuard никогда не появится. Обе причины постепенно теряют актуальность. dev tap несовместим с DCO, поэтому при использовании моста применяется более медленный режим.
Во что на самом деле обходятся вам оба варианта
Идентификация WireGuard выполняется одной командой. Скобки важны, поскольку они задают режим файла до создания ключа:
(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.keyЭквивалентная конфигурация OpenVPN — это центр сертификации, которым вы теперь владеете всё время работы VPN:
sudo apt install -y easy-rsa
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server serverНи один из списков не преувеличивает затраты. Центр сертификации обеспечивает срок действия и отзыв сертификатов. Но вы должны защищать закрытый ключ годами, не забывать о продлении и заново развертывать систему, если потеряете этот ключ. Если вы не используете предоставляемые им возможности, вы платите ни за что. Полная процедура настройки WireGuard, включая переадресацию, NAT (преобразование сетевых адресов) и сбои рукопожатия, на устранение которых может уйти целый день, приведена в руководстве по самостоятельному размещению VPN WireGuard на VPS.
Что требуется каждому протоколу от брандмауэра
WireGuard требует ровно одного входящего правила для UDP на порту, указанном в ListenPort:
sudo ufw allow 51820/udp
sudo ufw status verboseOpenVPN по умолчанию использует UDP 1194 или TCP 443, если вы выбрали этот вариант. Для обоих протоколов также нужно включить IP-переадресацию и настроить правило исходного NAT, поскольку Linux отбрасывает пакеты, адресованные не этому компьютеру. Эта часть одинакова для обоих протоколов. Именно здесь чаще всего возникают сообщения о том, что «туннель подключается, но интернет не работает». Если вы впервые работаете с ufw, начните с основ работы с брандмауэром ufw на VPS. Также помните, что большинство провайдеров используют дополнительный сетевой брандмауэр в панели управления. Правило, добавленное на сервере, не действует, если пакет не достигает сервера. Понимание того, что такое порт и как Linux прослушивает порт ускоряет обе проверки.
Как выбрать, в одном абзаце
Используйте WireGuard, если не можете назвать конкретную задачу, с которой он не справляется. Если для выхода из сети с ограничениями требуется TCP 443, используйте OpenVPN, а также рассмотрите возможность запуска обоих решений: они используют разные порты и могут работать на одном сервере без конфликтов. Если вам нужны учетные записи пользователей или второй фактор, не пытайтесь реализовать это средствами WireGuard. Вместо этого добавьте над ним слой идентификации. Собственный управляющий сервер Headscale использует WireGuard на нижнем уровне и добавляет модель учетных записей, распространение ключей и подтверждение устройств, которые обычный WireGuard оставляет на вашей стороне.
Миграция с OpenVPN без простоя
Прямого преобразования нет. PKI OpenVPN нельзя преобразовать в ключи WireGuard, поскольку в WireGuard нет сертификатов, в которые их можно преобразовать. Каждый клиент получает новую пару ключей, сгенерированную так же, как пара ключей сервера.
Выполняйте миграцию параллельно, а не переключением. WireGuard через UDP 51820 и OpenVPN через 1194 могут одновременно работать на одном компьютере. Поэтому запустите wg0, проверьте его с помощью sudo wg show, убедившись, что вывод содержит недавнюю запись latest handshake, а затем переносите клиентов по одному. Когда список узлов OpenVPN перестанет изменяться, остановите службу с помощью sudo systemctl disable --now openvpn-server@server. Сохраните файлы CA, пока не убедитесь, что они больше не нужны. Восстановить отозванный клиентский сертификат с помощью удаленного CA невозможно.
Одни данные действительно не переносятся: учетные записи с именами пользователей и паролями, а также связанный с ними журнал отзыва. Заранее решите, где они будут храниться, до отключения старого сервера.
FAQ
WireGuard быстрее, чем OpenVPN?
На стандартном сервере Ubuntu 24.04 — да, и значительно, потому что WireGuard шифрует данные в ядре, а OpenVPN 2.6 передаёт каждый пакет через процесс в пользовательском пространстве. В OpenVPN 2.7 с модулем ядра ovpn из Linux 6.16 путь передачи данных также находится в ядре, поэтому оба решения относятся к одному классу. Измерьте собственную скорость с помощью iperf3 через туннель, а не ориентируйтесь на число из блога: на VPS ограничением обычно становятся процессор или выделенная пропускная способность.
Может ли WireGuard работать через TCP-порт 443?
Сам по себе — нет. WireGuard по замыслу работает только через UDP, и режим TCP не планируется. Чтобы пройти через сеть, разрешающую только TCP 443, оберните его в туннель, например wstunnel или udp2raw. Это добавляет процесс, который нужно запускать и обновлять на обеих сторонах. Если такое ограничение является обычным условием вашей работы, OpenVPN с proto tcp-server и port 443 будет более простым решением.
Небезопасен ли OpenVPN сейчас?
Нет. Современный OpenVPN с шифром AEAD, например AES-256-GCM, и включённым tls-crypt является надёжным VPN-решением. Преимущество WireGuard связано с другим: OpenVPN содержит намного больше кода и параметров, поэтому у уставшего администратора гораздо больше возможностей настроить его неправильно. Меньше вариантов — меньше ошибок.
Что выбрать для личного VPN на VPS?
WireGuard. Одна пара ключей на устройство, один конфигурационный файл примерно на десять строк, один открытый UDP-порт и рукопожатие, которое завершается почти незаметно. Выбирайте OpenVPN только в том случае, если регулярно подключаетесь из сетей, блокирующих UDP, или если необходимо использовать уже существующий центр сертификации либо каталог пользователей.