WireGuard чи OpenVPN: що обрати для свого VPN
WireGuard швидший і має конфігурацію приблизно на 10 рядків. Дізнайтеся про 4 випадки, коли OpenVPN кращий: TCP 443, CA, 2FA та рівень 2.
Коротка відповідь
WireGuard порівняно з OpenVPN для однієї людини, яка запускає VPN-сервер на власному VPS, не залишає реального вибору: обирайте WireGuard. Він компактніший, працює всередині ядра Linux, підключається за частки секунди, а робоча конфігурація клієнта містить приблизно десять рядків. OpenVPN зберігає чотири практичні переваги. Якщо жодна з них вам не потрібна, він вам не потрібен.
Ці чотири завдання: вихід із мережі, яка дозволяє лише TCP-порт 443; підключення до наявного центру сертифікації; автентифікація іменованих користувачів за паролем або другим фактором; робота на рівні 2. Нижче наведено обґрунтування цієї рекомендації та точні умови, за яких кожен виняток починає стосуватися саме вас.
Чому WireGuard став вибором для самостійних адміністраторів
Кодову базу достатньо легко прочитати. Проєкт 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 (безпека транспортного рівня). Це забезпечує гнучкість, але також створює можливості для неправильної конфігурації. Сервер із параметром 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 копіював кожен пакет у простір користувача, шифрував його там, а потім копіював назад, тоді як WireGuard ніколи не залишав ядро. Тепер це вже не повна картина, і порівняння без урахування цього застаріло.
OpenVPN 2.7 випущено в лютому 2026 року з підтримкою основного модуля ядра ovpn, який було додано до Linux 6.16. Це DCO (розвантаження каналу даних): керувальний канал залишається у просторі користувача, а основний шлях передавання даних переміщується в ядро. Приблизно так само 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 не має такого рухомого компонента.
Перш ніж вважати DCO причиною залишатися на OpenVPN, ознайомтеся з обмеженнями. Він підтримує лише тунелі рівня 3, приймає лише шифри AEAD (автентифіковане шифрування з пов’язаними даними: 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 немає сертифікатів, строків дії або списку відкликаних сертифікатів. Щоб видалити вузол, потрібно змінити конфігурацію сервера та повторно завантажити її. Для десяти вузлів це прийнятно. Для чотирьохсот вузлів, за наявності вимог аудиту, модель із сертифікатами справді спрощує адміністрування.
Вам потрібні іменовані користувачі, а не лише ключі. OpenVPN може передавати автентифікацію зовнішній системі через auth-user-pass-verify або плагін на зразок openvpn-plugin-auth-pam.so. Так можна додати LDAP або другий фактор у вигляді одноразового пароля. У WireGuard взагалі немає поняття користувача. Ключ або є в конфігурації, або його немає. Якщо ваша вимога полягає в тому, що «Sara має ввести код зі свого телефона», WireGuard не може реалізувати це самостійно.
Вам потрібен Layer 2 або клієнт для застарілого обладнання. OpenVPN із dev tap передає Ethernet-кадри через міст. Це важливо для протоколів широкомовлення та старих ігор у локальній мережі. WireGuard працює лише на Layer 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 (перетворенням мережевих адрес) і помилками рукостискання, через які можна втратити цілий робочий день, описана в посібнику зі самостійного розгортання WireGuard VPN на VPS.
Що кожен із них потребує від вашого брандмауера
WireGuard потребує лише одного вхідного правила для UDP на порту, указаному в ListenPort:
sudo ufw allow 51820/udp
sudo ufw status verboseOpenVPN за замовчуванням потребує UDP 1194 або TCP 443, якщо ви вибрали цей варіант. Для обох протоколів також потрібно ввімкнути пересилання IP і додати правило source 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, або якщо потрібно використовувати наявний центр сертифікації чи каталог користувачів.