WireGuard на Ubuntu і Debian: швидке налаштування VPN
19.04.2026WireGuard давно став одним із найзручніших способів організувати VPN на Linux. Він легкий у налаштуванні, працює швидко й не перевантажує систему зайвими компонентами. Якщо вам потрібен захищений тунель між сервером і ноутбуком, доступ до домашньої мережі ззовні або простий приватний VPN для кількох пристроїв, WireGuard на Ubuntu і Debian — дуже вдалий варіант.
У цій статті розберемо базове встановлення та конфігурацію WireGuard крок за кроком. Приклади підійдуть для Ubuntu та Debian, а самі команди можна адаптувати під інші сумісні дистрибутиви.
Що знадобиться перед початком
Для прикладу візьмемо два вузли: сервер із публічною IP-адресою та клієнт, який підключатиметься до нього. На обох машинах мають бути права sudo, а також доступ до термінала. У всіх командах нижче припускаємо, що ви працюєте від звичайного користувача з підвищенням прав через sudo.
- сервер на Ubuntu або Debian;
- клієнт на Ubuntu, Debian або іншому Linux;
- відкритий UDP-порт для WireGuard;
- базове розуміння роботи з файлами конфігурації.
Встановлення WireGuard
Спочатку оновіть список пакетів і встановіть WireGuard. На сучасних версіях Ubuntu та Debian він доступний у стандартних репозиторіях.
sudo apt update
sudo apt install wireguard -y
Після встановлення з’являться інструменти для генерації ключів, роботи з інтерфейсом і керуванням сервісом. Додаткових складних залежностей зазвичай не потрібно.
Створення ключів
WireGuard використовує пару ключів: приватний і публічний. Приватний ключ зберігається лише на конкретному пристрої, а публічний передається іншій стороні для авторизації.
На сервері
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
На клієнті
umask 077
wg genkey | tee client_private.key | wg pubkey > client_public.key
Після цього перегляньте вміст файлів і збережіть ключі в безпечному місці. Приватні ключі не можна передавати стороннім або публікувати в репозиторіях.
Налаштування сервера
Створимо конфігурацію для інтерфейсу wg0. Зазвичай для нього використовують окрему приватну підмережу, наприклад 10.8.0.0/24. У прикладі сервер матиме адресу 10.8.0.1.
sudo nano /etc/wireguard/wg0.conf
Приклад вмісту конфігурації:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
Замість SERVER_PRIVATE_KEY і CLIENT_PUBLIC_KEY вставте реальні значення з файлів ключів. Якщо у вас буде кілька клієнтів, для кожного додається окремий блок [Peer] із власною IP-адресою.
Увімкнення маршрутизації
Щоб клієнт міг не лише бачити сервер, а й за потреби виходити через нього до інших ресурсів, потрібно ввімкнути IP forwarding. Для базового доступу до самого сервера це теж корисна опція.
sudo nano /etc/sysctl.conf
Знайдіть або додайте такі рядки:
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Потім застосуйте зміни:
sudo sysctl -p
Налаштування NAT, якщо потрібен доступ у мережу через сервер
Якщо ви хочете, щоб клієнтський трафік ішов через сервер у зовнішню мережу, зазвичай налаштовують маскарадинг. Для цього потрібно знати назву зовнішнього інтерфейсу, наприклад eth0 або ens3.
Додайте правила через iptables або налаштуйте їх у власному скрипті запуску. Приклад:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Назву інтерфейсу eth0 замініть на свою. Якщо NAT вам не потрібен, цей крок можна пропустити.
Конфігурація клієнта
Тепер налаштуємо клієнт. Створіть файл /etc/wireguard/wg0.conf на клієнтській машині.
sudo nano /etc/wireguard/wg0.conf
Приклад конфігурації:
[Interface]
Address = 10.8.0.2/24
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25
Тут YOUR_SERVER_IP — публічна IP-адреса або домен сервера. Параметр PersistentKeepalive часто допомагає, якщо клієнт знаходиться за NAT або в мережі з агресивним таймаутом з’єднань.
Запуск інтерфейсу
Після підготовки конфігурацій можна підняти тунель на обох пристроях. Спочатку на сервері:
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
Потім на клієнті:
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
Якщо все виконано правильно, інтерфейс wg0 стане активним автоматично після перезавантаження системи.
Перевірка роботи
Щоб переконатися, що тунель піднявся, використайте команду:
sudo wg show
У виводі ви побачите публічні ключі, endpoint, обсяг переданих даних і час останнього handshake. Саме handshake показує, що клієнт і сервер успішно обмінялися пакетами.
Також можна перевірити адресу інтерфейсу:
ip a show wg0
Якщо ви налаштували маршрутизацію через сервер, протестуйте доступ до зовнішньої мережі або внутрішніх ресурсів, які мають бути видимі через VPN.
Типові проблеми під час налаштування
Найчастіше помилки трапляються через неправильні ключі, закритий UDP-порт або помилки в IP-адресах. Якщо з’єднання не встановлюється, перевірте кожен блок конфігурації окремо.
- Переконайтеся, що
ListenPortвідкритий у firewall і на хмарному сервері, якщо він там розгорнутий. - Перевірте, чи не переплутані приватний і публічний ключі.
- Зіставте адреси
AddressіAllowedIPs— вони мають бути узгодженими. - Якщо клієнт за роутером, спробуйте
PersistentKeepalive = 25.
Висновок
WireGuard на Ubuntu і Debian — це зручний спосіб швидко розгорнути власний VPN без зайвого ускладнення. Після встановлення пакета, генерації ключів і створення двох коротких конфігурацій ви отримуєте стабільний захищений тунель, який легко масштабувати на нові пристрої. Для домашньої лабораторії, віддаленого доступу чи приватної мережі WireGuard чудово підходить саме завдяки простоті та швидкості.
Якщо ви лише починаєте працювати з VPN на Linux, найкраще спочатку налаштувати базовий обмін між одним сервером і одним клієнтом, а вже потім додавати додаткові пірингові записи, маршрути та правила доступу.