
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-service
deberí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/hosts
archivo:
127.0.0.2 some-service
127.0.0.3 some-other-service
Ahora creo que necesito algunos iptables
comandos 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-service
se 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 iptables
comandos?
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 curl
SOCKS; 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