С чего начать Первые шаги трек · 15 ступеней
Linux Labs

WireGuard — VPN на ключах

3 мин Ubuntu 24.04 · WireGuard

Быстрый VPN на паре ключей вместо паролей; приватный ключ в wg0.conf нужно защищать правами файла, как SSH-ключ.

Шпаргалка

4 команды Версия для печати
  • wg genkey | tee priv | wg pubkey > pub ключи
  • sudo wg-quick up wg0 / down wg0 поднять/опустить
  • sudo wg show пиры, handshake, трафик
  • sudo systemctl enable wg-quick@wg0 автозапуск
  • conf: [Interface] Address/PrivateKey/ListenPort ; [Peer] PublicKey/AllowedIPs/Endpoint

Обзор

WireGuard — простой и быстрый VPN на ключах (как SSH: пара приватный/публичный). Создаёт интерфейс wg0 с шифрованным туннелем между пирами. Управление — wg/wg-quick.

bash
sudo apt install wireguard
wg genkey | tee privatekey | wg pubkey > publickey   # пара ключей

Ключи

/etc/wireguard/wg0.conf:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <свой приватный>

[Peer]
PublicKey = <публичный пира>
AllowedIPs = 10.8.0.2/32        # какие адреса маршрутизировать в туннель
# Endpoint = host:51820         # для клиента — адрес сервера
bash
sudo wg-quick up wg0             # поднять туннель
sudo wg-quick down wg0           # опустить
sudo systemctl enable wg-quick@wg0   # автозапуск

Для роутинга/выхода через VPN включи форвардинг (sysctl net.ipv4.ip_forward=1) и NAT в firewall.

Неполадки

4

Туннель поднят, но нет связи

sudo wg show — есть ли «latest handshake». Нет рукопожатия → не сошлись ключи, неверный Endpoint, или порт 51820/udp закрыт файрволом на сервере.

Handshake есть, но пинг не идёт

AllowedIPs не включает нужные адреса (для каждого пира это «какие IP за ним»). Для маршрутизации наружу — ip_forward + NAT.

Не зайти после reboot

systemctl enable wg-quick@wg0. Проверь wg-quick up вручную на ошибки.

Asymmetric/одна сторона видит, другая нет

AllowedIPs настраивается на обеих сторонах согласованно. Публичный ключ одного = в [Peer] другого.

Опасно

wg0.conf содержит приватный ключ открытым текстом — файл должен быть доступен только root (chmod 600, владелец root, как и создаёт wg genkey по умолчанию при перенаправлении в файл). Утечка приватного ключа равносильна утечке пароля: с ним можно поднять свой узел с тем же публичным ключом внутри сети. Не добавляй wg0.conf с реальными ключами в git и не пересылай его в общий чат — для передачи публичного ключа новому пиру достаточно wg pubkey.

См. также

  • ip — Управление интерфейсами, адресами и маршрутами (iproute2) — замена ifconfig/route.
  • firewall — Фильтрация трафика — простой ufw и низкоуровневый nftables.
  • sysctl — Чтение и настройка параметров ядра во время работы и постоянно (sysctl.conf).
Загрузка…