LINUX.ORG.RU

Как избежать оверхеда при использовании недоверенного сервера для организации частной сети

 ,


0

2

Почитал о современных стандартах и протоколах, но ответа для себя не нашел. Думаю, что не они эту задачу решают, но тем не менее… Допустим мы организуем частную сеть для доступа к какой-то инфраструктуре через $VPN_PROTOCOL. Допустим нет возможности организовать прямое подключение к серверу, который находится непосредственно внутри этой инфраструктуры, поэтому используем какой-то сторонний арендованный сервер/ставим стойку и т.д., которая не может находиться 24/7 под нашим контролем, и уже на нем организуем сервер с $VPN_PROTOCOL. Однако в таком случае сервер является точкой, где весь трафик может быть легко просмотрен. Можно использовать VPN over VPN и, например, в качестве верхнего слоя использовать быстрый и легкий wireguard, а внутри него пускать или тот же wireguard, или другой впн, при этом в качестве адреса пира/сервера использовать адрес доверенного сервера в верхнем слое впн. При этом конечно появляется оверхед, который приводит к падению скорости, отзывчивости, не говоря уже о том, что нужно держать всегда два поднятых соединения одновременно и разбираться с маршрутами.

Какие есть инструменты для решения такой задачи, как организация сети через недоверенный сервер, если другие способы (организация расположения доверенного сервера вне инфраструктуры) недоступна? То есть главный вопрос - как не дать недоверенному серверу возможность смотреть трафик между клиентами частной сети?

UPD. Клиент и сервер находятся за NAT. Клиент должен иметь возможность доступа не только к самому доверенному серверу, но и подсети за этим сервером (сам сервер является шлюзом в локалке).



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

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

============      ================      ==============
|          | VPN  | Недоверенный | VPN  | Доверенный | 
|   Хост   |=====>|  ==========> |=====>| ===> --->  | ---> Цель
|          |      |   Сервер     |      |   Сервер   |
============      ================      ==============
Aceler ★★★★★
()
Последнее исправление: Aceler (всего исправлений: 1)
Ответ на: комментарий от Aceler

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

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

а для этого между доверенным и недоверенным сервером должно быть какое-то соединение.

Но оно не обязательно должно быть шифрованное, только инкапсулированное. Тот же openvpn можно использовать без шифрования для траверза NAT от доверенного сервера на недоверенный.

Да, придётся разбираться с машрутами. Штош.

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

К этому я в общем-то и пришел. Но это выглядит как workaround. Думал, может есть какие-то готовые инструменты для такой задачи.

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

«готовый инструмент» называется «маршрутизируемый адрес». В случае с например openvpn можно использовать также http прокси с методом connect.

no-dashi-v2 ★★★
()
Ответ на: комментарий от Entmatix

на транзитном сервере ставишь «проброс порта» на сервер и получаешь наибыстрейцший проход впн трафика (да и вообще любого трафика) через транзитный сервер.
считай в любом роутере сие делается.

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

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

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

Так чтобы недоверенный сервер стал транзитным, нужно, чтобы он знал, куда пересылать шифрованный трафик. Для этого он должен как то соединяться с доверенным сервером, т.к. доверенный сервер за натами. Самый простой способ, как предложили выше, инкапсуляция без шифрования.

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

есть шифрованный канал.
как его передать между источником и получателем вторично: хоть «пробросом порта», хоть «инкапсуляцией», хоть проксёй, хоть заворачиванием еще в один канал пофих.
я лишь сказал что из сетевых операций на мой взгляд наименее оверхедное.

если тебе надо прямой «адресный» доступ в локалку за НАТ - это несколько другой вопрос, также вполне решаемый.

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

если тебе надо прямой «адресный» доступ в локалку за НАТ - это несколько другой вопрос, также вполне решаемый.

Это как раз и озвучено

организуем частную сеть для доступа к какой-то инфраструктуре через $VPN_PROTOCOL

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

Вообще-то не озвучено.

Если ты в исходном посте напишешь, что у тебя и клиент и сервер за своими NAT-ами, будет понятнее, что ты хочешь.

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

Добавил более очевидное объяснение.

Entmatix
() автор топика

Хоть это и не ответ на ваш вопрос, но если и у клиента, и у сервера используется NAT с сохранением портов, то установить прямое соединение WireGuard можно банально задав фиксированные UDP-порты на обеих сторонах.
Если же NAT не сохраняет порты (использует случайные), но использует один и тот же порт назначения при использовании одного и того же порта источника, то соединение также можно установить, предварительно узнав этот порт через STUN, например.

И у клиента, и у сервера в этом случае должен быть статический IP-адрес. Если у клиента динамический, нужно сделать какую-то схему сообщения адреса внешними средствами. Для WireGuard есть такие штуки, но я не пробовал.

ValdikSS ★★★★★
()

Возьми EdgeVPN

https://mudler.github.io/edgevpn/

Он работает через ту же либу что и небезызвестный IPFS

Просто ставишь на клиент и сервер и ещё куда надо (это меш сеть, все участники сети равные), а дальше его забота пробить NAT и установить между участниками прямое соединение через STUN или другие методы. Прямое соединение будет всегда в приоритете, но даже если его не получится установить то будет установлено соединение через один из тысячи релейных серверов, причем на нем отследить ничего не смогут, поскольку трафик шифруется.

Самый главный плюс что не надо городить никаких недоверенных серверов, а также не надо ничего настраивать и нигде регистрироваться как в случае со всякими tailscale и zerotier

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

В Zerotier тоже не обязательно регистрироваться, но тогда где-то надо развернуть свой контроллер(и у этого контроллера должен быть публичный адрес). Трафик через контроллер пойдет только если NAT пробить не удастся.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)

Если вопрос только в возможном оверхеде - снаружи vpn без шифрования, внутри vpn с шифрованием.

С маршрутами кстати колупаться не особо нужно, статика в 2 стороны или даже ospf поджигаются один раз и забываются.

yu-boot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.