Штудирую статью: Using WireGuard For Specific Apps on Linux
Английский знаю плохо, поэтому штудировал весь день и может чего не понял. Вот решил отдельный тред открыть. Изучил, есть результат и конкретный вопрос, думаю имею моральное право на это)
Сделал всё по первому сценарию:
Disable Selectively: In this scenario, we want to send almost all of our traffic through a WireGuard tunnel, but selectively disable it for one or two specific applications that we don’t want to use the tunnel.
У меня получается запустить изолированный в namespace клиент tixati:
sudo ip netns exec pvt-net1 sudo -u $USER tixati
Средствами KDE я просто импортировал в систему конфиг файл с ключом для wireguard, и у меня в сетевых подключениях появилось соединение, которое я включаю, когда нужен vpn. При этом созданный namespace успешно игнорирует его и у него остаётся основной ip.
Но если я поднимаю wireguard соединение через консоль, используя wireguard-tools:
# Включить и выключить wireguard:
sudo wg-quick up wg0
sudo wg-quick down wg0
То он начинает действовать и на основное пространство и на pvt-net1 namespace, где как бы его быть не должно.
Что делал не совсем по приведённой инструкции:
Я делал всё по инструкции, кроме того, что не настраивал конфиг wireguard как там написано, потому что в инструкции рассматривается вариант настройки и клиента и сервера, а у меня конфиг от провайдера впн просто, и я его вписал в /etc/wireguard/wg0.conf
. Он работает, но проникает в моё изолированное от него пространство «pvt-net1».
Как это исправить? Так понимаю или что-то в конфиге нужно править или в правилах namespace «pvt-net1».
Но почему тогда импортированный через KDE ключ работает для основной системы а namespace «pvt-net1» его успешно игнорирует?
Ещё насчёт /etc/wireguard/wg0.conf
в статье Address = 10.0.0.1/32 а у меня Address = 10.8.0.21/24
Если его изменить то при включённом wg даже пинги не проходят всё крашится.
в статье Endpoint = 203.0.113.2:51822 как я понял это сервер, у меня там url моего провайдер впн. Остальные настройки не критичны вроде.
Ещё вопросы:
-
У меня такое ощущение, что не все правила, которые я успешно выполнил сохранились. Смотрю:
sudo iptables-save
илиiptables -nvL --line-numbers
. Там заметно меньше строк, чем я вводил правил. Принудительное сохранениеiptables-save -f /etc/iptables/iptables.rules
зачем вообще нужно? -
В ходе инструкции приводился ещё какой-то скрипт, я его сначала сделал и исполнил:
sudo nft -f ~/4cli/nft-rules
, но последние две инструкции счёт избыточными и добавлять в него не стал. Он кажется необязателен и служит для какого-то удобства в чём-то другом? Поясните пож-та.
P.S. Если честно я так и не понял механизма как wireguard в основном пространстве будет работать, а в изолированном дополнительном - нет. Видимо в этом кроется причина. Но меня категорически сбивает с толку, что тупо импортированный вариант как-раз таки работает как надо. Но я хочу а) разобраться, б) рулить wg из консоли.
Конспект выполненных команд: https://hastebin.com/share/wokifunuwa.sql
P.S. Я тут перезагрузился и немало так офигел.
Cannot open network namespace "pvt-net1": No such file or directory
Пропало после ребута. Как же так? Я не удалял разумеется.
P.P.S. снова всё добавил, перезагрузился - опять namespace в 314zду провалилось. Его что вручную каждый раз поднимать надо, не запоминается??? ЧЯДНТ?
Загуглил:
Network namespaces in Linux are ephemeral by nature and are typically associated with running processes. When a system reboots, any network namespaces that were created and not explicitly made persistent will be lost, as the processes associated with them are terminated.
В инструкции не было ни слова про это… Почему так сделано? Удивлён. Ну ок, а где в manjaro их лучше и правильнее записать чтобы при загрузке создавались?