WireGuard: сучасний протокол VPN, який дійсно змінив речі
WireGuard — це рідкісне програмне забезпечення з відкритим вихідним кодом, яке стало стандартним протягом п’яти років. Основна версія ядра Linux з 2020 року, рушій NordLynx і Mullvad, а кодова база досить мала, щоб одна людина могла перевірити її за півдня. Це детальне пояснення — що це таке, як це працює, чому всі перейшли, і де це все ще не вистачає.
Повний текст статті подано англійською мовою нижче.
Що насправді таке WireGuard
WireGuard — це протокол VPN рівня 3, розроблений Джейсоном А. Доненфельдом і вперше випущений у 2015 році. Визначальним вибором дизайну став мінімалізм: близько 4000 рядків коду C ядра, порівняно з приблизно 70 000 для OpenVPN і десь на північ від 400 000 для різних IPsec реалізації. Менше коду означає меншу поверхню для атаки та кодову базу, яку може мати в голові один інженер — і те, і інше безпосередньо перетворюється на легші перевірки та менше помилок безпеки.
Протокол виконує одну роботу та відмовляється використовувати функцію, якщо це не потрібно. Немає фази узгодження TLS з відбитком пальця, немає вибору наборів шифрів під час виконання, немає розумних запасних ланцюжків. Ви отримуєте один набір сучасних примітивів. Ви використовуєте їх або використовуєте інший протокол.
Криптографічний стек
WireGuard використовує невеликий, самовпевнений набір сучасних примітивів замість того, щоб дозволяти користувачеві вибирати:
- Curve25519 для обміну ключами Діффі–Хеллмана за еліптичною кривою (обидва ефемерний і довгостроковий).
- ChaCha20 для симетричного шифрування.
- Poly1305 для автентифікації повідомлень.
- BLAKE2s для хешування (швидше, ніж SHA-3 і легше, ніж SHA-2).
- HKDF для виведення ключів.
- SipHash24 для внутрішніх хеш-таблиць, які протистоять відмові в обслуговуванні через атаки алгоритмічної складності.
The рукостискання побудовано на шаблоні IK із Noise Protocol Framework. Він завершується двома повідомленнями з додатковим попередньо спільним ключем для додаткового рівня симетричного захисту — корисний як захист від майбутніх квантових обчислювальних атак на Curve25519.
UDP-only за дизайном
WireGuard використовує лише UDP, на порту 51820 за замовчуванням. Це навмисно. Передача TCP через TCP (спосіб роботи OpenVPN-TCP) викликає добре відому проблему збою TCP: коли внутрішнє TCP-з’єднання повторно передає, зовнішнє також повторює передачу, і два таймери топчуть один одного. UDP повністю уникає цього.
Компроміс реальний: у обмежених мережах, де дозволено лише TCP/443, WireGuard просто не працює. Немає еквівалента OpenVPN-over-TCP-443, який можна маскувати під трафік HTTPS. Якщо ви працюєте за мережею у стилі Great Firewall, вам потрібен інший протокол або оболонка, як-от AmneziaWG, яка маскує рукостискання WireGuard. Прийняття ядра
Linux
Статус WireGuard як модуля ядра, а не демона простору користувача, як OpenVPN, є головною причиною такої швидкості. Пакети ніколи не перетинають межу ядра/користувацького простору на гарячому шляху.
- 9 грудня 2019 : Девід Міллер прийняв виправлення WireGuard у дерево Linux net-next.
- 28 січня 2020: Лінус Торвальдс об’єднав net-next, додавши WireGuard до mainline.
- 20 березня 2020: Linux 5.6 постачається з вбудованим WireGuard.
- 30 березня 2020: Android додано власну підтримку ядра в Generic Kernel Image.
- 22 червня 2020 : OpenBSD імпортував його.
- 29 листопада 2020 : FreeBSD 13 слідує.
Torvalds, який славиться скупий на компліменти, назвав код «витвором мистецтва» порівняно з OpenVPN і IPsec. Він не перебільшував.
Незалежний аналіз безпеки
У травні 2019 року дослідники з INRIA опублікували перевірений машиною доказ рукостискання WireGuard за допомогою інструменту CryptoVerif. Вони продемонстрували, що протокол гарантує взаємну автентифікацію, секретність сеансового ключа IND-CCA, пряму секретність і безпеку після зламання — навіть упродовж необмеженої кількості паралельних сеансів, навіть у разі витоку довгострокових ключів. Це надзвичайно сильний формальний результат для протоколу VPN.
Як він порівнюється з OpenVPN і IPsec
На типовому дротовому з’єднанні 1 Гбіт/с із затримкою 50 мс до найближчого виходу:
- Direct (без VPN): повна лінія швидкість, ~5 мс додана затримка.
- WireGuard: 800–950 Мбіт/с, +10–25 мс.
- IKEv2/IPsec: 600–800 Мбіт/с, аналогічно затримка.
- OpenVPN UDP: 250–400 Мбіт/с, +30–60 мс.
- OpenVPN TCP: 100–250 Мбіт/с, +50–100 ms.
Ви можете перевірити розрив самостійно, запустивши наш тест швидкості з вимкненою VPN, а потім повторно запустивши кожен протокол, який підтримує ваш постачальник.
Якщо WireGuard слабший
- Немає стану з’єднання. WireGuard прив’язує однорангового вузла до статичної IP-адреси. Без сторонньої допомоги це створює поверхню журналювання — IP-адреса кожного клієнта, що підключається, пов’язується з його відкритим ключем на сервері. Комерційні VPN вирішують це за допомогою ротації внутрішніх IP-адрес, але це вимагає додаткового налаштування, якого не забезпечує сам протокол.
- UDP-only. Не працює там, де дозволено лише TCP/443.
- Немає вбудованого обходу NAT. Одноранговим вузлам за симетричним NAT потрібен зовнішній координатор.
- Легко зняти відбиток пальця. Рукостискання має характерну форму, і його легко ідентифікувати за допомогою глибокої перевірки пакетів, що є однією з причин, чому його заблоковано в Китаї, Ірані та Росії.
IРеалізації для know
- wireguard-go: офіційна кросплатформна реалізація простору користувача в Go.
- BoringTun: реалізація простору користувача Cloudflare Rust, яка використовується у виробництві на scale.
- wireguard-nt: драйвер ядра Windows, доступний із серпня 2021 року.
- AmneziaWG: розгалуження, яке додає обфускацію протоколу для пропуску глибоких пакетів інспекція.
Хто використовує його комерційно
Mullvad надав підтримку WireGuard майже всім іншим. NordVPN обгортає його як NordLynx із спеціальним рівнем NAT, щоб вирішити проблему розподілу статичної IP-адреси. ProtonVPN підтримує його в усіх планах. IVPN і TunnelBear відправляють його. Tailscale і Cloudflare WARP використовують його внутрішньо. Якщо ваш провайдер сучасний, він майже напевно підтримує WireGuard.
Чи варто вибрати WireGuard?
Для 95% користувачів, так. Він швидший, ефективніший від акумулятора мобільного пристрою, легший у налаштуванні та має набагато надійнішу офіційну історію безпеки, ніж його попередники. Єдині причини вибрати інший спосіб:
- Ви перебуваєте в країні, яка блокує квитування WireGuard через DPI — виберіть OpenVPN через TCP/443 із обфускацією TLS або AmneziaWG.
- Вам потрібен постійний корпоративний тунель до застарілого концентратора IPsec — залишайтеся. IKEv2.
- Ви користуєтеся службою, яка ще не поставляла WireGuard (рідкість у 2026 році).
Після підключення підтвердьте, що тунель дійсно виконує свою роботу за допомогою нашого VPN тесту на витік . Працюючий протокол із неправильно налаштованим клієнтом не кращий, ніж відсутність VPN взагалі.
Часті запитання
- WireGuard безпечніший за OpenVPN?
- Обидва безпечні, якщо їх правильно налаштовано. Набагато менша кодова база WireGuard робить аудит доступним і зменшує площу атаки, а також отримує переваги від офіційного перевіреного машиною підтвердження безпеки, якого OpenVPN не має. OpenVPN отримує переваги від 20+ років перевірки в дикій природі та зрілої екосистеми TLS. У сучасних конфігураціях обох протоколів немає відомого криптографічного зламу.
- Чому WireGuard використовує лише UDP?
- Тому що тунелювання TCP через TCP спричиняє добре відому проблему збою TCP — коли внутрішнє з’єднання повторно передає, зовнішнє з’єднання також повторює передачу, і два таймери повторних спроб топчуть один одного. UDP повністю обходить це. Компроміс полягає в тому, що WireGuard не може маскуватися під HTTPS на TCP/443, тому OpenVPN-TCP все ще корисний у мережах із сильною фільтрацією.
- WireGuard реєструє мій IP?
- Голий протокол пов’язує однорангового вузла з його відкритим ключем, який є свого роду журналом. Поважні комерційні постачальники VPN обгортають WireGuard ротаційними внутрішніми IP-адресами та серверами лише з оперативною пам’яттю, щоб усунути цю поверхню. Якщо ви використовуєте власний сервер WireGuard, відповідальність лежить на вас.
- Чи може WireGuard працювати в Китаї чи Ірані?
- Стандартні рукостискання WireGuard мають характерну форму та легко знімають відбитки пальців під час глибокої перевірки пакетів, тому їх регулярно блокують у країнах із жорсткою фільтрацією. Такі форки, як AmneziaWG, додають обфускацію, яка маскує рукостискання; OpenVPN-over-TCP/443 із обфускацією TLS — ще одна надійна альтернатива.
- WireGuard розрядить батарею мого мобільного?
- Ні — це зазвичай краще, ніж OpenVPN. Невелика кодова база WireGuard і відсутність постійного циклу підтримки активності означає меншу активність процесора та радіо. IKEv2 із реалізацією ядра так само ефективний на мобільних пристроях.