Diferença entre "encaminhamento de porta local" e "encaminhamento de porta dinâmico"?

13

Estou tentando entender a diferença entre "encaminhamento de porta local" e "encaminhamento de porta dinâmico".

No comando ssh para "encaminhamento de porta local", é sempre necessário especificar o host de destino?

"Dinâmico" em "encaminhamento de porta dinâmico" significa que, no comando ssh para "encaminhamento de porta dinâmico", não há necessidade de especificar o host de destino? se sim, quando o destino é especificado?

Tim
fonte

Respostas:

15

Sim, você deve especificar um IP e uma porta de destino ao usar o encaminhamento local. De 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.

Claramente, apenas o endereço de ligação é opcional.

Não, você não pode especificar um host ou porta de destino ao usar o encaminhamento dinâmico. No encaminhamento dinâmico, o SSH atua como um proxy SOCKS. Novamente da página de manual (ênfase minha):


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

Com -L, o SSH não tenta entender o tráfego. Apenas envia tudo o que recebe na porta local para a porta de destino - você determina a porta de destino no momento em que a conexão é feita. Com-D , o SSH atua como um servidor proxy e, portanto, pode manipular conexões de várias portas (por exemplo, um navegador configurado para usá-lo como um proxy SOCKS pode acessar HTTP, HTTPS, FTP etc. na mesma conexão). E, como em outros servidores proxy, ele usará o tráfego para determinar o destino.

muru
fonte
1
Obrigado Muru! Eu me pergunto por que o encaminhamento dinâmico é chamado de proxy, enquanto o encaminhamento local não é? Por definição, o servidor ssh, o cliente ssh ou ambos no encaminhamento local são um proxy (servidor)? unix.stackexchange.com/a/234184/674
Tim
1
@ Tim um servidor proxy entende qual é o protocolo que ele está executando proxy. Com o encaminhamento de porta, SSH não faz nenhuma tentativa para compreender o protocolo está vindo sua maneira, mas com -D, ele tem que, a fim de compreender para onde enviar os dados.
Muru
Obrigado. Procurei em alguns livros de redes de computadores (por exemplo, de Tanenbaum) por definição de proxy (servidor) tão claro quanto o seu, mas não estava satisfeito. Você tem alguns livros a recomendar para aprender conceitos?
Tim
No encaminhamento de porta dinâmico, qual é o servidor proxy, o cliente ssh, o servidor ssh ou ambos?
Tim
@Tim Tanenbaum's foi o único livro em que estudei. O resto vem do uso das coisas.
Muru
0

Outra maneira de aprender esse conceito seria examinar como um cliente se conecta ao cluster de redução elástica de mapas (EMR) da amazon. O EMR possui vários aplicativos locais expostos e esses são normalmente acessados ​​por túneis SSH.

Existem 2 opções para um cliente: A) Comando SSH de encaminhamento de porta local: ssh -i key.pem -L 8157: abcd: 8088 hadoop @ abcd

Aqui, o cliente diz, por exemplo, que 8157 no host local é encaminhado para abcd: 8088 O cliente precisa fazer uma solicitação ao host local: http: // localhost: 8157 Outros aplicativos podem estar ouvindo em portas como 8089.8090 e O cliente precisa fazer conexões ssh para cada uma delas.

B) Encaminhamento dinâmico de porta Aqui, um único comando SSH é usado: ssh -i key.pem -D 8157 hadoop @ abcd

Qualquer tráfego que entra na porta 8157 será roteado através do túnel ssh. O destino do tráfego será o destino do URL. Por exemplo, você pode usar um cliente proxy no servidor da Web e redirecionar alguns URIs http para usar o proxy. Você pode acessar todos os seus aplicativos no 8089.8090 por meio de um único comando.

Para referência, consulte este documento: https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html

M Ga
fonte