
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-service
ainda deveria funcionar, em vez de precisar usar curl 0.0.0.0:8000
)
Na tentativa de fazer isso, adicionei o seguinte ao meu /etc/hosts
arquivo:
127.0.0.2 some-service
127.0.0.3 some-other-service
Agora, acho que preciso de alguns iptables
comandos 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-service
resolveria 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 iptables
comandos?
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 curl
o 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