Como o tunelamento SSH funciona em baixo nível?

5

Estou interessado no mecanismo exato que ocorre quando um túnel SSH é estabelecido.

Supondo que temos 3 computadores: host LOCAL, host INTERMEDIÁRIO e host REMOTE, com esta topologia:

Localhost --- INTERNET --- IntermediateHost --- LAN --- RemoteHost

E queremos colocar um túnel em um servidor da Web em execução no RemoteHost.

Hosts intermediários e remotos aceitam conexões SSH.

Quando executo o seguinte comando na máquina local:

$ ssh -L 2022:remote:80 user@intermediate

Eu estou certo se eu assumir o seguinte?

  • O cliente SSH do host local abre a porta 2022 e a escuta (começando a agir como um servidor)
  • Ao mesmo tempo, o SSH cliente do host local abre uma conexão SSH com a porta padrão (22) no host Intermediário.
  • Nesta conexão, o cliente informa ao IntermediateHost que deseja abrir um túnel (já que o protocolo SSH o suporta), então agora o servidor SSH Intermediário sabe que tem que enviar o tráfego recebido através desta conexão para o RemoteHost, porta 80.

Então, agora, um navegador da Web em execução no Localhost se conecta ao localhost: 2022 e envia um "GET /" através do soquete. O SO assume o controle e encapsula essa informação dentro de um pacote TCP, com a porta de destino 2022, e esta dentro de um pacote IP, com endereço de destino LOCALHOST, as tabelas de roteamento do sistema operacional determinam que o pacote é destinado à mesma máquina, então ele desembrulha o pacote TCP, lê o destino e o desembrulha, retornando o "GET /" para o serverSocket que o cliente SSH abriu antes (na porta 2022)

Isso está correto? porque, até onde eu sei, um encapsulamento encapsula o pacote TCP / IP através do SSH, mas neste cenário, o cliente SSH não tem acesso ao pacote TCP / IP, ele só obtém as informações de "nível de aplicativo": "GET /".

Obrigado!

    
por edutesoy 25.10.2012 / 13:21

1 resposta

2

Sua compreensão do processo está correta.

O "encapsulamento" ou "encapsulamento" realmente acontece no nível TCP: o fluxo vindo pela conexão SSH é conectado à conexão do soquete na LAN, e tudo que sai e volta sobre isso também passa por isso.

    
por 25.10.2012 / 14:23