Tunelamento SSH transparente

Tunelamento SSH transparente

Eu tenho um túnel SSH definido em /etc/ssh/ssh_config. Contém:

LocalForward 0.0.0.0:8000 some-service:80
LocalForward 0.0.0.0:8001 some-other-service:80

Eu ainda gostaria de poder acessar os túneis por meio de seus nomes DNS originais (por exemplo, curl some-serviceainda deveria funcionar, em vez de precisar usar curl 0.0.0.0:8000)

Na tentativa de fazer isso, adicionei o seguinte ao meu /etc/hostsarquivo:

127.0.0.2 some-service
127.0.0.3 some-other-service

Agora, acho que preciso de alguns iptablescomandos que farão o seguinte:

When I see a request to 127.0.0.2:80 I should proxy it to 127.0.0.1:8000
When I see a request to 127.0.0.3:80 I should proxy it to 127.0.0.0:8001

Tal que, curl some-serviceresolveria para 127.0.0.2(via /etc/hosts, que por sua vez seria proxy para 127.0.0.1:8000(via iptables), que por sua vez atingiria some-service:80(através do túnel ssh)


Pergunta: Sinto que deveria haver uma maneira mais fácil de conseguir isso? Se não, como seriam os iptablescomandos?

Responder1

Use ossh DynamicForwardopção para configurar um proxy de meias, adicionando isto ao seu .ssh/config:

DynamicForward localhost:8000

Então diga ao curl para usar SOCKS:

curl --socks5 localhost:8000 ...

Existem outras maneiras de usar curlo SOCKS; consulte odocumentação.

Responder2

Não tenho certeza da etiqueta correta aqui (fechar a pergunta? Marcar como duplicada?), Mas tenho uma resposta aceita para esta pergunta aqui:

https://serverfault.com/questions/982063/transparent-ssh-tunneling

informação relacionada