Differenza tra "port forwarding locale" e "port forwarding dinamico"?


13

Sto cercando di capire la differenza tra "port forwarding locale" e "port forwarding dinamico".

Nel comando ssh per "port forwarding locale", è sempre necessario specificare l'host di destinazione?

"Dinamico" in "port forwarding dinamico" significa che, nel comando ssh per "port forwarding dinamico", non è necessario specificare l'host di destinazione? se sì, quando viene specificata la destinazione?


Risposte:


15

Sì, è necessario specificare un IP e una porta di destinazione quando si utilizza l'inoltro locale. Da 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.

Chiaramente, solo l'indirizzo di bind è facoltativo.

No, non è possibile specificare un host o una porta di destinazione quando si utilizza l'inoltro dinamico. Nell'inoltro dinamico, SSH funge da proxy SOCKS. Sempre dalla manpage (enfasi sulla mia):


 -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.

Con -L, SSH non cerca di capire il traffico. Invia semplicemente tutto ciò che riceve sulla porta locale alla porta di destinazione - si determina la porta di destinazione nel momento in cui viene stabilita la connessione. Con -D, SSH funge da server proxy e quindi può gestire connessioni da più porte (ad esempio, un browser configurato per usarlo come proxy SOCKS può quindi accedere a HTTP, HTTPS, FTP, ecc. Sulla stessa connessione). E come con altri server proxy, utilizzerà il traffico per determinare la destinazione.


1
Grazie, Muru! Mi chiedo perché il forwarding dinamico sia chiamato proxy, mentre il forwarding locale no? Per definizione, il server ssh, il client ssh o entrambi nell'inoltro locale sono un proxy (server)? unix.stackexchange.com/a/234184/674
Tim

1
@Tim un server proxy comprende quale protocollo sta eseguendo il proxy. Con il port forwarding, SSH non cerca di capire quale protocollo sta arrivando, ma con -D, deve , per capire dove inviare i dati.
Muru,

Grazie. Ho cercato in alcuni libri di testo di reti di computer (ad es. Di Tanenbaum) la definizione di un proxy (server) chiaro come il tuo, ma non ero soddisfatto. Hai dei libri da consigliare per l'apprendimento dei concetti?
Tim

Nel port forwarding dinamico, qual è il server proxy, il client ssh, il server ssh o entrambi?
Tim

@Tim Tanenbaum's è stato l'unico libro da cui ho studiato. Il resto viene dall'uso delle cose.
Muru,

0

Un altro modo per apprendere questo concetto sarebbe quello di dare un'occhiata a come un client si connette al cluster EMR (elastic map ridurre) di Amazon. EMR ha un sacco di app locali che espone e queste sono normalmente accessibili tramite tunnel SSH.

Esistono 2 opzioni per un client: A) Comando SSH port forward locale: ssh -i key.pem -L 8157: abcd: 8088 hadoop @ abcd

Qui il client dice ad esempio che 8157 su localhost viene inoltrato a abcd: 8088 Il client deve fare una richiesta a localhost: http: // localhost: 8157 Altre applicazioni potrebbero essere in ascolto su porte come 8089,8090 e il il client deve effettuare connessioni ssh per ognuna di queste.

B) Port forward dinamico Qui viene utilizzato un singolo comando SSH: ssh -i key.pem -D 8157 hadoop @ abcd

Qualsiasi traffico in ingresso sulla porta 8157 verrà instradato tramite il tunnel SSH. La destinazione del traffico sarà la destinazione dell'URL. Ad esempio, è possibile utilizzare un client proxy sul proprio server Web e reindirizzare alcuni URI http per utilizzare il proxy. Puoi accedere a tutte le tue applicazioni su 8089,8090 con un singolo comando.

Per riferimento, consultare questo documento: https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.