LINUX.ORG.RU
ФорумAdmin

Изоляция сети VPN

 , , , ,


0

2

Подскажите, есть возможность изолировать сети на уровне пользователей linux?

Напримет мне по работе надо подключаться к разным VPN, при этом надо запускать некоторые автоматически при входе. Но жене эти VPN не нужны, да и нечего ей там делать. Как сделать так, что бы при входе моим пользователем они запускались и к ним не было доступа другим пользователям?



Последнее исправление: torm7 (всего исправлений: 2)

Ответ на: комментарий от anc

От этого комментария ваши ожидания понятнее не стали. Но задам вопрос ещё раз. Какой ответ вы ожидаете на ваш вопрос. Потому что я его реально не понял.

torm7
() автор топика
Последнее исправление: torm7 (всего исправлений: 3)
Ответ на: комментарий от anc

Для тех кто не в контексте и лень читать:

Надо весь сеанс пользователя туда засунуть.

Мыслей не возникает как это сделать? Или вы только вопросы задаёте в ожидании, что вам готовую копипасту оформят ?

Я не понял что вы ожидаете в ответ на ваш вопрос.

Ну вопросов таки было два.

Специально для вас уточню. Мне не понятно что вы хотите услышать на ваши два вопроса которые вы задали в ответ на мой вопрос.

И да, я на форумах задаю вопросы, для того что бы получить ответы. Это в теории должно сэкономить время на решение задачи, которую возможно уже кто то решал до этого и готов поделиться своим опытом. Не думал что это надо проговаривать отдельно.

torm7
() автор топика
Последнее исправление: torm7 (всего исправлений: 4)
Ответ на: комментарий от anc

Отправьте шел пользователя в отдельный ns.

Что под этим подразумевается? Это:

  • ip netns exec test bash

Если вы это подразумевали, то это не вариант, как я писал выше. Если что то другое, то раскройте свою мысль.

torm7
() автор топика
Ответ на: комментарий от anonymous

Он задал конкретный вопрос
Надо весь сеанс пользователя туда засунуть.
весь сеанс
весь

И? Не исключаю что я что-то упустил и не понимаю что такое «сеанс пользователя».

anc ★★★★★
()
Ответ на: комментарий от anc

Вот, это уже конструктивно. Под всем сеансом я подразумеваю все процессы рожденные после входа пользователя в систему:

[root@nixos:~]# systemctl status
           └─user.slice
             └─user-1000.slice
               ├─session-2.scope
               │ ├─2427 /nix/store/sddm-0.20.0/libexec/sddm-helper --socket /tmp/sddm-auth-85e471bb-d281-42fd-946a-372b6b00c77f --id 1 --start /nix/store/plasma-workspace-5.27.10/bin/st>
               │ ├─2455 /nix/store/6g15kzn8krpql4biysq2gbgkfx40ramp-kwallet-5.113.0-bin/bin/kwalletd5 --pam-login 13 14
               │ └─2460 /nix/store/l813z7s64anjxsy8q01l2z51q6fy2h8b-plasma-workspace-5.27.10/bin/startplasma-x11
               └─user@1000.service
                 ├─app.slice
                 │ ├─app-firefox-551b42a8d14e42e2bed245a9814a5585.scope
                 │ │ ├─7647 /nix/store/firefox-124.0/bin/.firefox-wrapped --name firefox
                 │ │ ├─7765 /nix/store/firefox-124.0/lib/firefox/firefox -contentproc -parentBuildID 20240311145044 -prefsLen 33786 -prefMapSize 238205 -appDir /nix/store/firefox-124.0/>
                 │ │ ├─7788 /nix/store/firefox-124.0/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 33927 -prefMapSize 238205 -jsInitLen 235212 -parentBuildID 20240311145044 -greomni /nix/store/xbr>
                 │ │ ├─7829 /nix/store/firefox-124.0/lib/firefox/firefox -contentproc -childID 2 -isForBrowser -prefsLen 39313 -prefMapSize 238205 -jsInitLen 235212 -parentBuildID 20240311145044 -greomni /nix/store/xbr>
                 │ │ ├─7885 /nix/store/firefox-124.0/lib/firefox/firefox -contentproc -parentBuildID 20240311145044 -sandboxingKind 0 -prefsLen 39300 -prefMapSize 238205 -appDir /nix/store/xbraiidvpbda4lxqj3c5hi2lgqgjd>
                 │ │ ├─7929 /nix/store/firefox-124.0/lib/firefox/firefox -contentproc -childID 5 -isForBrowser -prefsLen 32932 -prefMapSize 238205 -jsInitLen 235212 -parentBuildID 20240311145044 -greomni /nix/store/xbr>
                 │ │ ├─8009 /nix/store/firefox-124.0/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -prefsLen 33228 -prefMapSize 238205 -jsInitLen 235212 -parentBuildID 20240311145044 -greomni /nix/store/xbr>
                 │ │ ├─8050 /nix/store/firefox-124.0/lib/firefox/firefox -contentproc -childID 7 -isForBrowser -prefsLen 33228 -prefMapSize 238205 -jsInitLen 235212 -parentBuildID 20240311145044 -greomni /nix/store/xbr>
                 │ │ └─8094 /nix/store/firefox-124.0/lib/firefox/firefox -contentproc -childID 8 -isForBrowser -prefsLen 33228 -prefMapSize 238205 -jsInitLen 235212 -parentBuildID 20240311145044 -greomni /nix/store/xbr>
                 │ ├─app-kaccess@autostart.service
                 │ │ └─2900 /run/current-system/sw/bin/kaccess
                 │ ├─app-org.kde.kdeconnect.daemon@autostart.service
                 │ │ └─2886 /nix/store/kdeconnect-kde-23.08.5/libexec/kdeconnectd
                 │ ├─app-org.kde.konsole-4ac9a79afa964022a2460b1569c6f3d7.scope
                 │ │ ├─8135 /etc/profiles/per-user/rav/bin/konsole
                 │ │ ├─8164 /run/current-system/sw/bin/bash
                 │ │ ├─8189 systemctl status
                 │ │ └─8190 less
...

Надо туда засунуть все процессы в user@1000.service и всё, что запустится в этом сервисе после. «Не вариант» потому что ip netns exec test запускает новый процесс в этом нэймспэйсе, а надо засунуть существующие. И иметь возможность их переопределить с netns openvpn на netns wg и т.д.

torm7
() автор топика
Последнее исправление: torm7 (всего исправлений: 1)
Ответ на: комментарий от torm7

Народ, подскажите, только у меня проблема с добавлением процесса в неймспэйс? Проверка:

# Создать нэймспэйс
ip netns add test

# добавить существующий PID в нэймспэйс
ip netns attach test $PID
torm7
() автор топика
Ответ на: комментарий от anonymous

Даже не знаю как назвать то что он делает. Он берет inode идентификатор namespace из существующего процесса:

[rav@nixos:~]$ ls -la /proc/3616/ns/net 
lrwxrwxrwx 1 rav users 0 мар 26 21:08 /proc/3616/ns/net -> 'net:[4026531840]'

и после:

[root@nixos:~]# ip netns attach test 3616

присваевает этот идентификатор именованому netns:

[root@nixos:~]# stat -c %i /run/netns/test
4026531840

А не добавляет существующий процесс в netns. Как результат все процессы оказываются в test

torm7
() автор топика
Последнее исправление: torm7 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Какой-то может механизм есть для этого типа краудсорсинга?

Я пока говорю не о патчах в апстрим ядра и/или util linux (или где там обвязка типа ip), но хочу чтоб мне сказали платно «почему это никому не нужно».

Ну правда, слабо верится что ни у кого не было желания двигать процессы. У опчика вот появилось, я и вспомнил тоже свои старые мечты.

anonymous
()
Ответ на: комментарий от anonymous

Я жопой ман читал (а код вообще не смотрел), там однозначно написано

ip netns attach NAME PID - create a new named network namespace

Другое дело, что это идиотизм и нелогично. Давайте уже вместо вонт фикс прямо скажем что ведро не умеет такого потому что не нужно, а потом через пару мажорных релизов выкатим как фичу, «хоть она и не нужна». Поехавшие.

anonymous
()
Ответ на: комментарий от anonymous

Я расскажу, почему у меня горит от этого: у меня тоже есть несколько туннелей и несколько процессов (не десктоп). Эти процессы хотелось бы НЕ ПЕРЕЗАПУСКАЯ двигать по неймспейсам.

Иногда можно сетевой интерфейс перекинуть из нс в другой, но хочется нормального решения.

инб4 кубик

anonymous
()

Народ, как думаете, а такая схема жизнеспособна:

  • запускаем VPN’ы в разных netns;
  • прокидываем шнурки из них в дефолтный;
  • пользователю(ям) создаем свою таблицу маршрутизации как озвучил @ValdikSS;
  • в таблице прописываем дефолтный маршрут через netns с тем VPN, который нужен.

Тогда вроде не надо будет процессы по netns двигать и VPN’ов можно поднять сколько хочешь. И нет камасутры со сложным роутингом и разруливания «кто на ком стоял»

torm7
() автор топика
Последнее исправление: torm7 (всего исправлений: 3)
Ответ на: комментарий от torm7

Надо кстати посмотреть чё в винде (я как раз на десктопе ее юзаю) будет, подозреваю что у разных юзеров свои туннели сами раскидаются как надо.

Народ, как думаете, а такая схема жизнеспособна

В теории работает, но звучит как говно. Я бы взял всю эту пачку интерфейсов и роутил бы с ними, учитывая уид, но это тоже звучит как говно.

Подозреваю, что хорошего решения нет. И учитывая тенденции и интерес к этой теме, через ещё 10 лет ничего не изменится.

anonymous
()
Ответ на: комментарий от torm7

Сложно все и грустно.

Кому донатить чтоб через 10 лет ip научился процессы из одного нс в другое перемещать на сервере?

Кому донатить чтоб на десктопе у разных юзеров в графической оболочке (что там будет, вяленд12) не было таких вопросов, как у тебя в стартовом посте?

Вопросы риторические, но помогать хочется. По второму пункту - свалил с десктоп линукса примерно 10-12 лет назад, и со стороны очень заметно как оно становится только хуже.

АСТАНАВИТЕСЬ (с). Ваши плазмоиды - говно, зачем их переписывать постоянно? Решите хотя бы этот вопрос, насущный.

инб4 «мам зато у меня кдеконнект и там типа телефон как тачпад, ну сегфолтится иногда и что. Какие ещё роутинги?»

anonymous
()
Ответ на: комментарий от anonymous

Я в винде беру древний https://github.com/shadowsocks/shadowsocks-windows

Там в комплекте privoxy вроде, но меня это не касается - я в один клик в трее могу весь (ну почти, вы правы, не весь) системный трафик зарулить в свой локальный socks5, который открыл ss.

Расскажите мне, как зарулить весь трафик в один клик в линуксовых современных оболочках. Ах да, не нужно.

anonymous
()
Ответ на: комментарий от torm7

Ну это ладно, все что писал выше - крик души, все равно линукс люблю, если без гуев.

Как вы объясните это (комментарий на который отвечаю)? Проблема ведь не в том, что оно не работает (точнее работает не так), проблема в том что за 10+ лет всем похер и никому это не надо. Спасибо опчику, а то я порой думал что я шиз и не понимаю нетспейсы совсем.

Бомбануло конечно - не то слово. Ну а модераторы типа жберта щас придут утром и не читая удалят, ведь он кубермейстер теперь стал.

anonymous
()