Одна и та же конфигурация Wireguard не может нормально работать одновременно на двух устройствах (десктоп и телефон). Часто случается необходимость выключать Wireguard на компьютере дистанционно, чтобы пользоваться им на телефоне. Для этого я использую скрипт ~/.local/bin/wg-toggle.sh:
#!/usr/bin/env bash
CONN="Wireguard"
STATE=$(nmcli -t -f NAME,STATE connection show --active | grep "^${CONN}:" | cut -d: -f2)
if [ "$STATE" = "activated" ]; then
nmcli connection down "$CONN"
echo "$CONN is off"
else
nmcli connection up "$CONN"
echo "$CONN is on"
fiВ данном случае Wireguard работает через NetworkManager и управляется им. В отличие от wg-quick, в особенности с управлением через systemd, вариант с NetworkManager не требует возни с паролем и правами, и управляется от пользователя. Скрипт запускается на компьютере дистанционно через KDE Connect, модуль “Запуск команд”. В телефоне есть виджет, позволяющий быстро запускать команды из списка этого модуля, среди которых и запуск скрипта wg-toggle.sh.
На всякий случай тот же скрипт в виде alias’а для fish shell и bash/zsh.
bash/zsh
# Wireguard on/off toggle via NetworkManager
wgtoggle() {
local conn="Wireguard"
local state
state=$(nmcli -t -f NAME,STATE connection show --active | grep "^${conn}:" | cut -d: -f2)
if [ "$state" = "activated" ]; then
nmcli connection down "$conn"
echo "$conn is off"
else
nmcli connection up "$conn"
echo "$conn is on"
fi
}fish
# Wireguard on/off toggle via NetworkManager
function wgtoggle
set conn "Wireguard"
set state (nmcli -t -f NAME,STATE connection show --active | grep "^$conn:" | cut -d: -f2)
if test "$state" = "activated"
nmcli connection down $conn
echo "$conn is off"
else
nmcli connection up $conn
echo "$conn is on"
end
end