Управление Wireguard через NetworkManager

(последнее обновление от )

Я много мучился с постоянной необходимостью вводить sudo-пароль в консоль для включения/выключения wireguard туннеля. Пользуясь документацией и руководствами из интернета я размещал конфиги внутри директории /etc/wireguard. И далее для включения/выключения прогонял команды:

sudo wg-quick up   wg0 # включение туннеля
sudo wg-quick down wg0 # выключение

Однако есть удобное решение через NetworkManager, интегрированный во многие Linux дистрибутивы.

Удобным нам способом создаём конфиг файл для туннеля (например как тут). Импортируем конфиг в NetworkManager

nmcli connection import type wireguard file tunnel.conf

Обратите внимание, что уже на этом шаге нам не требуется sudo.

Мы получим сообщение, о том что соединение успешно создано, а сам туннель уже будет активен:

Connection 'tunnel' (00aede9f-ce78-48c2-b055-236de8e0b3eb) successfully added.

По умолчанию nmcli создаёт соединение с опцией автоподключения, и из-за этого наш туннель будет подниматься при старте системы. Отключить автоподключение к туннелю можно с помощью команды ниже:

nmcli connection modify tunnel connection.autoconnect no

Для последующего включения/выключения через networkmanager wireguard туннеля используйте команды:

nmcli connection up   tunnel # включение
nmcli connection down tunnel # выключение

Обратите внимание, что теперь мы можем управлять состоянием туннеля без использования sudo привилегий. Для меня это дополнительное упрощение, т.к. не приходится каждый раз авторизоваться.

Для удаления соединений можно прогнать команду:

nmcli connection delete tunnel

Проверка статуса и управление из GUI

Проверить, поднят ли туннель:

nmcli connection show --active

Детали самого туннеля (рукопожатия, трафик, пиры) показывает стандартная команда WireGuard:

wg show

После импорта туннель появляется и в графическом апплете NetworkManager (трей GNOME/KDE). Его можно включать и выключать одним кликом из меню сети, наравне с Wi-Fi и проводными соединениями.

Возможные проблемы

Если вам выводится ошибка как на примере ниже, то вы можете решить её переименовав файл в слово без доп. символов (например: some_tunnel.conf -> tunnel.conf), импортировать, а после переименовать внутри nmcli.

Error: failed to import 'wg_some_new_tunnel.conf': The name of the WireGuard config must be a valid interface name followed by ".conf".

Теги: