WireGuard: з'єднання нод

Час: ~20 хвилин
Рівень: Початківець
Потрібно: Два сервери з публічними IP

Що отримаємо

Site-to-site VPN тунель між двома серверами через WireGuard.

┌─────────────┐         WireGuard          ┌─────────────┐
│   Node A    │◄──────── Tunnel ──────────►│   Node B    │
│ 10.10.10.1  │        UDP 51820           │ 10.10.10.2  │
│ (публічний) │                            │ (публічний) │
└─────────────┘                            └─────────────┘

Передумови

  • [ ] Два сервери з Ubuntu/Debian
  • [ ] SSH доступ до обох серверів
  • [ ] Публічні IP адреси обох серверів
  • [ ] Порт UDP 51820 відкритий на обох серверах

Крок 1: Встановлення WireGuard

Виконайте на обох серверах:

sudo apt update
sudo apt install wireguard -y

Перевірка:

which wg
# Очікуваний результат: /usr/bin/wg

Крок 2: Генерація ключів на Node A

# Створити директорію для ключів
sudo mkdir -p /etc/wireguard

# Генерація приватного та публічного ключів
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

# Встановити права доступу
sudo chmod 600 /etc/wireguard/privatekey

# Переглянути публічний ключ (знадобиться для Node B)
cat /etc/wireguard/publickey

Запишіть публічний ключ Node A — він потрібен для налаштування Node B.

Крок 3: Генерація ключів на Node B

Повторіть ті самі команди на Node B:

sudo mkdir -p /etc/wireguard
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
sudo chmod 600 /etc/wireguard/privatekey
cat /etc/wireguard/publickey

Запишіть публічний ключ Node B — він потрібен для налаштування Node A.

Крок 4: Конфігурація Node A

Створіть файл конфігурації:

sudo nano /etc/wireguard/wg0.conf

Вміст (замініть значення на свої):

[Interface]
Address = 10.10.10.1/24
PrivateKey = <ПРИВАТНИЙ_КЛЮЧ_NODE_A>
ListenPort = 51820

[Peer]
# Node B
PublicKey = <ПУБЛІЧНИЙ_КЛЮЧ_NODE_B>
AllowedIPs = 10.10.10.2/32
Endpoint = <ПУБЛІЧНИЙ_IP_NODE_B>:51820
PersistentKeepalive = 25

Щоб отримати приватний ключ:

sudo cat /etc/wireguard/privatekey

Крок 5: Конфігурація Node B

На Node B створіть /etc/wireguard/wg0.conf:

[Interface]
Address = 10.10.10.2/24
PrivateKey = <ПРИВАТНИЙ_КЛЮЧ_NODE_B>
ListenPort = 51820

[Peer]
# Node A
PublicKey = <ПУБЛІЧНИЙ_КЛЮЧ_NODE_A>
AllowedIPs = 10.10.10.1/32
Endpoint = <ПУБЛІЧНИЙ_IP_NODE_A>:51820
PersistentKeepalive = 25

Крок 6: Firewall правила

На обох серверах відкрийте порт WireGuard:

# UFW
sudo ufw allow 51820/udp

# або iptables
sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT

Крок 7: Запуск WireGuard

На обох серверах:

# Запустити інтерфейс
sudo wg-quick up wg0

# Перевірити статус
sudo wg show

Очікуваний результат:

interface: wg0
  public key: <ваш публічний ключ>
  private key: (hidden)
  listening port: 51820

peer: <публічний ключ peer>
  endpoint: <IP>:51820
  allowed ips: 10.10.10.x/32
  latest handshake: <час>
  transfer: <bytes> received, <bytes> sent

Крок 8: Перевірка з'єднання

З Node A:

ping 10.10.10.2

З Node B:

ping 10.10.10.1

Очікуваний результат:

PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data.
64 bytes from 10.10.10.2: icmp_seq=1 ttl=64 time=5.23 ms

Крок 9: Автозапуск

На обох серверах:

# Увімкнути автозапуск
sudo systemctl enable wg-quick@wg0

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

Типові проблеми

Handshake не встановлюється

Симптоми: sudo wg show не показує "latest handshake"

Рішення:
1. Перевірте що порт 51820/udp відкритий на обох серверах
2. Перевірте правильність публічних ключів
3. Перевірте Endpoint IP адреси

Connection timed out

Симптоми: ping не працює, timeout

Рішення:
1. Перевірте firewall правила
2. Перевірте що WireGuard запущений: sudo wg show
3. Перевірте логи: sudo journalctl -u wg-quick@wg0

Неправильні AllowedIPs

Симптоми: Частковий зв'язок або routing проблеми

Рішення: AllowedIPs має відповідати IP адресі peer в тунелі

Наступні кроки

Див. також

Шлях: step-by-step/wireguard-node-setup.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications