Ай Лайн
Связаться
Отдел продаж +7 (812) 385-74-84
Время работы пн-пт с 9:00 до 18:00

WireGuard — настройка сервера на Linux

Установка WireGuard-сервера на Debian/Ubuntu и подключение клиентов. Клиентские статьи: клиент на Linux, инструкция для пользователя (Windows/iOS), WireGuard на MikroTik.

Установка и ключи

sudo apt update && sudo apt install -y wireguard

Генерируем ключи сервера:

umask 077
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

Конфигурация сервера

Создаём /etc/wireguard/wg0.conf:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <приватный_ключ_сервера>

# NAT для выхода клиентов в интернет/локальную сеть (eth0 — внешний интерфейс)
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Включаем форвардинг:

echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system

Открываем порт (если используется UFW):

sudo ufw allow 51820/udp

Запускаем и включаем автозапуск:

sudo systemctl enable --now wg-quick@wg0
wg show

Добавление клиента

  1. Генерируем пару ключей клиента (можно на сервере):
umask 077
wg genkey | tee client1_private.key | wg pubkey > client1_public.key
  1. Добавляем peer в /etc/wireguard/wg0.conf:
[Peer]
# client1 — Иванов
PublicKey = <публичный_ключ_клиента>
AllowedIPs = 10.8.0.2/32
  1. Применяем без разрыва соединений:
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
  1. Конфиг для клиента client1.conf:
[Interface]
PrivateKey = <приватный_ключ_клиента>
Address = 10.8.0.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = <публичный_ключ_сервера>
Endpoint = vpn.example.com:51820
AllowedIPs = 10.0.0.0/8, 10.8.0.0/24
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0 — если через туннель должен идти весь трафик клиента.

Для мобильных устройств удобно отдать конфиг QR-кодом:

sudo apt install -y qrencode
qrencode -t ansiutf8 < client1.conf

Проверка и диагностика

wg show                 # рукопожатия и трафик по каждому peer
sudo systemctl status wg-quick@wg0
sudo journalctl -u wg-quick@wg0 -e
  • Нет handshake — проверьте, что порт UDP открыт и Endpoint указан верно.
  • Handshake есть, трафик не ходит — проверьте ip_forward, правило MASQUERADE и маршруты на стороне сервера.
  • Каждому клиенту — свой уникальный /32 адрес и своя пара ключей; один конфиг на несколько устройств использовать нельзя.
Оставить заявку