8.2.10 Встановлення та налаштування WireGuard VPN
WireGuard — це сучасний VPN-протокол, відомий своєю високою швидкістю, мінімалізмом і надійною криптографією. Це ідеальне рішення для серверів на базі Ubuntu, якщо потрібен безпечний і простий у налаштуванні VPN.
Вимоги до сервера
- Послуга віртуального сервера або виділеного сервера
- CPU: від 1 ядра, RAM: від 512 МБ
- ОС: Ubuntu 24.04 LTS
- Доступ root або через sudo
- Вільний UDP-порт (типово — 51820)
Встановлення WireGuard
Оновлюємо систему:
sudo apt update && sudo apt upgrade -y
Встановлюємо WireGuard:
sudo apt install wireguard -y
WireGuard вбудований у ядро Linux з версії 5.6, тому не потребує встановлення DKMS або оновлення ядра.
Створення ключів
WireGuard використовує пару ключів: приватний та публічний. Згенеруємо їх на сервері:
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
Встановлюємо права доступу:
chmod 600 /etc/wireguard/server_private.key
Публічний ключ буде використовуватись у конфігурації клієнта.
Налаштування WireGuard на сервері
Визначаємо назву мережевого інтерфейсу:
ip a
Створюємо конфігураційний файл /etc/wireguard/wg0.conf
:
sudo nano /etc/wireguard/wg0.conf
Приклад вмісту (заміни <interface>
на назву інтерфейсу, а <private server key>
на приватний ключ):
[Interface]
Address = 10.0.0.1/24
PrivateKey = <private server key>
ListenPort = 51820
SaveConfig = true
# Дозвіл трафіку через сервер
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <interface> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <interface> -j MASQUERADE
Увімкнення IP-переадресації:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Запускаємо WireGuard:
sudo systemctl start wg-quick@wg0.service
sudo systemctl enable wg-quick@wg0.service
Налаштування firewall
ufw
sudo ufw allow 51820/udp
sudo ufw enable
iptables
iptables -I INPUT -p udp -m udp --dport 51820 -j ACCEPT
Додавання клієнта
Для кожного клієнта генеруємо окремі ключі та IP-адресу (на клієнті):
wg genkey | tee client1_private.key | wg pubkey > client1_public.key
Додаємо клієнта на сервер (використовуючи client1_public.key
):
sudo wg set wg0 peer <client1_public_key> allowed-ips 10.0.0.2/32
Приклад конфігурації клієнта
Збережіть цей файл як client.conf
і використовуйте у WireGuard-клієнті:
[Interface]
PrivateKey = <client1_private_key>
Address = 10.0.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = <server_public_key>
Endpoint = <IP_сервера>:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
WireGuard у WSL2
Особливості роботи в WSL2:
- Не можна використовувати AllowedIPs = 0.0.0.0/0 — це призведе до втрати з’єднання.
- Використовуйте AllowedIPs = 10.0.0.0/24 — лише доступ до VPN-сегменту.
- Весь інтернет-трафік все одно йтиме через Windows, а не VPN.
Рекомендація: Для повноцінного VPN використовуйте офіційний WireGuard для Windows.
Перевірка роботи
Команди для перевірки:
sudo wg
ping 10.0.0.1
curl ifconfig.me
Очікувані результати:
sudo wg
— відображає активне з’єднання;ping
— отримує відповідь від 10.0.0.1;curl
— виводить публічну IP-адресу сервера (якщо трафік йде через VPN).