WireGuard — це сучасний, швидкий і мінімалістичний VPN для Linux. У цій інструкції ми розгорнемо його на сервері Linux, додамо клієнтів (peers), коректно відкриємо порт у firewall Linux та налаштуємо автозапуск через systemd. Підійде як для домашньої, так і для продакшн-мережі на вашому сервері Linux 🔒.
Передумови та установка WireGuard
Потрібен Linux з ядром 5.6+ (або пакетами backports), доступ root/sudo, відкритий UDP-порт (типово 51820) та публічна IP-адреса або домен. Далі працюємо з терміналом (це швидше, ніж будь-який GUI).
Увімкніть маршрутизацію пакетів (щоб трафік із VPN виходив у зовнішню мережу) і зафіксуйте зміни:
Створення сервера WireGuard
Згенеруємо ключі, створимо конфіг, відкриємо порт у firewall та запустимо інтерфейс. Це базові мережеві налаштування для нашого VPN на Linux.
Створимо /etc/wireguard/wg0.conf. Замість 'eth0' підставте ваш зовнішній інтерфейс (див. ip r). У прикладі використаємо підмережу 10.8.0.0/24 і ULA IPv6.
Відкрийте порт UDP 51820 у firewall Linux. Наведу два поширені варіанти:
Запускаємо інтерфейс і вмикаємо автозапуск:
Конфігурація клієнтів (peer)
На клієнтській машині встановіть WireGuard, згенеруйте ключі та створіть конфіг. Це може бути Linux-ноутбук, VPS або телефон (мобільні додатки імпортують готовий .conf/QR).
Додайте клієнта на сервері. Використаємо AllowedIPs 10.8.0.2/32 (одна IP-адреса для клієнта):
Запустіть інтерфейс на клієнті та додайте в автозапуск:
Увімкнення автозапуску через systemd
WireGuard з утилітою wg-quick має unit-файл wg-quick@.service. Для кожного інтерфейсу (wg0, wg1, ...) просто вмикаємо enable:
Альтернативні способи та інструменти
systemd-networkd (без wg-quick)
Якщо ви керуєте мережами через systemd-networkd, можна описати інтерфейс у .netdev/.network:
firewalld з маскарадингом
Контейнери
Можна підняти окремий контейнер (наприклад, linuxserver/wireguard). Але для початку простіше мати чисту серверну інсталяцію без контейнеризації.
GUI-спосіб (NetworkManager)
На робочих станціях з GNOME/KDE зручно додати профіль через NetworkManager. Імпортуйте .conf клієнта або створіть вручну. Через термінал це робиться так:
У графічних налаштуваннях мережі оберіть WireGuard, вставте ключі, адреси та Endpoint — і готово 🚀.
FAQ
Немає рукопотискання (Handshake) або не пінгується сервер
Перевірте: відкрито UDP 51820 у firewall, правильний зовнішній IP/домен, портфорвардинг на роутері (якщо за NAT), збігаються ключі та AllowedIPs. На клієнтах у мобільних мережах увімкніть PersistentKeepalive=25.
Весь трафік не йде через VPN
На клієнті використайте AllowedIPs = 0.0.0.0/0, ::/0. На сервері має бути маскарадинг і увімкнено ip_forward. Перевірте, що зовнішній інтерфейс у NAT-правилі правильний.
Проблеми з MTU/фрагментацією
Спробуйте зменшити MTU (наприклад, 1380) у секції [Interface] на клієнті та сервері: MTU = 1380.
Кілька клієнтів отримують один IP
Призначайте унікальні адреси й точні AllowedIPs на сервері: 10.8.0.X/32 для кожного peer.
IPv6 не працює
Додайте IPv6-префікс (наприклад, fd10:8::/64) і forwarding для IPv6. Додайте ::/0 в AllowedIPs клієнта, якщо потрібен повний тунель.
Динамічний IP на сервері
Використовуйте динамічний DNS у Endpoint (наприклад, myvpn.ddns.net:51820). Кеш DNS оновиться сам, або перезапустіть клієнт.
Порада від Kernelka
Зберігайте приватні ключі з правами 600, обмежте SSH-доступ, а в firewall Linux дозвольте лише потрібні порти. Якщо клієнти часто «засинають», ставте PersistentKeepalive=25. Для повторюваних дій (додавання peers) зручно мати невеликі bash-скрипти або Ansible-роль — це заощадить час і знизить ризик помилок.
Підсумок
- Встановили WireGuard і увімкнули маршрутизацію.
- Згенерували ключі, створили wg0.conf і відкрили порт у firewall.
- Додали клієнтів із чіткими AllowedIPs і перевірили з'єднання.
- Увімкнули автозапуск через systemd: wg-quick@wg0.
- Розглянули альтернативи: systemd-networkd, firewalld, NetworkManager (GUI).
Головне — акуратні мережеві налаштування, правильний firewall і логічне планування адрес. Так WireGuard працює швидко, стабільно й безболісно.

Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.