O túnel reverso do SSH trabalha para o SSH mas não para HTTP

4

O que funciona

Eu tenho a seguinte configuração:

server <-NAT-> VPS <-> client

Eu configurei o ssh para meu servidor por meio de um túnel reverso e as seguintes configurações:

  • no VPS,

GatewayPorts yes

  • no servidor:

autossh -f -M 57575 -N -R <VPS ip>:9991:localhost:<server ssh port> vps

Com essa configuração, posso simplesmente ssh -p 9991 <server user>@<VPS ip> e fazer login no meu servidor a partir do cliente.

O que não faz

  • no VPS,

GatewayPorts yes e configuração idêntica ao caso SSH

  • no servidor:

autossh -f -M 57576 -N -R <VPS ip>:9992:localhost:8988 vps

python -m http.server 8988 para iniciar o servidor http. Eu posso confirmar que ele se liga a 0.0.0.0 e eu posso acessá-lo na máquina local.

No entanto, quando tento acessar o site por meio de http://<VPS ip>:9992 , recebo um ERR_EMPTY_RESPONSE.

Olhando para o netstat, as duas situações parecem idênticas. No VPS:

tcp 0 0 0.0.0.0:9992 0.0.0.0:* LISTEN -

tcp 0 0 0.0.0.0:9991 0.0.0.0:* LISTEN -

No servidor:

tcp 0 0 0.0.0.0:8988 0.0.0.0:* LISTEN 21003/python

tcp 0 0 0.0.0.0:<ssh port> 0.0.0.0:* LISTEN 550/sshd

tcpdump mostra que uma conexão é estabelecida com a porta 9992 no VPS, mas nada alcança a porta 8988 em server . A conexão é FIN ned imediatamente no VPS.

Por que isso não funciona, quando a situação exatamente análoga da SSH ocorre?

    
por shmo 09.05.2017 / 21:34

1 resposta

2

Você deve iniciar o servidor primeiro e depois iniciar o encaminhamento remoto da porta. Não o contrário.

Não sei por que isso acontece, mas obviamente resolve o problema.

    
por 10.05.2017 / 17:44