LINUX.ORG.RU
ФорумAdmin

туннель пространства пользователя - пробросить порт

 ,


0

1

Привет! Нужен user space туннель : пробросить 1 TCP порт с локалхоста на удаленный сервер. То есть это даже не сетевой уровень.
Конечно, `ssh -R` подойдет , НО может быть уважаемая публика знает альтернативы? Конкретно про ssh, не хочется мороки с uber шифрованием (а трафик ожидается приличный) и мороки с неосвобождением занятых на «той стороне» портов после прибития `ssh -R ` на локалхосте.

★★★★★

Пожалуй, вариант с ssh - самый простой. Можете еще посмотреть на openVPN - тоже user space, но в Вашем случае выглядит как перебор - там полноценный туннель поднимается, а не 1 порт пробрасывается.

Ну и совсем минимальный вариант - netcat на обоих концах. Практически тоже самое, что и с SSH, но без шифрования.

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

Спасибо! Да, openvpn, wireguard тут лишнее.
А с двусторонним nc можно вариант? Насколько я знаю, nc не умеет fork, всегда поэтому вместо него использовал socat.

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

А с двусторонним nc можно вариант?

Вот здесь посмотрите. Там во второй части статьи как раз про nc примеры.

Насколько я знаю, nc не умеет fork,

Хм, а зачем Вам тут fork? Один раз настроили туннель и гоните по нему то, что Вам нужно.

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

Круто, но у nc нет авторизации? В общем, пока остановился на https://github.com/ginuerzh/gost/blob/master/README_en.md

Сервер ( который с публичным IP www.server.com ):

 gost -L=admin:123456@0.0.0.0:8080

На клиенте ( который за NAT):

gost -L=rtcp://:2222/localhost:22  -F=socks5://admin:123456@www.server.com:8080

Итак, порт www.server.com:2222 форвардится на localhost:22

Плюсом намного более адекватное поведение по освобождению зависших портов и меньший оверхед из-за шифрования (SOCKS vs SSH).

Bers666 ★★★★★ ()

Тебе нужен «tcp proxy». Их много разных. Например, simpleproxy. В Nginx тоже есть поддержка такого. Там можно даже в TLS обернуть.

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

в его мане я не нашел, как он мне поможет , будучи запущен на localhost, форваднуть remote_host:2222->localhost:22
Вообще это умеют SOCKS серверы, конкретно вызовом BIND, который посылает клиент socks-серверу, а тот у себя биндит порт и перенаправляет оттуда трафик на клиента.

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

будучи запущен на localhost, форваднуть remote_host:2222->localhost:22

Погоди. Тебе нужно, чтобы при соединении чего-то левого на remote_host:2222, к тебе на localhost:22 приходили пакетики? И чтобы на remote_host при этом ничего из дополнительного софта не было запущено?

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

Погоди. Тебе нужно, чтобы при соединении чего-то левого на remote_host:2222,

да

на remote_host при этом ничего из дополнительного софта не было запущено?

Там может быть запущено что-то. Я контролирую тот хост. Но запущено так, что запустил и забыл. Пример - обычный sshd с Gatewayports=yes, или тот китайский gost. Все телодвижения (какой порт куда форвардить) делаются на localhost"е.

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

Тогда ничего из того, что я советовал, не подойдёт.

i-rinat ★★★★★ ()
Ответ на: комментарий от Bers666

Круто, но у nc нет авторизации?

Нет, конечно. Зачем тут авторизация?

Впрочем, я, кажется, понял, что Вы хотите. Вам нужен демон - аналог sshd, который ловит соединения, проводит авторизацию и поднимает туннель с удаленным хостом.

Netcat - это про другое. Тут нет никакого демона, туннель Вы сами поднимаете (соответственно, не нужны ни форк, ни авторизация) и гоните туда трафик. После завершения процесса для повторного использования все нужно заново руками поднимать.

При желании, конечно, несложно написать демон на основе netcat, который возьмет на себя эти задачи, но зачем, если уже есть софт, который это умеет делать по умолчанию?

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

После завершения процесса для повторного использования все нужно заново руками поднимать.

По дефолту да, но есть хак с fifo, по той ссылке с хабра.

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