1

Как мы уже говорили по моему вопросу, вопрос подходит к этому вопросу:

Можем ли мы установить TCP-соединение с помощью технологии UDP Hole Punching?

- Оригинальный вопрос / История -

Я использую функцию обратного туннеля OpenSSH для подключения SSH-сервера, который находится за брандмауэром.

Теперь я могу подключиться к компьютеру с server-behind-firewall , введя ssh me@my-known-server -p 12345

Таким образом, весь трафик my-laptop направляется на my-known-server , а my-known-server направляет этот трафик на компьютер с server-behind-firewall . Я думаю, что это неэффективно.

То, что я ищу, - это метод, который обеспечит те же функциональные возможности, но с использованием технологии bittorrent (то есть, пиры создают UDP-соединения с my-known-server (трекером) и отправляют пакеты друг другу напрямую)

Есть ли способ достичь этой функциональности?

Редактировать:

Битторрентное соединение создается по технологии "UDP дырокол".

Edit-2:

Очевидно, что я искал соединение SSH через "Hamachi", как программное обеспечение, которое использует технику обхода NAT.

2 ответа2

1

Чтобы ответить на ваш вопрос, я почти уверен, что такой функциональности нет, во-первых, потому что SSH - это протокол на основе TCP, а не UDP.

Стандартный метод для доступа к хостам за шлюзом - использовать параметр ProxyCommand в вашем файле ~/.ssh/config .

Туннели объясняются в другом месте, но недостатком является то, что вы можете в основном "прыгать" через SSH через прокси, просто указав команду, которая откроет соединение TCP:22 с удаленным хостом, который может функционировать как следующий прыжок SSH. (Хотя во многих случаях вам нужен только один прокси.)

Например, используя имена хостов, которые вы упомянули в своем вопросе, вы можете добавить следующее в файл .ssh/config my-laptop :

host server-behind-firewall
    ProxyCommand ssh -xaqW%h:22 my-known-server

Затем вы подключаетесь к ssh к server-behind-firewall , клиент ssh на вашем ноутбуке устанавливает соединение с my-known-server который устанавливает соединение с сервером, защищенным брандмауэром, и перенаправляет трафик обратно к вам. Это означает, что у вас есть учетная запись SSH на my-known-server . Хотя прокси-серверы, возможно, не самый эффективный способ управления данными, это безопасный, хорошо документированный и приемлемый метод для создания такого рода соединения.

Идея «одноранговые [создание] UDP-соединений ... и [отправка] пакетов друг другу напрямую» работает только в том случае, если машины действительно могут напрямую соединяться друг с другом. Так как ваш брандмауэр не может быть подключен напрямую, единственный способ получить доступ - через прокси на его шлюзе.

Если ваш сервер с межсетевым экраном находится в сети, которая использует NAT для связи с внешним миром, то возможно, что сервер сможет установить свое собственное независимое соединение с каким-либо внешним местоположением, чтобы обойти брандмауэр. Но остерегайтесь делать это. Сетевые администраторы воспринимают стратегии обхода брандмауэра ОЧЕНЬ серьезно. Чтобы поддерживать ваш доступ к вещам, вы должны работать с сетевыми администраторами, чтобы найти решение, а не вокруг них.

1

Кажется, есть способ сделать это даже без стороннего сервера (например, трекера), используя инструмент под названием pwnat .

Для более подробной информации смотрите этот пост суперпользователя или страницу и публикацию pwnat github.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .