Różnica między „przekierowaniem portów lokalnych” a „dynamicznym przekierowaniem portów”?

14

Próbuję zrozumieć różnicę między „przekierowaniem portów lokalnych” a „dynamicznym przekierowaniem portów”.

Czy w poleceniu ssh dotyczącym „przekierowania portu lokalnego” zawsze wymagane jest określenie hosta docelowego?

Czy „dynamiczny” w „dynamicznym przekierowaniu portów” oznacza, że ​​w poleceniu ssh dla „dynamicznego przekierowania portów” nie ma potrzeby określania hosta docelowego? jeśli tak, kiedy określono miejsce docelowe?

Tim
źródło

Odpowiedzi:

15

Tak, musisz podać docelowy adres IP i port podczas korzystania z lokalnego przekazywania. Od man ssh:

 -L [bind_address:]port:host:hostport
         Specifies that the given port on the local (client) host is to be
         forwarded to the given host and port on the remote side.

Oczywiście tylko adres powiązania jest opcjonalny.

Nie, nie można określić docelowego hosta lub portu podczas korzystania z dynamicznego przekazywania. W przypadku przekazywania dynamicznego SSH działa jako serwer proxy SOCKS. Ponownie z manpage (moje podkreślenie):


 -D [bind_address:]port
         Specifies a local “dynamic” application-level port forwarding.
         This works by allocating a socket to listen to port on the local
         side, optionally bound to the specified bind_address.  Whenever a
         connection is made to this port, the connection is forwarded over
         the secure channel, and the application protocol is then used to
         determine where to connect to from the remote machine.  Currently
         the SOCKS4 and SOCKS5 protocols are supported, and ssh will act
         as a SOCKS server.

Dzięki -LSSH nie próbuje zrozumieć ruchu. Po prostu wysyła wszystko, co odbiera z portu lokalnego do portu docelowego - określasz port docelowy w momencie nawiązania połączenia. Dzięki -DSSH działa jak serwer proxy, a zatem może obsługiwać połączenia z wielu portów (na przykład przeglądarka skonfigurowana do używania go jako proxy SOCKS może uzyskać dostęp do HTTP, HTTPS, FTP itp. Przez to samo połączenie). I podobnie jak w przypadku innych serwerów proxy, wykorzysta ruch do ustalenia miejsca docelowego.

muru
źródło
1
Dzięki Muru! Zastanawiam się, dlaczego dynamiczne przekazywanie nazywa się proxy, a lokalne przekazywanie nie? Z definicji, czy serwer ssh, klient ssh, czy jedno i drugie, przekazuje lokalnie serwer proxy (serwer)? unix.stackexchange.com/a/234184/674
Tim
1
@ Tymczasowy serwer proxy rozumie, z jakiego protokołu korzysta. Z przekierowanie portów, SSH nie próbuje zrozumieć, co protokół nadchodzi jego drogę, ale -Dto ma się, aby zrozumieć, gdzie wysłać dane.
muru
Dzięki. Szukałem w niektórych podręcznikach sieci komputerowych (np. Tanenbauma) definicji proxy (serwera) tak jasnego jak twój, ale nie byłem zadowolony. Czy masz jakieś książki, które możesz polecić do nauki pojęć?
Tim
W dynamicznym przekierowaniu portów, którym jest serwer proxy, klient ssh, serwer ssh lub oba?
Tim
@Tim Tanenbaum's był jedyną książką, z której się uczyłem. Reszta pochodzi z używania rzeczy.
muru,
0

Innym sposobem na poznanie tej koncepcji byłoby przyjrzenie się, w jaki sposób klient łączy się z klastrem amazonu elastycznej mapy (Amazon EMR). EMR ma wiele lokalnych aplikacji, które udostępnia, i są one zwykle dostępne za pośrednictwem tuneli SSH.

Istnieją 2 opcje dla klienta: A) Polecenie SSH przekierowania portu lokalnego: ssh -i key.pem -L 8157: abcd: 8088 hadoop @ abcd

Tutaj klient mówi na przykład, że 8157 na localhost zostaje przekierowany na abcd: 8088 Klient musi wysłać zapytanie do localhost: http: // localhost: 8157 Inne aplikacje mogą nasłuchiwać na portach takich jak 8089,8090, a klient musi nawiązywać połączenia ssh dla każdego z nich.

B) Dynamiczne przekierowanie portów W tym przypadku używana jest jedna komenda SSH: ssh -i key.pem -D 8157 hadoop @ abcd

Cały ruch wchodzący na port 8157 będzie kierowany przez tunel ssh. Miejsce docelowe ruchu będzie miejscem docelowym adresu URL. Na przykład możesz użyć klienta proxy na swoim serwerze i przekierować niektóre http URI, aby użyć proxy. Możesz uzyskać dostęp do wszystkich aplikacji na 8089,8090 za pomocą jednego polecenia.

W celach informacyjnych zapoznaj się z tym dokumentem: https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html

M Ga
źródło