WireGuard или OpenVPN: что выбрать для VPS
WireGuard быстрее и проще для VPS: конфигурация клиента занимает около 10 строк. Узнайте о четырех случаях, когда OpenVPN все же нужен.
Краткий ответ
WireGuard и OpenVPN для одного человека, который запускает VPN-сервер на собственном VPS, нельзя считать равноценными вариантами: выбирайте WireGuard. Он компактнее, работает внутри ядра Linux, устанавливает соединение за долю секунды, а рабочая конфигурация клиента занимает около десяти строк. У OpenVPN остаются четыре практические задачи. Если ни одна из них вам не нужна, OpenVPN не требуется.
Эти четыре задачи: выход из сети, в которой разрешен только TCP-порт 443; подключение к существующему центру сертификации; аутентификация именованных пользователей с помощью пароля или второго фактора; работа в режиме моста на уровне 2. Ниже приведены обоснования этой рекомендации и точный момент, с которого каждое исключение начинает относиться к вам.
Почему WireGuard стал выбором для self-hosting
Кодовая база достаточно мала для чтения. Реализация протокола WireGuard занимает около 4 000 строк кода. Объем OpenVPN исчисляется шестизначными числами, если учитывать библиотеку OpenSSL, на которую он опирается при выполнении каждой криптографической операции. Размер имеет значение, так как каждая строка — это поверхность атаки, и ни вы, ни ваш аудитор не сможете прочитать 100 000 строк. 4 000 строк прочитать можно.
Он работает в ядре. WireGuard включен в основную ветку Linux начиная с версии 5.6, поэтому Ubuntu 24.04 и Debian 13 поставляют его без необходимости компиляции. Пакеты шифруются там, где они уже находятся — в пространстве ядра, без копирования в пользовательский процесс и обратно. Проверьте это в первую очередь:
sudo modprobe wireguard && echo okНа KVM VPS эта команда выводит ok. В контейнерной виртуализации, использующей общее ядро хоста, такой как OpenVZ или LXC, команда завершится ошибкой Operation not supported, так как вы не можете загрузить модуль в чужое ядро.
Здесь нечего согласовывать. У WireGuard один фиксированный набор шифров: ChaCha20-Poly1305 для данных и ключи Curve25519. Здесь нет версий, на которые можно откатиться, и нет параметров, которые можно настроить неверно. OpenVPN согласовывает шифр и версию TLS (transport layer security) с каждым клиентом; это дает гибкость, но именно здесь возникают ошибки конфигурации. Сервер с настройкой data-ciphers AES-256-GCM:AES-128-CBC без проблем переключится на шифр CBC для клиента, который не предлагает ничего лучше, и лог не пометит использование более слабого шифра как проблему. Если доступна разгрузка канала данных, OpenVPN выводит примечание о том, что запись CBC отключила разгрузку — это предупреждение о скорости, а не о безопасности.
Порт не отвечает. Пакет WireGuard, не прошедший проверку подлинности сообщения, отбрасывается без какого-либо ответа, поэтому nmap -sU -p 51820 не сможет отличить сервер WireGuard от порта, который молча блокируется вашим файрволом: в обоих случаях результат будет open|filtered. Только нефильтрованный порт, на котором ничего не запущено, выдает себя, так как ядро отвечает ICMP-сообщением о недоступности порта, и nmap помечает его как closed. Сервер OpenVPN в режиме TCP завершает TCP-рукопожатие, прежде чем решит, что вы нежелательный гость, чего достаточно для сканера, чтобы подтвердить наличие сервиса. OpenVPN поверх UDP с tls-crypt почти так же незаметен, поэтому это аргумент против запуска OpenVPN по протоколу TCP, а не против самого OpenVPN.
Роуминг бесплатен. Узел WireGuard идентифицируется по открытому ключу, а не по адресу. Ваш ноутбук перемещается из дома в зону действия мобильной точки доступа, отправляет одно рукопожатие с нового адреса, и сервер обновляет конечную точку, на которую отправляет ответы. Ничего не переподключается, так как соединение никогда не было постоянным. OpenVPN может делать нечто подобное с помощью float, но клиент обычно разрывает и заново выстраивает полную TLS-сессию, поэтому пауза при открытии крышки ноутбука заметна в OpenVPN и отсутствует в WireGuard.
Скорость в 2026 году: разрыв сократился
Много лет основным аргументом в пользу скорости было то, что OpenVPN копирует каждый пакет в пространство пользователя, шифрует его там и копирует обратно, тогда как WireGuard никогда не покидает пространство ядра. Сегодня это не вся картина, и сравнение, игнорирующее данный факт, является устаревшим.
OpenVPN 2.7, выпущенный в феврале 2026 года, получил поддержку модуля ядра ovpn, который был включен в состав Linux 6.16. Это DCO (data channel offload): канал управления остается в пространстве пользователя, а основной поток данных перемещается в ядро, что примерно соответствует принципу работы WireGuard. При использовании достаточно новых версий ядра и 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. В этом релизе разгрузка возможна только через более старый пакет openvpn-dco-dkms, который собирает внешний модуль для текущего ядра и, следовательно, требует пересборки при каждом обновлении ядра. Это лишний подвижный элемент, которого нет у WireGuard. Ubuntu 26.04 LTS поставляется с OpenVPN 2.7.0 и ядром Linux 7.0, оба из которых достаточно новы для ovpn, поэтому в этом релизе следует использовать команду modinfo, указанную выше.
Внимательно изучите ограничения DCO, прежде чем считать их причиной остаться на OpenVPN. Технология поддерживает только туннели уровня Layer 3, принимает только AEAD-шифры (аутентифицированное шифрование с ассоциированными данными: AES-GCM или ChaCha20-Poly1305), не поддерживает сжатие, а на сервере работает только с topology subnet. Каждое из этих ограничений лишает OpenVPN части той гибкости, которая изначально была его главным преимуществом. Быстрый OpenVPN — это OpenVPN, настроенный так, чтобы работать подобно WireGuard.
Не доверяйте опубликованным показателям пропускной способности, включая данные на этой странице. Пределом производительности на VPS обычно является лимит CPU или сети, а не сам протокол. Измерьте показатели самостоятельно с помощью iperf3, запустив тест через туннель, а затем вне его, и сравните результаты.
Где OpenVPN по-прежнему актуален
Вам необходимо работать через TCP-порт 443. WireGuard работает исключительно по протоколу UDP, и поддержка TCP не планируется. Гостиничная сеть, фильтрующая трафик только по номеру порта, обычно пропускает OpenVPN, настроенный с параметрами proto tcp-server и port 443. Не путайте это с маскировкой: OpenVPN поверх TCP использует собственное кадрирование пакетов, а не обычную сессию TLS. Поэтому корпоративный межсетевой экран или прокси, выполняющий инспекцию или терминирование HTTPS, всё равно может распознать и заблокировать такой трафик. Для WireGuard в аналогичных условиях требуется обертка, например wstunnel или udp2raw, что означает необходимость запуска и обновления еще одного процесса. Учтите конфликт: если веб-сервер уже занимает TCP-порт 443 на данном IP-адресе, один из сервисов придется перенести.
У вас уже развернут центр сертификации. OpenVPN выполняет аутентификацию с помощью сертификатов X.509, поэтому он легко интегрируется в уже существующую инфраструктуру открытых ключей (PKI). Сертификаты имеют срок действия, а для отзыва сертификата достаточно добавить его в список отзыва (CRL), который сервер считывает через crl-verify. В WireGuard нет сертификатов, сроков действия и списков отзыва. Удаление узла требует редактирования конфигурации сервера и её перезагрузки. Для десяти узлов это приемлемо. Для четырехсот, при наличии требований аудита, модель сертификатов значительно упрощает работу.
Вам нужны именованные пользователи, а не только ключи. OpenVPN может передать аутентификацию внешней системе с помощью auth-user-pass-verify или плагина, такого как openvpn-plugin-auth-pam.so. Именно так реализуется интеграция с LDAP или двухфакторная аутентификация с использованием одноразовых паролей. В WireGuard понятие пользователя отсутствует вовсе. Ключ либо есть в конфигурации, либо его нет. Если ваше требование звучит как «Сара должна ввести код со своего телефона», WireGuard не может обеспечить это самостоятельно.
Вам нужен уровень L2 или клиент для устаревшего оборудования. OpenVPN с параметром dev tap позволяет объединять Ethernet-фреймы в мост, что важно для широковещательных протоколов и старых сетевых игр. WireGuard работает только на уровне L3, и это архитектурное ограничение. Кроме того, 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 будет более простым решением в сети, где фильтрация ведется только по портам, хотя прокси-сервер, инспектирующий HTTPS, всё равно может обнаружить и заблокировать такой трафик.
Является ли OpenVPN небезопасным в настоящее время?
Нет. Современный OpenVPN с использованием AEAD-шифра, такого как AES-256-GCM, и включенным tls-crypt является надежным VPN. Преимущество WireGuard заключается в другом: OpenVPN содержит гораздо больше кода и настроек, поэтому у уставшего администратора гораздо больше шансов настроить его неправильно. Меньше вариантов выбора означает меньше возможностей совершить ошибку.
Что выбрать для персонального VPN на VPS?
WireGuard. Одна пара ключей на устройство, один конфигурационный файл примерно из десяти строк, один открытый UDP-порт и рукопожатие, которое завершается до того, как вы успеете его заметить. Выбирайте OpenVPN только в том случае, если вы регулярно подключаетесь из сетей, блокирующих UDP, или если вам необходимо интегрироваться в существующую инфраструктуру центра сертификации или каталог пользователей.