До основного вмісту

WireGuard VPN на VPS: швидке встановлення та налаштування

Безпека · 19.04.2026 · 6 хв читання
Ілюстрація до статті «WireGuard VPN на VPS: швидке встановлення та налаштування»

WireGuard — сучасний VPN-протокол, у 2–5 разів швидший за OpenVPN. Вбудований у ядро Linux починаючи з версії 5.6. Налаштування займає 10 хвилин.

Встановлення WireGuard на сервері

sudo apt update
sudo apt install -y wireguard

# Увімкнути IP forwarding
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Генерація ключів сервера

cd /etc/wireguard
sudo wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
sudo chmod 600 server_private.key

Конфіг сервера /etc/wireguard/wg0.conf

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = $(cat /etc/wireguard/server_private.key)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# Клієнт 1
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32

Запуск WireGuard

sudo systemctl enable --now wg-quick@wg0
sudo wg show  # Перевірити статус

Конфіг клієнта

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

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR-VPS-IP:51820
AllowedIPs = 0.0.0.0/0  # Весь трафік через VPN

QR-код для телефону

sudo apt install -y qrencode
qrencode -t ansiutf8 < /etc/wireguard/client.conf
💡 Для швидкого встановлення з усіма налаштуваннями використовуйте скрипт: curl -fsSL https://get.vpnsetup.net/wg | sudo bash
⚠️ Відкрийте порт 51820/UDP в UFW: sudo ufw allow 51820/udp

Встановлення WireGuard

sudo apt update && sudo apt install -y wireguard

# Увімкнути IP forwarding
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Конфігурація сервера /etc/wireguard/wg0.conf

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = $(cat server_private.key)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = $(cat client_public.key)
AllowedIPs = 10.0.0.2/32
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
sudo ufw allow 51820/udp

Чому WireGuard кращий за OpenVPN

WireGuard працює в ядрі Linux, використовує сучасну криптографію (ChaCha20, Poly1305) і потребує мінімальної конфігурації. Швидкість у 2–4 рази вища за OpenVPN.

Конфігурація клієнта

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

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0  # Весь трафік через VPN
PersistentKeepalive = 25

Часті помилки під час налаштування WireGuard

Handshake did not complete after 5 seconds

RTNETLINK answers: Operation not permitted

read from tunnel: connection timed out

Interface wg0 is not activated: Address family not supported
ПовідомленняПричинаРішення
Handshake did not complete after 5 secondsПорт 51820/UDP закритий файрволом сервера або провайдера, або публічні ключі сторін переплутані місцямиПеревірити sudo ufw allow 51820/udp і звірити, що PublicKey клієнта збігається з тим, що прописаний у [Peer] на сервері
RTNETLINK answers: Operation not permittedКоманду запущено без прав root, або інтерфейс wg0 вже піднятий з іншими параметрамиВиконувати команди через sudo, при конфлікті спочатку wg-quick down wg0, потім підняти заново
read from tunnel: connection timed outHandshake пройшов, але трафік не йде — найчастіше забули увімкнути net.ipv4.ip_forward або не налаштовано MASQUERADEПеревірити sysctl net.ipv4.ip_forward (має бути 1) і правила iptables -t nat -L POSTROUTING
Address family not supportedУ конфігу вказана IPv6-адреса, а на сервері вимкнено підтримку IPv6 у ядріВикористовувати лише IPv4-адресацію в Address/AllowedIPs або увімкнути IPv6 у системі

WireGuard проти OpenVPN: практичне порівняння

ПараметрWireGuardOpenVPN
Розмір кодової бази~4000 рядків, вбудований у ядро Linux з версії 5.6~100 000 рядків, працює в user space
ПротоколЛише UDPUDP або TCP на вибір
КриптографіяФіксований набір: ChaCha20, Poly1305, Curve25519Настроюваний набір шифрів, включно із застарілими для сумісності
Прохід через суворі файрволи, що блокують UDPГірше — немає fallback на TCPКраще — можна працювати по TCP 443, маскуючись під HTTPS

Коли WireGuard не підходить

  • Мережа клієнта блокує вихідний UDP повністю (деякі корпоративні та мобільні мережі) — WireGuard не вміє працювати через TCP, тут допоможе лише OpenVPN на 443/tcp
  • Потрібна детальна автентифікація користувачів логіном і паролем з інтеграцією в LDAP/RADIUS — WireGuard авторизує лише за публічним ключем, без вбудованої підтримки користувацьких облікових записів
  • Потрібна офіційна підтримка на застарілих ОС без сучасного ядра — на старих системах потрібен userspace-бекенд, що ускладнює встановлення порівняно з OpenVPN
  • Політика безпеки вимагає аудійованого набору алгоритмів шифрування з можливістю заміни — у WireGuard криптонабір зафіксований навмисно і не настроюється

Перевірка, що тунель справді працює

# На сервері: час останнього handshake має бути свіжим
sudo wg show wg0 latest-handshakes

# На клієнті: реальна зовнішня IP має змінитися на серверну
curl -s https://ifconfig.me

# Наскрізна перевірка затримки через тунель
ping -c 4 10.0.0.1
  1. Виконайте wg show на сервері і переконайтеся, що у піра є свіжий latest handshake, а не «(none)»
  2. З клієнта, підключеного через VPN, перевірте зовнішню IP через curl ifconfig.me — вона має збігатися з IP сервера, а не з домашньою
  3. Прожене ping до внутрішньої адреси сервера (10.0.0.1) — стабільні відповіді підтверджують, що трафік справді йде через тунель
  4. Перевірте лічильники трафіку в wg show wg0 transfer — якщо росте лише transmit, а receive нульовий, сервер не отримує зворотний трафік, і справа в NAT або маршрутизації

Базове налаштування файрвола перед підняттям VPN розглядає стаття UFW на VPS, а посилення захисту самого SSH-доступу до сервера — матеріал хардненінг SSH.

Часті питання

Яка різниця між VPS і VPN?

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

Чому WireGuard зазвичай швидший за OpenVPN?

WireGuard працює прямо в ядрі Linux і використовує невеликий фіксований набір сучасних алгоритмів шифрування, тоді як OpenVPN працює в користувацькому просторі й підтримує широкий, налаштовуваний набір шифрів заради сумісності. Менший обсяг коду та робота на рівні ядра дають помітний приріст швидкості та меншу затримку порівняно з OpenVPN.

Що робити, якщо мережа клієнта повністю блокує вихідний UDP?

У такому разі WireGuard не допоможе — протокол не вміє працювати по TCP. Єдиний практичний вихід — використати OpenVPN, налаштований на порт 443 по TCP, який маскується під звичайний HTTPS-трафік і проходить крізь суворі корпоративні чи мобільні файрволи там, де UDP-трафік заблокований повністю.

Як перевірити, що VPN-тунель справді передає трафік, а не просто підключений?

Перевірки статусу з'єднання недостатньо — варто переконатися, що дані дійсно йдуть через тунель. Свіжий latest handshake на сервері, зміна зовнішньої IP-адреси на клієнті та зростання обох лічильників трафіку, прийом і передавання, підтверджують справжню роботу VPN. Якщо зростає лише вихідний трафік, а вхідний лишається нульовим, проблема в маршрутизації або NAT.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці