LINUX.ORG.RU
Форум — Admin  

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

 , , , ,


0

2

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

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

★

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

Какая разница в каком окружении запускать? Главное что бы VPN запущеный одним пользователем не мешал и не был доступен другому пользователю.

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

Какая разница в каком окружении запускать?

Ну не знаю, может там конфиги разные например?

Главное что бы VPN запущеный одним пользователем не мешал и не был доступен другому пользователю.

У тебя там time sharing system чтоли?

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

В настройках NM есть нужная опция

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

В настройках NM есть нужная опция

Что за настройка?

Network namespace.

Ну ты бы хоть тэги почитал.

torm7 ★
() автор топика

Можно сделать отдельную для пользователя таблицу маршрутизации через ip rule uidrange.

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

А что то более вменяемое есть? Туториал, стати… Маны они немного не для этого сделаны.

Пока не понятно как для всх присланных маршрутов от OpenVPN использовать свою таблицу маршрутизации

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

О, в очередном требовании конкретного решения, ТС соизволил раскрыть тайну, что у него OpenVPN. И, ведь про традиции, можно было просто для всех пользователей сделать отдельную таблицу с default маршрутом, и только свои пакеты отправлять в main таблицу, но зачем-то захотелось, именно OpenVPN маршруты в отдельную таблицу :)

Чтобы маршруты от OpenVPN оказывались где надо, нужно дать клиенту опцию --route-noexec, написать скрип, который будет прописывать маршруты и указать его в route-up. Скрипт должен парсить переменные среды route_network_1 и т.д. https://www.ylsoftware.com/news/735

И вся проблема в то, что часто openvpn-сервер не настраивают корректно, он просто хочет на себя маршрут по умолчанию, и в этом скрипте нужны всякие проверки...

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

И вся проблема в то, что часто openvpn-сервер не настраивают корректно, он просто хочет на себя маршрут по умолчанию, и в этом скрипте нужны всякие проверки...

А вот это даже я не распарсил. Всё что вы выше написали верно, мне только процитированное предложение не понятно.

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

почему у вас на двоих с женой один компьютер?

ТС не написал, что он у них один, он задал вполне конкретный и адекватный вопрос.

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

О, в очередном требовании конкретного решения, ТС соизволил раскрыть тайну, что у него OpenVPN.

ТС соизволит вам открыть ещё 2 тайны, у него есть ещё wg и openconnect для VPN. Так что вот вам новые требования, в корне меняющие начальный смысл(нет). И ему нужно решение не только для openvpn. И хотелось бы универсальное, а не узкоспециализированное для каждого VPN по отдельности.

И даже больше, ТС даже думал о возможности запуска этих VPN с уровня systend --user, в своем ns, просто не хотел навязывать свое видение решения тем кто это возможно делал и использовал. Может это просто решается, и более узкие круги пользователей уже давно это делают.

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

Допустим, у вас две конторы, в каждой вам предоставили удалённый доступ, чтобы вы что-то в их локальной сети делали. Каждый такой openvpn-сервер должен пушать маршрут до конкретной локальной сети (допустим, 192.168.x.y). Но на этих серверах прописали только redirect-gateway, вот и лепи костыли, если нужно одновременно подключиться к обоих openvpn.

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

у него есть ещё wg и openconnect для VPN.

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

Про вариант, оправить всех, кроме себя в отдельню таблицу я написал, достаточно просто. Хотя, ЕМНИП, wg сам прописывает ip rule и это может всё поломать.

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

Допустим, у вас две конторы, в каждой вам предоставили удалённый доступ, чтобы вы что-то в их локальной сети делали. Каждый такой openvpn-сервер должен пушать маршрут до конкретной локальной сети (допустим, 192.168.x.y). Но на этих серверах прописали только redirect-gateway, вот и лепи костыли, если нужно одновременно подключиться к обоих openvpn.

Спасибо. Теперь понял. Проходил такое на уровне клиента, неочень удобная «из коробки» ситуация получается, но она хотябы «нетяжело» решается силами самого ovpn с моей, как клиента, стороны в случае не пересекающихся сетей. Либо тяжелее, но все равно решается.

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

Да, решается просто, но скрипт route-up уже перестаёт быть универсальным. А если ещё сети пересекаются, но хотя бы ip-адреса серверов разные, то ещё больше в скрипте «персонализации». А ТС хочет готового универсального решения.

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

Очень мало людей одновременно подключаются к куче VPN-серверов

+много! Хоть на моей практике таких людей больше одного, но это единицы и они понимают, что и к чему может привести. Бывают случаи неудач при поднятии нескольких туннелей, например пара офисных и один с defgw, или парочка с defgw. Но это отдельная часть балета с разными нюансами которые могут быть и рандомными, а могут и не рандомными, типичный пример это пролюбливание dns сервера.

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

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

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

Так в том и вопрос, прям первой строкой в трэде. Как в этот netns засунуть пользователя, причем только одного?

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

Ну так и пиши туда, если умеешь. Глядишь кто и предложит тебе заплатить за услуги. Возможно даже я.

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

Ну, сделал следующее:

[root@nixos:~]# ip netns add test
[root@nixos:~]# ip netns exec test openvpn --suppress-timestamps --config /nix/store/1kvlqpicn4825vpy8m9l3r2ynv0h71jx-openvpn-config-mycfg

Получил:

...
WNetwork unreachable, restarting
TCP/UDP: Closing socket
...

Что не удивительно, т.к. в этом netns нет интернета. Дальше что? veth шнурки делать до пространства с интеретом? Или какие то процессы туда засунусь?

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

Что не удивительно, т.к. в этом netns нет интернета. Дальше что?

Инет туда засунуть, ну!

Если хочется несекьюрно и просто, можешь openvpn свой снаружи запустить, а в netns только интерфейс поднять и адреса-маршруты прописать.

Что за детсад, сделать что-то примерно в нужном направлении, а потом смотреть на взрослых грустными глазами, мол «я пытался, дальше вы»? Сформулируй задачу и добивайся результата.

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

Что за детсад, сделать что-то примерно в нужном направлении, а потом смотреть на взрослых грустными глазами, мол «я пытался, дальше вы»? Сформулируй задачу и добивайся результата.

При чем тут детсад. Я не вижу полет твоей мысли. После проброса шнурков в дефолтном netns будет доступный всем интерфейс с vpn внутри, который по прежнему будет доступен всем пользователям. Что не очень то вяжется с намеченой целью. Получается все тоже самое только сложнее.

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

Под добавить туда интернет ты же это имел в виду:

[root@nixos:~]# ip link add veth0 type veth peer name veth1
[root@nixos:~]# ip link set veth1 netns test
[root@nixos:~]# ip addr add 10.1.1.1/24 dev veth0
[root@nixos:~]# ip link set dev veth0 up
[root@nixos:~]# ip netns exec test ip addr add 10.1.1.2/24 dev veth1
[root@nixos:~]# ip netns exec test ip link set dev veth1 up

Ну так один конец veth0 будет дефолтном пространстве, а другой(veth1) в netns. Я не телепат, угадывать мысли нет умею.

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

Ну запустил, с интернетом и т.п. а дальше то что?

[root@nixos:~]# ip netns add test
[root@nixos:~]# ip link add veth0 type veth peer name veth1
[root@nixos:~]# ip link set veth1 netns test
[root@nixos:~]# ip addr add 10.1.1.1/24 dev veth0
[root@nixos:~]# ip link set dev veth0 up
[root@nixos:~]# ip netns exec test ip addr add 10.1.1.2/24 dev veth1
[root@nixos:~]# ip netns exec test ip link set dev veth1 up
[root@nixos:~]# ip netns exec test ip route add default via 10.1.1.1 dev veth1
[root@nixos:~]# iptables -t nat -A POSTROUTING -s 10.1.1.0/255.255.255.0 -j MASQUERADE
[root@nixos:~]# ip netns exec test openvpn --suppress-timestamps --config /nix/store/1kvlqpicn4825vpy8m9l3r2ynv0h71jx-openvpn-config-mycfg

В дефолтном netns имею:

[root@nixos:~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp52s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether 6c:24:08:e5:c6:c7 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether 8c:f8:c5:41:91:64 brd ff:ff:ff:ff:ff:ff
4: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 86:0d:f7:fd:80:e8 brd ff:ff:ff:ff:ff:ff
5: ovs-sw0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 7e:e6:55:29:5d:4a brd ff:ff:ff:ff:ff:ff
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
    link/ether 02:42:1a:1d:16:2f brd ff:ff:ff:ff:ff:ff
10: veth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 1a:ca:26:a0:f7:b7 brd ff:ff:ff:ff:ff:ff link-netns test

В netns test имею:

[root@nixos:~]# ip netns exec test ip link show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 500
    link/none 
9: veth1@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether d2:44:15:1d:88:47 brd ff:ff:ff:ff:ff:ff link-netnsid 0

И чего дальше с этой бородой делать?

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

Как его там юзать умник? Ты несколько комментариев назад не понимал откуда интерфейс в дефолтном netns берется юзатель.

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

Если бы предполагалось что я всё это знаю и умею, то зачем бы мне на форуме спрашивать? Тем более мне нужен не только OpenVPN.

Я выше спрашивал как пользователя засунуть в этот netns, но ты решил сумничать и написать про процессы. По твоему наставлению туда засунули процесс, а что дальше с этим делать? Зачем ты хотел туда процесс засунуть?

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

Попытаюсь ещё раз прочитать твои мысли. Под юзать tun0 в netns test, ты имел в виду примерно следующее:

  • ip netns exec test firefox
  • ip netns exec test git clone
  • ip netns exec test kmail
  • …

Если да, то это так себе решение. Надо весь сеанс пользователя туда засунуть. А если есть возможность на ходу этот сеанс переключить на другой netns, то вот и оно, универсальное решение, по изоляции любых vpn, с любым количеством пересекающихся маршрутов.

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

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

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

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

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

Ситуация в магазине:

Покупатель: Скажите у вас чай продается?
Продавец: Ну а вы сами как думаете, какие у вас мысли есть? Или вы ждете что я скажу вам да или нет? Нее сначала обойдите все отделы и посмотрите все полки.
Покупатель: ??? да ну нахер...
torm7 ★
() автор топика
Последнее исправление: torm7 (всего исправлений: 2)
Ответ на: комментарий от torm7

А вообще весь этот топик странно выглядит. Все решения разложильсь на:

  • запуск vpn в netns <- - - было по умолчанию со старта топика
  • камасутру с роутингом

Причем столько пафоса от *****’ых посылателей на о боже мой читай доку/маны я давно не видел. Что самое завабное, так это то, что они по ощущениям сами не умеют того о чем говорят. Т.к. технически грамотному специалисту, знакомому с обсуждаемой областью, проще написать 3 строчки кода, чем разводить демогогию с facepalp и отсылками в Jobs

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

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

Так ты и сам не знаешь.

anonymous
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.