NetworkManager traffic splitting
Ситуация такая. Есть ноутбук, на нём KDE и NetworkManager. В сеть выходит по WiFi, там всё один раз настроено и забыто.
Ещё настроен ещё один интерфейс, допустим, wireguard (не важно, с openvpn работает также, допущу, что с более экзотическими хитрыми протоколами принцип будет тот же). Подключается по требованию.
Физически компьютер находится в России, а сервер wireguard в стране ЕС, и таким образом немного помогает обходить издержки «изношенного оборудования google» для просмотра YouTube (например), и не только.
Хочется включить это соедиенение и забыть (также как с wifi), чтобы всегда просто работало, но чтобы не весь трафик шёл через другую страну, разумеется. В первую очередь чтобы всякие яндексы, госуслуги, банки и т.п. шли напрямую. И быстрее, и надёжнее, и безопаснее.
Пытаюсь понять, как настраиваются маршруты в NetworkManager - и не понимаю. я там указываю адрес, маску и шлюз, и всё. Допустим, для примера хочу 2ip.ru пускать напрямую (через него удобно тестировать), а всё остальное пусть идёт по wireguard.
После подключения вижу новую строчку (route)
Было
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default MyRouter 0.0.0.0 UG 600 0 0 wlp0s20f3
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp0s20f3
Стало
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default MyRouter 0.0.0.0 UG 600 0 0 wlp0s20f3
2ip.ru MyRouter 255.255.255.255 UGH 50 0 0 wg0
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp0s20f3
Всё хорошо, но Iface неправильный, он подставляет wg0, хотя должен быть wlp0s20f3. Если набрать curl 2ip.ru, то показывает мой ЕС-адрес. Но если добавить правило вручную командой ip route add 188.40.167.82 via 192.168.1.254 dev wlp0s20f3, то всё работает, как я и планировал, трафик идёт напрямую.
Но добавлять все эти команды вручную (да ещё и root права может нужны, хотя решаемо) неудобно… а объяснить это делать пожилому человеку (например), вообще задача часто нерешаемая (научить нажать на кнопку с грехом пополам вроде получилось).
Я чего-то не понимаю в NetworkManager, и он всё-таки позволяет делать то, что я хочу, сделать разделение трафика в зависимости от правил по двум интерфейсам, а не по одному?.. или если он это не умеет в 2025 году(!), то по какой причине? А можно ли как-то научить?
Там ещё кропотливая работа по составлению длинного списка маршрутов предстоит (то ли по доменным именам, то ли по geoip), но этом, допустим, ладно (плюс не хочется таблицу маршрутизации неадекватно длинной делать, хочется базовые диапазоны адресов покрыть, не более), но это ладно. Допустим, хочу для начала хотя 2ip.ru работать в обход wireguard, как?
Может, есть какое-то средство поднять виртуальный tun/tap интерфейс, к которому подключится networkmanager (а не напрямую к wireguard) и весь трафик будет через него пускать, а уж он сам будет решать, куда подключаться (хоть к wireguard, хоть к vless), и как именно трафик распределять?