Як налаштувати WireGuard VPN у Linux

1. Що таке WireGuard і навіщо використовувати його в Linux

WireGuard — це VPN-протокол і компактна програма, яка дає користувачам Linux зручний спосіб будувати зашифровані тунелі. Якщо ваша мета — налаштувати WireGuard у Linux, то саме ця простота й робить його практичним вибором. Він робить одну справу — і робить її добре. У цьому й полягає його перевага.

Порівняно зі старішими VPN-системами, WireGuard має коротшу конфігурацію й менше складових. Чим менше налаштувань, тим менше шансів помилитися. У Linux це особливо важливо, бо мережеві зміни можуть швидко стати хаотичними — особливо якщо за один день ви перемикаєтеся між Wi‑Fi, Ethernet і віддаленими серверами.

Налаштування Linux VPN через WireGuard часто простіше зрозуміти, ніж купу застарілих параметрів. Якщо вам потрібна WireGuard VPN Linux інструкція, почніть із базових елементів: приватного ключа, peer, адреси тунелю та маршруту. А далі система робить саме те, що ви їй наказали.

Якщо ви вже працюєте з SSH, маршрутизацією або контейнерами, WireGuard здається знайомим у хорошому сенсі. Конфігурація зберігається у звичайному тексті. Інтерфейс чіткий і прямий. А терміни з глосарію VPN допоможуть не гадати, що означає запис на кшталт “peer” або “allowed IPs”.

2. Що потрібно перед налаштуванням Linux VPN

Перед початком вам потрібні три речі: доступ до машини, права sudo або root і дистрибутив Linux, який підтримує пакети WireGuard. Якщо ви налаштовуєте сервер, ще потрібен доступ до оболонки. Якщо це робочий стіл, потрібен дозвіл на зміну мережевих параметрів. Просто, але це легко пропустити.

Також потрібно зібрати дані підключення від провайдера VPN або адміністратора сервера. Зазвичай це публічний ключ сервера, адреса й порт endpoint, призначена вам IP-адреса тунелю та будь-які DNS-значення, які вони рекомендують. Без цього конфігурація буде неповною.

У деяких дистрибутивах WireGuard є в основних репозиторіях. В інших він пакується під назвами на кшталт wireguard-tools або поділяється на kernel- і user-space-компоненти. Якщо ви шукаєте, як встановити WireGuard на Ubuntu, перевірте документацію дистрибутива, перш ніж виконувати першу команду встановлення. Десять секунд зараз можуть заощадити тридцять хвилин потім.

Якщо це налаштування потрібне для автоматизації, проксі або багаторазового розгортання, тримайте всі значення в одному місці й ретельно їх відстежуйте. Короткий перегляд як вибрати VPN для автоматизації допоможе продумати роботу з ключами, поведінку після перезапуску та іменування хостів ще до того, як ви напишете конфіг, який потім копіюватиметься на п’ять машин.

3. Встановіть WireGuard у своєму Linux-дистрибутиві

Точна назва пакета залежить від дистрибутива, і саме через це багато перших спроб гальмують. Використовуйте менеджер пакетів, що відповідає вашій системі. Не змішуйте інструкції з іншого дистрибутива, якщо не хочете відлагоджувати помилки пакетів о другій ночі.

  1. Спочатку оновіть списки пакетів.

  2. Встановіть пакет інструментів WireGuard для вашого дистрибутива.

  3. Переконайтеся, що команди wg і wg-quick доступні.

  4. Перевірте, чи вже містить ваш kernel підтримку WireGuard, чи потрібен додатковий пакет модуля.

У Debian та Ubuntu пакет зазвичай встановлюють через apt, часто під назвою на кшталт wireguard або wireguard-tools. У Fedora поширена команда dnf install wireguard-tools. У системах на базі Arch пакет також може бути доступний у звичайних репозиторіях. В openSUSE та подібних системах шукайте власну назву пакета WireGuard від дистрибутива.

Практичне правило таке: спочатку встановіть користувацькі інструменти, потім перевірте частину kernel. Якщо інструменти є, а модуль відсутній, тунель не підніметься як слід. Якщо модуль є, а інструментів немає, ви не зможете керувати інтерфейсом. Обидві частини важливі.

Після встановлення швидко перевірте версію. Якщо обидві команди виводять інформацію, базове встановлення завершено. Якщо ні — виправте проблему з пакетом ще до подальших кроків. Зламане встановлення легше полагодити зараз, ніж після того, як ви вже згенерували ключі.

4. Конфігурація WireGuard: створення ключів, файлів конфігурації та налаштування peer

Конфігурація WireGuard починається з ключів. Кожна сторона тунелю має приватний і публічний ключ. Приватний ключ зберігається на машині. Публічний ключ передається peer. Не міняйте їх місцями. Це поширена помилка, а повідомлення про неї не завжди дружні.

Спочатку згенеруйте приватний ключ, а потім виведіть із нього публічний. Зазвичай обидва значення зберігають у файлах і негайно захищають файл приватного ключа. У shell це зазвичай виглядає так:

umask 077
wg genkey | tee privatekey | wg pubkey > publickey

Рядок umask 077 важливий, бо він робить файли ключів доступними для читання лише вам. Один цей рядок позбавляє подальшої мороки з правами доступу. Якщо інший користувач може прочитати ваш приватний ключ, тунель уже не належить лише вам.

Головний файл конфігурації зазвичай називається wg0.conf. Назва інтерфейсу може бути іншою, але wg0 — поширений вибір для першого тунелю. Мінімальний файл налаштування Linux VPN зазвичай містить секцію [Interface] і одну або кілька секцій [Peer].

Типова структура виглядає так:

[Interface]
PrivateKey = YOUR_PRIVATE_KEY
Address = 10.0.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Кожен рядок має своє призначення. PrivateKey визначає ваш локальний інтерфейс. Address задає IP тунелю. DNS вказує системі на резолвер, що корисно, коли тунель має пропускати весь трафік. PublicKey ідентифікує віддалений peer. Endpoint підказує WireGuard, куди підключатися. А AllowedIPs визначає, який трафік має проходити через тунель.

Останній пункт вартий особливої уваги. Якщо встановити AllowedIPs = 0.0.0.0/0, ::/0, увесь IPv4- і IPv6-трафік піде через VPN. Якщо вам потрібна лише одна підмережа, вкажіть саме її. Наприклад, приватний маршрут може бути 10.10.0.0/16. Невірне значення може зламати доступ до локальних ресурсів або спрямувати трафік не туди, куди ви планували.

PersistentKeepalive часто корисний, коли клієнт працює за NAT або домашнім роутером. Значення на кшталт 25 секунд підтримує з’єднання “теплим”. Це не обов’язково, але допомагає з peer, які довго простоюють і потім мають швидко перепідключатися.

Деякі користувачі зберігають DNS у файлі конфігурації, інші залишають системі її власний резолвер. Обидва підходи можуть працювати. Якщо провайдер радить використовувати конкретний DNS-сервер, впишіть його в конфіг. Якщо ні — вирішіть, чи має VPN керувати DNS, чи краще не чіпати його. Це впливає і на приватність, і на діагностику.

Дві деталі, пов’язані з peer, часто викликають плутанину: endpoint і allowed IPs. Endpoint — це адреса й порт сервера. Allowed IPs — це не лише маршрути; це також список джерельних і цільових адрес, які WireGuard приймає для цього peer. Невідповідність тут може зробити так, що тунель виглядатиме активним, але відкидатиме потрібний вам трафік.

5. Підніміть VPN і перевірте, чи він працює

Коли файл конфігурації готовий, помістіть його туди, де його очікує система. У багатьох Linux-системах це /etc/wireguard/wg0.conf. Потім підніміть інтерфейс за допомогою wg-quick. Команда зазвичай проста:

sudo wg-quick up wg0

Якщо конфігурація коректна, інтерфейс має з’явитися без проблем. Якщо виникає помилка, спочатку читайте саме її. WireGuard зазвичай прямо каже, який файл або ключ йому не сподобався. Це краще за невизначений збій після перезавантаження.

Щоб увімкнути тунель під час завантаження, багато систем підтримують назву служби, прив’язану до інтерфейсу, наприклад wg-quick@wg0. Запустіть її, а потім увімкніть автозапуск, якщо машина має підключатися щоразу після рестарту. Робіть це лише після успішного ручного тесту. Поганий конфіг у службах автозапуску може зробити віддалене відновлення машини незручним.

Перевірте стан через wg show або менеджер служб вашого дистрибутива. Вам треба побачити інтерфейс, peer і недавній час handshake. Відсутність handshake означає, що реального тунелю немає. Конфігурація може виглядати правильно, але ще не працювати.

Потім протестуйте з’єднання у два кроки. Спочатку пропінгуйте адресу тунелю або віддалений бік тунелю. Потім перевірте зовнішній трафік, якщо ваша схема маршрутизує весь трафік через VPN. Простий тест у стилі curl ifconfig.me може показати, чи змінилася ваша публічна IP-адреса, хоча конкретний спосіб перевірки може відрізнятися.

DNS потребує окремої перевірки. Якщо тунель піднято, але імена не резолвляться, проблема може бути в рядку DNS, у системному резолвері або в заблокованому upstream-сервері. Спробуйте розв’язати відоме вам ім’я хоста, а не лише пінгувати IP. Доступність IP і DNS — це різні проблеми. І ламаються вони окремо.

6. Поширене усунення проблем з WireGuard у Linux

Відсутні маршрути — одна з перших проблем, з якими стикаються користувачі. Якщо тунель з’єднується, але трафік не рухається, перевірте AllowedIPs і локальні таблиці маршрутизації. Маршрут може бути відсутній, якщо peer його не оголошує, якщо ваша конфігурація його не приймає або якщо пріоритет має інший інтерфейс.

Відсутність інтернету після підключення часто пов’язана з NAT або форвардингом на боці сервера. Якщо сервер має виводити трафік клієнта в інтернет, йому потрібні IP forwarding і правила фаєрвола, які дозволяють пересилання. У Linux це зазвичай означає перевірку налаштувань sysctl і правил iptables або nftables. Без цього тунель може ідеально підключатися, але все одно тримати ваші пакети всередині сервера.

Збої handshake зазвичай вказують на одну з чотирьох причин: неправильні ключі, неправильний endpoint, заблокований UDP-порт або сервер, який не знає ваш публічний ключ. Починайте з ключів. Потім підтвердьте адресу сервера. Потім перевірте порт. І нарешті переконайтеся, що адміністратор сервера дійсно додав ваш peer.

Проблеми з правами доступу легко помітити й неприємно виправляти. Файли приватних ключів мають бути доступні лише потрібному користувачу, і /etc/wireguard/wg0.conf теж не повинен бути відкритим для всіх. Якщо wg-quick відмовляється завантажити файл, перевірте власника та режим. Файл, який добре виглядає в редакторі, може все одно не запуститися через неправильні права.

Проблеми з фаєрволом можуть ховатися в обох напрямках. Локальна машина може блокувати вихідний UDP. Віддалений сервер може блокувати вхідний UDP на порту WireGuard. Якщо ви тестуєте в мережі з жорсткими фільтрами, спробуйте інший порт, який схвалює адміністратор сервера. Конфігурація, що працює на папері, мало що означає, якщо пакети ніколи не залишають хост.

Якщо тунель піднімається, але працюють лише деякі сайти, знову перевірте DNS і порівняйте поведінку IPv4 та IPv6. Машина може розв’язувати імена через тунель, але все одно надсилати IPv6-трафік поза ним. Це може давати дивні результати, наприклад коли одні сайти показують одну IP-адресу, а інші — іншу. Один із варіантів виправлення — спрямувати і 0.0.0.0/0, і ::/0, якщо сервер підтримує обидві сім’ї адрес.

Для середовищ із великою кількістю проксі або змішаними мережевими стекaми помилки автентифікації спочатку можуть виглядати схоже на збої WireGuard. Якщо ви також працюєте з проксі-інструментами, нотатки в найкращих практиках автентифікації проксі можуть допомогти відрізнити мережеву проблему від проблеми облікових даних і швидше знайти джерело збою.