WireGuard — це легкий Virtual Private Network (VPN), який підтримує з’єднання IPv4 та IPv6. VPN дозволяє безпечно проходити через недовірені мережі, наче ви знаходитесь у приватній мережі. Це дає можливість безпечно користуватися інтернетом зі смартфона або ноутбука при підключенні до недовірених мереж, таких як WiFi в готелях або кафе.
Переваги WireGuard над іншими VPN рішеннями
- Простота: використовує специфічний набір криптографічних алгоритмів
- Швидкість: значно швидший за OpenVPN та IPSec
- Безпека: сучасні криптографічні стандарти
- Легкість налаштування: менше конфігурацій та можливостей для помилок
Передумови
Для виконання цього посібника вам знадобиться:
- Сервер Ubuntu 20.04 з sudo користувачем та увімкненим брандмауером
- Клієнтська машина (може бути ваш локальний комп’ютер)
- Підтримка IPv6 (опціонально, якщо плануєте використовувати IPv6)
Крок 1: Встановлення WireGuard та генерація ключів
Встановлення WireGuard
sudo apt update
sudo apt install wireguard
Генерація приватного ключа
wg genkey | sudo tee /etc/wireguard/private.key
sudo chmod go= /etc/wireguard/private.key
Важливо: команда chmod go= видаляє всі дозволи для користувачів та груп, окрім root.
Генерація публічного ключа
sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
Збережіть публічний ключ — він знадобиться для розповсюдження між клієнтами.
Крок 2: Вибір IP адрес
IPv4 адреси
Для IPv4 використовуйте один з резервних діапазонів:
10.0.0.0до10.255.255.255(10/8 префікс)172.16.0.0до172.31.255.255(172.16/12 префікс)192.168.0.0до192.168.255.255(192.168/16 префікс)
Приклад: використаємо 10.8.0.0/24, де сервер матиме IP 10.8.0.1/24.
IPv6 адреси (опціонально)
Для генерації унікального IPv6 префікса:
- Отримайте 64-бітну мітку часу:
date +%s%N
- Отримайте machine-id:
cat /var/lib/dbus/machine-id
- Створіть хеш SHA-1:
printf <timestamp><machine-id> | sha1sum
- Візьміть останні 5 байтів:
printf <hash_result> | cut -c 31-
- Сформуйте префікс:
fd<останні_5_байтів>::/64
Приклад: fd0d:86fa:c3bc::1/64 для сервера.
Крок 3: Створення конфігурації сервера
Створіть файл конфігурації:
sudo nano /etc/wireguard/wg0.conf
Базова конфігурація:
[Interface]
PrivateKey = ваш_приватний_ключ_тут
Address = 10.8.0.1/24, fd0d:86fa:c3bc::1/64
ListenPort = 51820
SaveConfig = true
Пояснення параметрів:
PrivateKey: приватний ключ сервераAddress: IP адреси сервера (IPv4 та IPv6)ListenPort: порт для прослуховування (за замовчуванням 51820)SaveConfig: зберігає зміни при вимкненні інтерфейсу
Крок 4: Налаштування переадресації пакетів
Якщо ви хочете маршрутизувати інтернет-трафік через сервер:
sudo nano /etc/sysctl.conf
Додайте в кінець файлу:
# Для IPv4
net.ipv4.ip_forward=1
# Для IPv6 (якщо використовується)
net.ipv6.conf.all.forwarding=1
Активуйте зміни:
sudo sysctl -p
Крок 5: Налаштування брандмауера
Визначення мережевого інтерфейсу
ip route list default
Знайдіть назву вашого публічного інтерфейсу (зазвичай eth0).
Додавання правил до конфігурації WireGuard
sudo nano /etc/wireguard/wg0.conf
Додайте в кінець файлу:
PostUp = ufw route allow in on wg0 out on eth0
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on eth0
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Дозвіл трафіку через UFW
sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
Перезапустіть UFW:
sudo ufw disable
sudo ufw enable
Крок 6: Запуск сервера WireGuard
Увімкнення автозапуску
sudo systemctl enable [email protected]
Запуск сервісу
sudo systemctl start [email protected]
Перевірка статусу
sudo systemctl status [email protected]
Ви повинні побачити active (exited) в статусі.
Перевірка інтерфейсу
sudo wg show
Крок 7: Налаштування клієнта
Встановлення WireGuard на клієнті
sudo apt update
sudo apt install wireguard
Генерація ключів клієнта
wg genkey | sudo tee /etc/wireguard/private.key
sudo chmod go= /etc/wireguard/private.key
sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
Створення конфігурації клієнта
sudo nano /etc/wireguard/wg0.conf
Базова конфігурація клієнта:
[Interface]
PrivateKey = приватний_ключ_клієнта
Address = 10.8.0.2/24
DNS = 1.1.1.1, 1.0.0.1
[Peer]
PublicKey = публічний_ключ_сервера
AllowedIPs = 10.8.0.0/24, fd0d:86fa:c3bc::/64
Endpoint = IP_сервера:51820
PersistentKeepalive = 25
Варіанти налаштування AllowedIPs
- Тільки VPN мережа:
10.8.0.0/24 - Весь трафік через VPN:
0.0.0.0/0, ::/0 - Конкретні IP:
10.8.0.1/32, 10.8.0.3/32
Крок 8: Додавання клієнта на сервер
Додавання публічного ключа клієнта
На сервері виконайте:
sudo wg set wg0 peer публічний_ключ_клієнта allowed-ips 10.8.0.2/32,fd0d:86fa:c3bc::2/128
Перевірка конфігурації
sudo wg show
Ви повинні побачити доданого peer’а в списку.
Крок 9: Підключення клієнта
Встановлення resolvconf (якщо потрібно)
sudo apt install resolvconf
Запуск тунелю
sudo wg-quick up wg0
Перевірка з’єднання
sudo wg show
ip route get 1.1.1.1
Вимкнення тунелю
sudo wg-quick down wg0
Поширені проблеми та їх вирішення
1. Клієнти не бачать один одного
Проблема: клієнти можуть підключатися до сервера, але не бачать один одного.
Рішення:
- На сервері:
AllowedIPsдля кожного клієнта повинен бути/32 - На клієнтах: використовуйте
AllowedIPs = 0.0.0.0/0або конкретні IP інших клієнтів
2. Помилка “Configuration parsing error”
Причини:
- Неправильний формат IP адрес
- Зайві символи в конфігурації
- Проблеми з кодуванням файлу
Рішення:
- Перевірте формат всіх IP адрес
- Переконайтеся, що файл збережено в UTF-8
- Перевірте відсутність зайвих пробілів
3. Проблеми з DNS
Рішення:
[Interface]
DNS = 1.1.1.1, 8.8.8.8
4. Видалення клієнта
sudo wg set wg0 peer публічний_ключ_клієнта remove
Додаткові налаштування
Автозапуск на клієнті
sudo systemctl enable [email protected]
sudo systemctl start [email protected]
Моніторинг трафіку
sudo wg show wg0 transfer
Налаштування для мобільних пристроїв
Для Android/iOS використовуйте QR-код:
qrencode -t ansiutf8 < /etc/wireguard/client.conf
Безпека
Рекомендації з безпеки
- Регулярно оновлюйте ключі
- Використовуйте сильні PreSharedKey:
wg genpsk
- Обмежуйте AllowedIPs до мінімально необхідних
- Моніторьте підключення:
sudo wg show wg0 latest-handshakes
Резервне копіювання
Регулярно робіть резервні копії:
sudo cp -r /etc/wireguard/ /backup/wireguard-$(date +%Y%m%d)/
Висновок
WireGuard — це потужний та простий у налаштуванні VPN, який забезпечує високу швидкість та безпеку. Основні переваги:
- Простота конфігурації порівняно з OpenVPN
- Висока продуктивність та низьке споживання ресурсів
- Сучасна криптографія
- Гнучкість в налаштуванні маршрутизації
Дотримуючись цього посібника, ви зможете налаштувати надійний VPN-сервер для особистого або корпоративного використання. Пам’ятайте про регулярне оновлення системи та моніторинг безпеки вашого VPN-сервера.
Простий варіант встановлення WireGuard VPN Server – https://youtu.be/gmnw_GY91Fg



