Túnel ssh transparente

Túnel ssh transparente

Tengo un túnel SSH definido en /etc/ssh/ssh_config. Contiene:

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

Todavía me gustaría poder acceder a los túneles a través de sus nombres DNS originales (por ejemplo, curl some-servicedebería funcionar, en lugar de tener que usarlos curl 0.0.0.0:8000).

En un intento de hacer esto, agregué lo siguiente a mi /etc/hostsarchivo:

127.0.0.2 some-service
127.0.0.3 some-other-service

Ahora creo que necesito algunos iptablescomandos que harán lo siguiente:

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

De modo que, curl some-servicese resolvería en 127.0.0.2(via /etc/hosts, que a su vez sería enviado por proxy a 127.0.0.1:8000(via iptables), que a su vez accedería some-service:80(a través del túnel ssh)


Pregunta: Siento que debería haber una manera más fácil de lograrlo. Si no, ¿cómo serían los iptablescomandos?

Respuesta1

Utilizar elssh avance dinámicoopción para configurar un proxy de calcetines, agregando esto a tu .ssh/config:

DynamicForward localhost:8000

Luego dile a curl que use SOCKS:

curl --socks5 localhost:8000 ...

Hay otras formas de utilizar curlSOCKS; referirse adocumentación.

Respuesta2

No estoy seguro de cuál es la etiqueta correcta aquí (¿cerrar la pregunta? ¿Marcar como duplicada?), pero tengo una respuesta aceptada para esta pregunta aquí:

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

información relacionada