SystemdDoctor
мешает работе сеть туннели

WireGuard: туннель поднят, но обмена нет

Служба успешно поднимает интерфейс и завершается: с точки зрения systemd всё в порядке. Отсутствие обмена видно только в состоянии туннеля — там не будет времени последнего рукопожатия.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Не совпадают ключи

    Открытый ключ узла в настройках должен соответствовать его закрытому ключу. При опечатке рукопожатие не проходит молча.

  2. Порт недоступен со стороны узла

    WireGuard работает по UDP. Если порт закрыт или преобразование адресов не пропускает обратный трафик, рукопожатие не состоится.

  3. Разрешённые адреса не пересекаются

    Параметр разрешённых адресов определяет, какой трафик уходит в туннель. При несовпадении обмен не начинается или пакеты уходят не туда.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Состояние туннелей: ключи, узлы, время последнего рукопожатия.

sudo wg show

Слушает ли служба свой порт.

sudo ss -ulnp | grep -i wireguard

Адрес интерфейса и маршруты.

ip addr show wg0 && ip route | grep wg0

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Не совпадают ключи
Почему происходит
Открытый ключ узла в настройках должен соответствовать его закрытому ключу. При опечатке рукопожатие не проходит молча.
Как проверить
Посмотрите состояние туннеля: при неудачном рукопожатии время последнего обмена отсутствует.
sudo wg show
sudo wg show wg0 public-key
Как исправить
Сверьте ключи с обеих сторон. Проверять надо открытый ключ каждой стороны в настройках другой.
2. Порт недоступен со стороны узла
Почему происходит
WireGuard работает по UDP. Если порт закрыт или преобразование адресов не пропускает обратный трафик, рукопожатие не состоится.
Как проверить
Проверьте доступность порта и правила.
sudo ss -ulnp | grep -i wireguard
sudo nft list ruleset 2>/dev/null | grep -i 51820 | head
Как исправить
Откройте порт UDP для нужного направления. Для узла за преобразованием адресов задайте постоянные проверочные пакеты параметром keepalive.
3. Разрешённые адреса не пересекаются
Почему происходит
Параметр разрешённых адресов определяет, какой трафик уходит в туннель. При несовпадении обмен не начинается или пакеты уходят не туда.
Как проверить
Посмотрите настройки адресов.
sudo wg show wg0 allowed-ips
ip route | grep wg0
Как исправить
Согласуйте адреса: подсеть, объявленная у одной стороны, должна включать адреса другой.

Пример вывода

Интерфейс поднят, рукопожатия нет. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

$ systemctl status wg-quick@wg0 --no-pager | head -4
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Active: active (exited) since Mon 2026-09-15 16:02:41 MSK; 10min ago

$ sudo wg show
interface: wg0
  public key: ...
peer: ...
  endpoint: <адрес>:51820
  allowed ips: 10.8.0.0/24
  transfer: 0 B received, 592 B sent

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация WireGuard документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено закрытым портом UDP на одной из сторон.
    собственная проверка, systemd 255
    сверено 15 сентября 2026