Tengo un dispositivo conectado a Internet, pero está detrás de una NAT, lo que significa que no puedo acceder directamente a él desde fuera de la red. Ya descubrí que el túnel SSH inverso puede solucionar este problema.
Ahora quiero ejecutar un proceso de servidor netcat en este dispositivo, accesible una vez más desde fuera de la red. ¿Cómo haría para hacer esto?
Respuesta1
Me las arreglé para resolver esto por mi cuenta. Parece que el túnel ssh es básicamente reenvío de puertos. Ejecuté el siguiente código en el servidor detrás de NAT
ssh -N -R 4321:localhost:1234 user@client &
esto configura el túnel que dirige el tráfico desde client:4321
hacia server:1234
, con el &
comando to ejecutarlo en segundo plano. Aún en el servidor, ejecuté:
ncat -lk -c "python myscript.py" localhost 1234 &
que inicia la ejecución del proceso netcat myscript.py
. Ahora puedo conectarme al servidor desde mi cliente a través de netcat
nc localhost 4321
(No lo tenía ncat
en mi cliente, pero nc
también funcionó. Mi caso de uso real fue usar la socket
biblioteca en Python para conectarme, que funcionó igual)