WireGuard сервер на Ubuntu — повна інструкція

WireGuard — це легкий Virtual Private Network (VPN), який підтримує з’єднання IPv4 та IPv6. VPN дозволяє безпечно проходити через недовірені мережі, наче ви знаходитесь у приватній мережі. Це дає можливість безпечно користуватися інтернетом зі смартфона або ноутбука при підключенні до недовірених мереж, таких як WiFi в готелях або кафе.

Переваги WireGuard над іншими VPN рішеннями

  • Простота: використовує специфічний набір криптографічних алгоритмів
  • Швидкість: значно швидший за OpenVPN та IPSec
  • Безпека: сучасні криптографічні стандарти
  • Легкість налаштування: менше конфігурацій та можливостей для помилок

Передумови

Для виконання цього посібника вам знадобиться:

  1. Сервер Ubuntu 20.04 з sudo користувачем та увімкненим брандмауером
  2. Клієнтська машина (може бути ваш локальний комп’ютер)
  3. Підтримка 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 префікса:

  1. Отримайте 64-бітну мітку часу:
date +%s%N
  1. Отримайте machine-id:
cat /var/lib/dbus/machine-id
  1. Створіть хеш SHA-1:
printf <timestamp><machine-id> | sha1sum
  1. Візьміть останні 5 байтів:
printf <hash_result> | cut -c 31-
  1. Сформуйте префікс: 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
  1. Тільки VPN мережа: 10.8.0.0/24
  2. Весь трафік через VPN: 0.0.0.0/0, ::/0
  3. Конкретні 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

Безпека

Рекомендації з безпеки
  1. Регулярно оновлюйте ключі
  2. Використовуйте сильні PreSharedKey:
wg genpsk
  1. Обмежуйте AllowedIPs до мінімально необхідних
  2. Моніторьте підключення:
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

0 0 votes
Rating
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Scroll to Top