Импорт WireGuard конфига в NetworkManager на Manjaro Plasma

Категория: GUI

Добавляем WireGuard VPN соединение на панель управления сетями NetworkManager в Manjaro Plasma/KDE.

Попытался я добавить конфиг WireGuard VPN соединения в панель настроек Manjaro. Но при соединении через панель пропадает интернет. А панель NeworkManager не дает редактировать/применить настройки соединения после импорта WireGuard конфига!
Невозможно установить параметр: "Подключаться автоматически с приоритетом: 0".

ip address show dev wg-vpn

Решение проблемы:

* NetworkManager в Plasma не поддерживает на данный момент изменение настроек WireGuard соединения через GUI. Но зато подключение/отключение VPN будет работать через панель сетей.

Нужно импортировать WireGuard конфиг через nmcli, а не через интерфейс NetworkManager.

sudo nmcli connection import type wireguard file ./wg-vpn.conf
Переименовать, изменить или удалить соединение
nmcli connection modify wg-vpn connection.id "wg-vpn-do"
nmcli connection modify wg-vpn-do connection.interface-name wg-vpn
nmcli connection modify wg-vpn connection.autoconnect yes
nmcli connection delete wg-vpn

А можно подключать сеть с помощью wg-quick:

sudo wg-quick up ~/data/vpn/wg-vpn.conf
Оказывается, wg-quick up, не просто поднимает соединение, а еще и настраивает маршрутизацию!
[#] ip link add wg-vpn type wireguard
[#] wg setconf wg-vpn /dev/fd/63
[#] ip -4 address add 10.66.66.3/32 dev wg-vpn
[#] ip -6 address add fd42:42:42::3/128 dev wg-vpn
[#] ip link set mtu 1420 up dev wg-vpn
[#] resolvconf -a wg-vpn -m 0 -x
[#] wg set wg-vpn fwmark 51820
[#] ip -6 route add ::/0 dev wg-vpn table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip6tables-restore -n
[#] ip -4 route add 0.0.0.0/0 dev wg-vpn table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

Это все. Опишу что я выяснил/нагуглил, пока не нашел решение. И что пишут настройке WireGuard через GUI.

1. На практике, редко стоит использовать интерфейс Plasma NetworkManager для доступа к серверу Wireguard.

Конфигурация Plasma Wireguard враждебна к пользователю. Диалоговые окна конфигурации выполняют очень ограниченную проверку правильности, пока не попытаются сохранить конфигурацию. Если на этом этапе будут обнаружены какие-либо ошибки, пользовательский интерфейс выдаст расплывчатое сообщение об ошибке и удалит всю запись Wireguard VPN, поэтому вам придется вводить все настройки заново.. Учитывая количество отдельных полей, которые должны быть настроены для работы Wireguard, это блестящее дизайнерское решение приводит к огромным потерям времени и усилий.

Гораздо проще использовать утилиту wg-quick из командной строки. Хотя она также не выдает полезных сообщений об ошибках (Wireguard просто не может передать данные, если он недоволен), wg-quick не удаляет данные своей конфигурации в ответ на ошибки. Можно постепенно отлаживать настройку wg-quick вместо того, чтобы вводить все настройки Wireguard снова и снова, пока они не заработают.

2. Plasma NetworkManager не будет при подключении отправлять весь ваш трафик через VPN по-умолчанию.

Смотрите в сторону nm-settings:

man nm-settings
ip4-auto-default-route
    Whether to enable special handling of the IPv4 default route.
    If enabled, the IPv4 default route from wireguard.peer-routes will be placed to a dedicated routing-table and two policy routing rules will be added.
    The fwmark number is also used as routing-table for the default-route, and if fwmark is zero, an unused fwmark/table is chosen automatically.
    This corresponds to what wg-quick does with Table=auto and what WireGuard calls "Improved Rule-based Routing".
    Note that for this automatism to work, you usually don't want to set ipv4.gateway, because that will result in a conflicting default route. 
    Leaving this at the default will enable this option automatically if ipv4.never-default is not set and there are any peers that use a default-route as allowed-ips.
ip6-auto-default-route
    Like ip4-auto-default-route, but for the IPv6 default route.

3. Утилита nmcli хороша!

nmcli                  ## Покажет список интерфейсов с роутами, детально. Офигеть)
nmcli con show         ## Покажет список интерфейсов компактно
nmcli device wifi list ## Покажет список WiFi сетей + уровень сигнала

nmcli -g ip4.address,ipv4.gateway con show wg-vpn-do  ## 10.66.66.3/32
nmcli -f ipv4.addresses,ipv4.gateway,ipv4.dns con show wg-vpn-do
nmcli -p -m multiline -f all con show


Настройки сетей NetworkManager лежат здесь (которые через GUI добавляются):

sudo ls -la /etc/NetworkManager/system-connections/
Пример настроек WireGuard VPN
sudo nano /etc/NetworkManager/system-connections/wg-do-de-fra.nmconnection
[connection]
id=wg-do-de-fra
uuid=xxxxxxxx-60c8-4637-xxxx-1a1d85cf8041
type=wireguard
interface-name=wg-do-de-fra

[wireguard]
private-key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=

[wireguard-peer.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=]
endpoint=XXX.XXX.XXX.XXX:XXXXX
preshared-key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=
preshared-key-flags=0
allowed-ips=0.0.0.0/0;::/0;

[ipv4]
address1=10.66.66.3/32
dns=94.140.14.14;94.140.15.15;
dns-search=~;
method=manual

[ipv6]
addr-gen-mode=stable-privacy
address1=fd42:42:42::3/128
method=manual

[proxy]

Перезапуск NetworkManager, просмотр системных ошибок:

sudo systemctl restart NetworkManager
journalctl -b
Параметры интерфейсов при включении через wg-quick и при обычном импорте конфига через NetworkManager
nmcli

При подключении через wq-quick:

wg-ams: подключено (внешнее) к wg-ams-fra
  "wg-ams"
  wireguard, программное обеспечение, MTU 1420
  inet4 10.66.66.3/32
  route4 default metric 0
  inet6 fd42:42:42::3/128
  route6 fd42:42:42::3/128 metric 256
  route6 default metric 1024

При подключении через NetworkManager (после импорта через панель):

wg-ams: подключено к wg-ams-fra
  "wg-ams"
  wireguard, программное обеспечение, MTU 1420
  ip6 по умолчанию
  inet4 10.66.66.3/32
  route4 default metric 20050
  inet6 fe80::bb01:ecdd:dafe:725c/64
  inet6 fd42:42:42::3/128
  route6 default metric 20050
  route6 fd42:42:42::3/128 metric 50
  route6 fe80::/64 metric 1024

Иногда возникает ошибка, при удалении соединения в NetworkManager:

Error checking authorization: Connection was deleted

Рекомендуют смотреть права доступа управления сетью (но настройки правильные):

nmcli general permissions

Если нужно добавить default gateway:

sudo ip route del default dev wg-name
sudo ip route add default dev wg-name metric 0
sudo ip route add default dev wg-name via 10.66.66.1 metric 900

#manjaro #gui #plasma #networkmanager #network-manager #wireguard #vpn #nmcli

категория: GUI