Импорт WireGuard конфига в NetworkManager на Manjaro Plasma
Добавляем 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
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