Быстрый старт WireGuard Обновлено 6 Linux, macOS

WireGuard: команды CLI, которые должен знать каждый

Практический разбор команд wg и wg-quick: генерация ключей, настройка интерфейса, диагностика и автоматизация. Научитесь управлять WireGuard из терминала без паники.

WireGuardCLIкомандыwgwg-quickVPNнастройка
Содержание
КороткоБазовые команды WireGuard: wg genkey и wg pubkey для ключей, wg setconf для конфигурации, wg-quick up/down для запуска. Диагностика через wg show и проверка handshake.

WireGuard — это современный VPN, который управляется простыми командами из терминала. В отличие от OpenVPN здесь нет громоздких скриптов и GUI: всё построено на паре утилит — wg и wg-quick. В этой статье разберём команды, которые нужны каждый день: от создания ключей до отладки туннеля. Вы научитесь настраивать WireGuard без страха и ошибок.

Основные команды wg: генерация ключей и просмотр конфигурации

Прежде чем создавать туннель, нужно сгенерировать пару ключей. WireGuard использует криптографию Curve25519, и все ключи создаются локально.

# Создать приватный ключ (файл с правами 600)
umask 077
wg genkey > privatekey

# Создать публичный ключ из приватного
wg pubkey < privatekey > publickey

Если вы хотите посмотреть текущую конфигурацию интерфейса, используйте wg show. Без аргументов эта команда покажет все активные интерфейсы WireGuard: их адреса, список пиров, ключи и время последнего handshake.

# Просмотр всех интерфейсов
wg show

# Просмотр конкретного интерфейса в компактном виде
wg show wg0 | less

Команда wg showconf выводит полный конфигурационный файл в формате, который можно использовать для восстановления. Это удобно для бэкапов.

Настройка интерфейса с помощью wg-quick

Утилита wg-quick — это надстройка над wg, которая автоматически создаёт интерфейс, назначает IP-адреса, добавляет маршруты и правила. Она читает конфигурационный файл из каталога /etc/wireguard/.

Минимальный конфиг для клиента выглядит так:

[Interface]
PrivateKey = <приватный ключ>
Address = 10.0.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = <публичный ключ сервера>
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0

Команды для управления:

# Поднять интерфейс (запустить туннель)
wg-quick up wg0

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

# Перезапустить туннель
down wg0 && up wg0

Важно: имя интерфейса должно совпадать с именем файла конфига. Для wg0 нужен файл /etc/wireguard/wg0.conf.

Если нужно изменить параметры на лету без перезапуска, используйте wg set:

# Добавить пира
wg set wg0 peer <pubkey> allowed-ips 10.0.0.3/32

# Удалить пира
wg set wg0 peer <pubkey> remove

# Изменить endpoint пира
wg set wg0 peer <pubkey> endpoint <новый endpoint>

Диагностика и проверка состояния туннеля

Когда туннель не работает, сначала проверьте интерфейс. Используйте ip и wg вместе.

# Проверить, что интерфейс существует и имеет IP-адрес
ip addr show wg0

# Проверить состояние WireGuard: есть ли handshake, какие пиры активны
wg show wg0

В выводе wg show обращайте внимание на поле latest handshake. Если оно пустое или очень давнее, значит, туннель не устанавливается. Проверьте endpoint, UDP-порт на сервере (по умолчанию 51820) и файрвол.

Полезная команда для постоянного мониторинга:

watch -n 1 wg show

Она обновляет статистику каждую секунду и видит, когда появляется handshake.

Для проверки маршрутов:

ip route | grep wg0

Если правило маршрутизации отсутствует, проблема в настройках AllowedIPs или в конфигурации адресов.

Примеры типовых сценариев

Сценарий 1: создать сервер WireGuard

# Генерация ключей
umask 077
wg genkey > server_private
wg pubkey < server_private > server_public

# Конфигурация /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <server_private>

[Peer]
PublicKey = <client_public>
AllowedIPs = 10.0.0.2/32

Затем запускаем: wg-quick up wg0. Не забудьте включить IP-forwarding и настроить NAT, иначе клиенты не получат доступ в интернет. Для этого измените /etc/sysctl.conf и выполните sysctl -p.

Сценарий 2: добавить нового клиента

Сгенерируйте ключи для клиента, добавьте его публичный ключ на сервер:

wg set wg0 peer <client_pub> allowed-ips 10.0.0.3/32

или просто допишите блок [Peer] в конфиг и перезапустите. На клиенте создайте конфиг с ключами и endpoint сервера.

Сценарий 3: отладка после сбоя

  1. Проверьте, что интерфейс вообще существует: ip a
  2. Проверьте статус wg show wg0. Если нет handshake, смотрите журналы: journalctl -u wg-quick@wg0
  3. Проверьте доступность сервера через UDP: nc -vzu <server ip> 51820

Советы по автоматизации и безопасному использованию

Команды WireGuard прекрасно встраиваются в скрипты. Используйте wg-quick strip для извлечения чистой конфигурации из файла — это полезно, если вы хотите передать её на другое устройство.

Храните ключи с правами доступа 600. В скриптах вызывайте umask 077 перед созданием файла, чтобы никто другой не смог его прочитать.

Не забывайте, что команды wg-quick могут отличаться в зависимости от версии и дистрибутива. На macOS вместо этого часто используется официальное приложение, но базовые команды wg работают одинаково. Проверяйте документацию для вашей версии.

Мини-чеклист

  • Убедитесь, что пакет wireguard-tools установлен: wg --version
  • При генерации ключей задавайте umask 077, чтобы не осталось читаемых файлов
  • Для запуска интерфейса используйте wg-quick up wg0, где имя соответствует .conf файлу
  • После настройки проверьте handshake командой wg show и дату последней активности

Частые ошибки

  • Игнорирование прав доступа к приватным ключам — они должны быть 600 или 400
  • Забыли включить IP forwarding на сервере, из-за чего клиенты не получают интернет
  • Использование AllowedIPs = 0.0.0.0/0 на клиенте без явного указания DNS и маршрутов
  • Запуск wg-quick up без прав root — команда требует привилегий superuser

Источники и документация

FAQ

Чем отличается wg от wg-quick?

wg — это низкоуровневая утилита для управления ключами и пирами. wg-quick — это обёртка, которая настраивает сетевой интерфейс, IP-адреса и маршруты, читая конфигурацию из файла. Для повседневного использования достаточно wg-quick.

Как перезапустить WireGuard после изменения конфига?

Выполните wg-quick down wg0 && wg-quick up wg0. Либо используйте команду wg setconf wg0 /etc/wireguard/wg0.conf, чтобы применить изменения без отключения интерфейса.

Что такое AllowedIPs и зачем он нужен?

AllowedIPs указывает, какие подсети направлять через туннель. Для «полного» туннеля используется 0.0.0.0/0. На сервере обычно указывают адреса клиентов (например, 10.0.0.2/32), а на клиенте — адрес серверной сети или 0.0.0.0/0, если нужно гнать весь трафик через VPN.

Как проверить, что туннель работает?

Запустите wg show wg0. Если в выводе для пира есть строка latest handshake с близкой датой, туннель установлен. Также можно выполнить ping до внутреннего IP-адреса пира.

Хотите перейти сразу к рабочему доступу?

Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.

Получить доступ

Дальше по теме

Связанные статьи