Вопрос В чем разница между локальной и удаленной переадресацией IP-адресов?


В чем разница между функциональностью между ними? Я немного смущен этим.

Локальная переадресация делает удаленный порт локально доступным.

Удаленная переадресация делает локальный порт удаленно доступным.

Но эта «доступность» будет работать в обоих направлениях ... или не так ли?

Например. следующее (выдается из дома хозяина)

ssh -R 1234:localhost:2345 user@work

Это установит безопасный туннель между работой :: 1234 и home :: 2345, верно?

Если я поставлю что-нибудь на одном конце, он выйдет на другом конце.

Но тогда я могу добиться того же путем следующего вызова от хоста: «работа»:

ssh -L 1234:localhost:2345 user@home

Итак, единственное различие в том, где я его называю, правильно?


9
2017-11-02 09:16


происхождения


В вашем примере нет разницы в функциональности. Вы сортируете самокомпенсировать использование противоположного аргумента путем замены целевых хостов. Если бы вы не сделали это и использовали оба из них из одного единственного хоста - он уже вызвал бы совершенно противоположное поведение. - XXL


ответы:


Основное практическое различие заключается в том, что при подключении 2 компьютеров A и B и B к брандмауэру или NAT-маршрутизатору, который вы не контролируете, и он блокирует входящие. Вы сидите в A. Вы не можете получить A для подключения к B. Но B не будет блокировать исходящие. Таким образом, вы получаете B для подключения к A.

- дополнительное разъяснение -

Вышеизложенное, понятое исследователем, означает основную практическую разницу между локальной и дистанционной пересылкой. ssh -L и ssh -R, если вы будете использовать их каждый. Я не комментировал конкретные команды, которые он дал, где он переключает -L и -R, и с каким sshd-сервером он подключается. Но теперь я попытаюсь прокомментировать это. С помощью команд ssh, которые он дал, с точки зрения обычного клиента и обычного сервера, кажется, нет никакой разницы, поскольку он не говорит «ах, это ssh-клиент и это ssh-сервер .. «он не знает ssh, а какой аспект ssh для клиента / сервера не имеет значения и неизвестен для обычного клиента и обычного сервера. Они просто заботятся о том, кто слушает, и с их точки зрения это выглядит одинаково. Рабочий компьютер прослушивает и на 1234. Они не замечают, что в одном случае это sshd.exe ssh-сервер, а в другом случае это ssh.exe, ssh-клиент. Кстати, где клиент ssh, считается локальным.


2
2017-11-02 17:30



хорошо, спасибо, что точно ответил на мой вопрос! :-) - nandaloo
@nandaloo Я думаю, что это называется обратным туннелем ssh. Если мы используем составленные термины инициатор и слушатель («поскольку эти термины менее неоднозначны, чем клиент и сервер»). Идея состоит в том, что у вас есть ваш обычный инициатор и слушатель, а также ваш инициатор и слушатель ssh. Вы не можете выбрать, где ваш обычный инициатор и слушатель. например HTTP-сервер (обычный прослушиватель) находится на B. B находится за брандмауэром. A имеет HTTP-клиент (обычный инициатор). Вы помещаете инициатор SSH на B. См. В обратном туннеле инициатор и слушатель SSH, находятся на противоположных компьютерах для обычного инициатора и слушателя. - barlop


Да, если я правильно понимаю, локальная переадресация портов от a до b должна быть одинаковой для перенаправления удаленных портов с b на a (и наоборот). Исходящий туннель от a до b (если смотреть из a) должен быть равен входящему туннелю от a до b (см. B).

Переадресация локального порта создает исходящий туннель, который можно использовать для приведения общедоступного интернет-компьютера к локальной машине. Локальный пользователь может получить доступ к удаленной комбинации хостов: порт на локальном хосте, поскольку данный порт локального (клиентского) хоста перенаправляется на данный хост и порт на удаленной стороне:

ssh -L local_port:remote_host:remote_port user@hostname

Удаленная переадресация портов создает входящий туннель, который можно использовать для приведения локального компьютера в общедоступный Интернет. Пользователь Интернета может получить доступ к определенному локальному хосту: комбинация портов на удаленном хосте. Данный порт на удаленном (серверном) хосте пересылается данному хосту и порту на локальной стороне:

ssh -R local_port:remote_host:remote_port user@hostname

9
2018-06-04 08:38



Я полагаю, что другое отличие, помимо синтаксиса, было бы процессом, который слушает для пользователя подключение. ssh.exe -L сообщает ssh.exe для прослушивания (помимо исходящего соединения, которое уже выполняется). ssh.exe -R сообщает sshd.exe для прослушивания (помимо прослушивания, которое уже выполняется). - barlop
@ 0x4a6f4672, Что делает 0x4a6f4672 имею в виду? - Pacerier
@Pacerier только мои инициалы «JoFr» в шестнадцатеричной нотации :-) - 0x4a6f4672


При локальной переадресации портов вы (клиент) открываете прослушивающий сокет на вашем компьютере и подключаете клиент протокола уровня приложения к этому сокету. Теперь соединение пересылается через SSH на сервер. Сервер подключается к удаленному хосту и туннелирует данные от вашего клиента протокола до конечного адресата.

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


3
2017-11-02 10:55



благодаря этому стало ясно, как работает переадресация портов. И спасибо за перенос вопроса - я просто даже не знал об этом сайте суперпользователя :-) - nandaloo


Это лучше всего понять с помощью небольших примеров. В этих примерах соединения структурированы следующим образом:

Локальный сервер - (LAN) - терминал ----- (SSH, обычно через Интернет) ----- Конечная точка туннеля - (LAN) - удаленная машина

Вы используете локальную переадресацию портов, если хотите выполнить туннелирование на определенный удаленный компьютер / порт, достижимый конечной точкой туннеля, к которой у вас есть доступ ssh. Therby, этот порт удаленной машины также доступен локально на вашем собственном терминале, то есть http: // localhost: terminal_port /.

Это делается с использованием следующего синтаксиса:

ssh -L terminal_port:remote_machine_ip:remote_service_port -p tunnel_endpoint_ssh_port ssh-login@tunnel_endpoint_ip

Вы можете использовать переадресацию удаленных портов, если вы хотите включить КТО УГОДНО(!) удаленный, который может достичь порта прослушивания конечной точки туннеля, чтобы иметь возможность удаленного доступа к ip / port в локальной локальной сети. На ваш локальный сервер похоже, что соединение с удаленным компьютером инициируется терминалом.

Синтаксис:

ssh -R tunnel_endpoint_listen_port:local_server_ip:local_server_port -p tunnel_endpoint_ssh_port ssh-login@tunnel_endpoint_ip

1
2017-12-25 23:21





Это очень хорошо объясняет справочная информация для соцлата. Да, я знаю, что ssh и socat - две совершенно разные вещи, но документация сотата очень хорошая.


0
2017-12-26 03:12