Сервер / Десктоп · Linux

WireGuard на Linux

Ubuntu, Debian, Arch, Fedora и другие дистрибутивы

01

Установка WireGuard

~1 минута

Выберите команду для своего дистрибутива Linux:

Ubuntu / Debian
# Обновить пакеты и установить WireGuard
sudo apt update
sudo apt install wireguard wireguard-tools -y
Arch Linux / Manjaro
sudo pacman -S wireguard-tools
Fedora / RHEL 9+
sudo dnf install wireguard-tools -y
Alpine Linux
sudo apk add wireguard-tools
02

Генерация ключей

~1 минута

Сгенерируйте пару ключей для клиента (или сервера).

Генерация ключей
# Создать директорию для конфигов
sudo mkdir -p /etc/wireguard
cd /etc/wireguard

# Установить правильные права
sudo chmod 700 /etc/wireguard

# Сгенерировать приватный и публичный ключ клиента
wg genkey | sudo tee client_private.key | wg pubkey | sudo tee client_public.key

# Просмотреть ключи
sudo cat client_private.key   # Приватный — НИКОМУ не давать!
sudo cat client_public.key    # Публичный — передать администратору сервера
Важно! Приватный ключ (client_private.key) — секретный! Никогда не передавайте его по незащищённым каналам.
03

Создание конфигурации клиента

~2 минуты

Создайте файл конфигурации /etc/wireguard/wg0.conf.

/etc/wireguard/wg0.conf
[Interface]
# Ваш приватный ключ (из client_private.key)
PrivateKey = ВАШЕ_ЗНАЧЕНИЕ_ПРИВАТНОГО_КЛЮЧА
# IP-адрес этого клиента в VPN сети
Address    = 10.0.0.2/32
# DNS сервер (используем Cloudflare)
DNS        = 1.1.1.1

[Peer]
# Публичный ключ сервера (запросить у администратора)
PublicKey    = ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА
# Адрес:порт WireGuard сервера
Endpoint     = your-server.com:51820
# Весь трафик через VPN (0.0.0.0/0 = все IPv4 адреса)
AllowedIPs   = 0.0.0.0/0, ::/0
# Keepalive — поддерживать соединение активным
PersistentKeepalive = 25
Если нужен не полный туннель, а только корпоративная сеть: AllowedIPs = 10.0.0.0/24
04

Запуск туннеля

wg-quick
Управление туннелем
# Запустить VPN-туннель
sudo wg-quick up wg0

# Остановить туннель
sudo wg-quick down wg0

# Проверить статус соединения
sudo wg show

# Просмотреть интерфейсы
ip addr show wg0
Пример вывода sudo wg show
interface: wg0
  public key: xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg=
  private key: (hidden)
  listening port: 51820

peer: fE/wdxzl0klVp/IR8UcaoGi1jQsajR0GDtrWBBmSfCg=
  endpoint: 203.0.113.1:51820
  allowed ips: 0.0.0.0/0, ::/0
  latest handshake: 1 minute, 23 seconds ago
  transfer: 14.25 MiB received, 3.18 MiB sent
05

Автозапуск через systemd

~1 минута

Настройте автоматический запуск WireGuard при старте системы.

systemd — Автозапуск
# Включить автозапуск туннеля wg0
sudo systemctl enable wg-quick@wg0

# Запуск прямо сейчас
sudo systemctl start wg-quick@wg0

# Проверить статус службы
sudo systemctl status wg-quick@wg0

# Остановить службу
sudo systemctl stop wg-quick@wg0

# Отключить автозапуск
sudo systemctl disable wg-quick@wg0
06

Настройка сервера WireGuard

Для администраторов
Этот раздел — для тех, кто разворачивает свой VPN-сервер. Если вы подключаетесь к готовому серверу — пропустите.
/etc/wireguard/wg0.conf — Серверная конфигурация
[Interface]
Address    = 10.0.0.1/24
ListenPort = 51820
PrivateKey = ПРИВАТНЫЙ_КЛЮЧ_СЕРВЕРА
# Включить форвардинг пакетов при старте
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; \
              iptables -A FORWARD -o %i -j ACCEPT; \
              iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; \
              iptables -D FORWARD -o %i -j ACCEPT; \
              iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Клиент #1
[Peer]
PublicKey  = ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА_1
AllowedIPs = 10.0.0.2/32

# Клиент #2
[Peer]
PublicKey  = ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА_2
AllowedIPs = 10.0.0.3/32
Включить IP форвардинг
# Включить форвардинг
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

# Открыть порт в UFW (если используется)
sudo ufw allow 51820/udp
sudo ufw reload
Генерация QR-кода для клиента
# Установить qrencode
sudo apt install qrencode -y

# Сгенерировать QR-код из конфиг-файла
qrencode -t ansiutf8 < /etc/wireguard/client.conf

Решение проблем на Linux

RTNETLINK: Operation not supported

Модуль ядра не загружен. Выполните: sudo modprobe wireguard. Если не помогает — обновите ядро: sudo apt install linux-generic.

VPN включается, но сайты не открываются

Если вы просто пользуетесь готовым конфигом, чаще всего проблема на стороне настроек сервера. Если сервер настраивали вы сами, проверьте форвардинг и маршрутизацию. Если сервер настраивал другой человек, попросите его перепроверить конфигурацию.

Ошибка: Cannot read private key

Проверьте права на файл конфигурации: sudo chmod 600 /etc/wireguard/wg0.conf

Диагностика соединения

Используйте: sudo wg show для статуса, ping 10.0.0.1 для проверки связи с сервером, tcpdump -i wg0 для отладки трафика.