Управление 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

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

Если вам выводится ошибка как на примере ниже, то вы можете решить её переименовав файл в слово без доп. символов (например: 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".