Соединение двух узлов, динамическое туннелирование TCP-соединений через центральный сервер

Соединение двух узлов, динамическое туннелирование TCP-соединений через центральный сервер

Концептуальная система в моем сознании того, что я ищу:

Дано два хоста (могут быть ПК)!
Оба могут быть в динамической сети (динамический IP)!
Оба подключаются к одному и тому же центральному серверу, чтобы найти друг друга! (в моем случае нужно! Один клиентский хост может также выступать в качестве сервера)
Сервер выступает в качестве моста! И делает туннелирование!
Первый хост подключается к серверу! И второй тоже! Теперь сервер сопоставляет оба узла (хоста)!
И делает пересылку (туннелирование)!
Всякий раз, когда хост один отправляет что-то хосту 2, это будет отправлено на центральный сервер! Через что-то вроде веб-сокета! затем сервер отправляет это второму хосту! Второй хост отвечает! Или как угодно! Сервер обрабатывает мост и туннелирование двумя способами!

Недвижимость здесь:

  • Узлы могут подключаться динамически! Без настройки сетей или динамических DNS... Так же, как это делают teamviewer или anydesk!
  • TCP-соединения туннелируются и пересылаются!
  • Два узла соединяются и могут работать так, как если бы они были одним хостом!

Для возобновления: pc1, pc2 => подключить pc1 к pc2 без необходимости знать IP-адреса друг друга! Все динамически! Прямое туннелирование!

Как это сделать ?

Посмотрев на разные вещи! Я просто подумал, что самый простой способ — реализовать что-то подобное самому! Поскольку я могу себе представить, как это сделать!

Мне это было нужно! При попытке запустить эмулятор Android на AWS EC2! И для переадресации adb на удаленный эмулятор!

Я не спрашиваю орешение проблемы с андроидом!Скореесистема выше!Мне интересно, есть ли уже что-то, что делает то, что я описал!

В противном случае мне потребовалось бы некоторое время!

Для решения, которое пришло мне в голову! Я рассматриваю центральный сервер вебсокетов! И туннелирование tcp через ws!

Как бы называлась такая система?

И какие есть хорошие возможные способы этого достичь! Как бы вы это сделали?

Некоторые другие способы, чем та система, о которой я говорил выше

Для систем или проблем, где вы можете подумать о вышеперечисленном! Как и с удаленной отладкой Android!

Можно подумать о:

Обратное туннелирование SSH => требует статического конца! Например, в моем случае это сервер! Экземпляр сервера должен иметь работающий SSH! В AWS для этого требуется некоторая работа по настройке работающего агента! Не всегда все просто!

Динамический DNS => Переадресация портов необходима! Может быть сложно настроить для некоторых! Возможные риски безопасности

Те, кто может их упомянуть! Я прошу только о концептуальной системе, упомянутой выше!

То, что я упомянул сам концептуально! Будет самой простой вещью и системой! Никакой сложной настройки! Просто настройте один сервер! И все пойдет гладко и динамично по замыслу! Даже для не продвинутых пользователей! Как и другие разработчики в той же команде или организации! Так же, как teamviewer и anydesk, и так много систем уже работают!

решение1

Будет ли что-то вроде openvpn в качестве решения вашей проблемы излишним? Openvpn делает все, что вам нужно, но также шифрует сетевой трафик. Это шифрование добавляет некоторую сложность в конфигурацию.

Связанный контент