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)
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от torm7

Вам уже давали ссылку, https://lartc.org/howto/lartc.rpdb.multiple-links.html#AEN267

Вместо ip rule add from $IP добавляйте соответствующие правила ip rule add uidrange.

ValdikSS ★★★★★
()
Последнее исправление: ValdikSS (всего исправлений: 1)
Ответ на: комментарий от 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)
Ответ на: комментарий от anc

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

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

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

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

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

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

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