WireGuard + NetworkManager — це швидко, зручно і нативно для більшості десктопних дистрибутивів. У цій інструкції ми разом налаштуємо профіль VPN на Linux, правильно пропишемо DNS, зробимо автозапуск і розкладемо по поличках маршрутизацію (повний тунель і split-tunnel). Я покажу як через термінал Linux (nmcli), так і у GUI Linux. Поїхали! 🚀
Що потрібно встановити
NetworkManager зазвичай уже є на десктопі. Для ключів WireGuard потрібні інструменти wireguard-tools. Оновіть систему і поставте пакети:
# Debian/Ubuntu
sudo apt update
sudo apt install network-manager wireguard-tools
# Fedora
sudo dnf install NetworkManager wireguard-tools
# Arch
sudo pacman -S networkmanager wireguard-tools
Переконайтеся, що версія NetworkManager ≥ 1.26 (має вбудовану підтримку WireGuard). Перевірка:
nmcli --version
Основний How-to: через nmcli (NetworkManager CLI)
1) Згенеруйте ключі WireGuard
umask 077
mkdir -p ~/.config/wireguard
wg genkey | tee ~/.config/wireguard/wg-home.key | wg pubkey > ~/.config/wireguard/wg-home.pub
cat ~/.config/wireguard/wg-home.pub
Скопіюйте public key на сервер. Приватний ключ зберігайте з правами 600.
2) Створіть профіль WireGuard у NetworkManager
# Створити підключення (інтерфейс wg-home)
nmcli connection add type wireguard ifname wg-home con-name wg-home
# Додати приватний ключ до профілю (NM збереже його як секрет)
nmcli connection modify wg-home \
wireguard.private-key "$(cat ~/.config/wireguard/wg-home.key)"
# Встановити IP-адресу в тунелі, режим manual і DNS (з пріоритетом для VPN)
nmcli connection modify wg-home \
ipv4.addresses 10.10.10.2/32 \
ipv4.method manual \
ipv4.dns "10.10.10.1" \
ipv4.dns-priority -42
# Додати пір (peer) з AllowedIPs = повний тунель (IPv4+IPv6)
nmcli connection modify wg-home +wireguard.peer \
"public-key=PEER_PUBKEY,endpoint=wg.example.com:51820,allowed-ips=0.0.0.0/0,::/0,persistent-keepalive=25"
# Роутинг від піра і метрики (щоб VPN мав пріоритет)
nmcli connection modify wg-home wireguard.peer-routes yes
nmcli connection modify wg-home ipv4.route-metric 50 ipv6.route-metric 50
# Увімкнути автозапуск і підняти підключення
nmcli connection modify wg-home connection.autoconnect yes
nmcli connection up wg-home
Перевірка стану:
nmcli -f NAME,TYPE,DEVICE connection show --active
wg show wg-home
ip route
resolvectl status
Якщо бачите активне підключення, маршрути через wg-home та ваш VPN DNS у systemd-resolved — ура, ви на зв'язку 🎉
3) Split-tunnel (лише частина трафіку йде в VPN)
Замість повного тунелю перелічіть лише потрібні підмережі у AllowedIPs. У nmcli це робиться перевизначенням списку піра:
nmcli connection modify wg-home wireguard.peers \
"public-key=PEER_PUBKEY,endpoint=wg.example.com:51820,\
allowed-ips=10.10.10.0/24,203.0.113.10/32,fd00:10:10::/64,persistent-keepalive=25"
# Перезапустіть профіль
nmcli connection down wg-home || true
nmcli connection up wg-home
DNS при цьому все одно залишиться з високим пріоритетом завдяки ipv4.dns-priority -42, тож запити підуть через VPN DNS (хоча загальний трафік — ні). Це часто найзручніша схема для робочих мережевих налаштувань.
4) Точна ручна маршрутизація
Якщо потрібно повністю контролювати маршрути, вимкніть автоматичні peer-routes і додайте свої:
nmcli connection modify wg-home wireguard.peer-routes no
nmcli connection modify wg-home ipv4.routes "10.66.0.0/24" +ipv4.routes "203.0.113.10/32"
nmcli connection down wg-home || true
nmcli connection up wg-home
Так ви задаєте, які саме підмережі йдуть у VPN, навіть якщо AllowedIPs у пірі ширший.
Альтернативні способи
Імпорт готового wg-quick файлу
Якщо у вас уже є wg0.conf від сервера, просто імпортуйте:
nmcli connection import type wireguard file ./wg0.conf
nmcli connection up wg0
NetworkManager перетворить його у свій профіль. Далі все можна правити через nmcli або GUI.
systemd-networkd або wg-quick (без NetworkManager)
Це підходить для серверів або мінімальних систем, але на десктопі я рекомендую лишатися з NetworkManager — він краще інтегрований з DNS та автозапуском.
GUI-спосіб (GNOME/KDE)
У більшості середовищ робочого столу (GNOME, KDE) WireGuard доступний через стандартні налаштування мережі. Кроки:
- Відкрийте Налаштування → Мережа → VPN → Додати (+) → WireGuard.
- Заповніть: Назва профілю (наприклад, wg-home), Приватний ключ, Адреса (10.10.10.2/32), Порт (якщо потрібен), MTU (за замовчуванням ок), Endpoint, Публічний ключ піра, AllowedIPs, Keepalive.
- DNS: додайте VPN DNS (наприклад, 10.10.10.1). У GNOME в розділі IPv4/IPv6 натисніть DNS та введіть адресу.
- Для split-tunnel відкрийте «Маршрути…» і увімкніть опцію «Використовувати це з'єднання лише для ресурсів його мережі» — це еквівалент відсутності дефолтного маршруту через VPN.
- Увімкніть «Підключатися автоматично» для автозапуску після логіну або старту системи.
FAQ
WireGuard не з’являється в GUI
Перевірте NetworkManager ≥ 1.26 і наявність wireguard-tools. Оновіть систему. На дуже старих дистрибутивах міг знадобитися окремий плагін, але зараз підтримка вбудована.
DNS не перемикається на VPN
Переконайтеся, що NetworkManager керує резолвером (systemd-resolved). Перевірте:
resolvectl status
У профілі має бути ipv4.dns (і/або ipv6.dns) та ipv4.dns-priority -42. Якщо у вас локальний resolvconf, увімкніть інтеграцію з NM або перейдіть на systemd-resolved.
З’єднання падає після сну
Додайте persistent-keepalive=25 у peer і увімкніть connection.autoconnect yes. Перевірте, що брандмауер не блокує вихідний UDP.
Потрібно кілька пірів
Додавайте ще один +wireguard.peer із власним allowed-ips. Якщо конфіг складний, зручніше імпортувати готовий wg-quick файл з кількома пірами.
Проблеми з MTU/швидкістю
Спробуйте зменшити MTU, наприклад до 1280–1420:
nmcli connection modify wg-home wireguard.mtu 1420
nmcli connection down wg-home || true
nmcli connection up wg-home
Конфлікт із wg-quick
Не запускайте одночасно wg-quick up wg-home і профіль NM з тим же інтерфейсом. Спочатку wg-quick down, потім керуйте підключенням через NetworkManager.
Порада від Kernelka
Для робочого середовища тримайте окремі профілі: «повний тунель» для публічних Wi‑Fi і «split-tunnel» для доступу до офісних ресурсів. Задайте route-metric нижчим для важливого профілю — так він виграє пріоритет. І не забувайте: приватний ключ у файлі має бути з правами 600, а краще зберігати його в секретному сховищі NetworkManager.
Підсумок
- Створили профіль WireGuard у NetworkManager через термінал Linux і GUI Linux.
- Налаштували DNS із пріоритетом для VPN і автозапуск профілю.
- Розібрали повний тунель і split-tunnel через AllowedIPs та власні маршрути.
- Розв’язали типові проблеми: DNS, сон, MTU, імпорт конфігів.
- Маєте готовий чекліст для надійних мережевих налаштувань VPN на Linux.

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