Estoy representando un puerto del servidor TCP VNC con netcat. La máquina proxy ejecuta Linux.
Este es el comando que uso:
mkfifo backpipe
nc -l 5902 0<backpipe | nc 10.1.1.116 5902 1>backpipe
10.1.1.116 es la máquina "remota" con el servicio VNC original ejecutándose en el puerto 5902. Después de este comando, el servicio VNC está disponible en localhost para otras máquinas.
Pero después de cada sesión de VNC, el "servidor proxy" de netcat se detiene, así es como funciona netcat.
¿Cómo puedo hacer que netcat mantenga el "servicio proxy" ejecutándose después de que se finalizó una sesión de VNC?
Como solución alternativa, estoy poniendo la línea de comando netcat en un bucle infinito:
mkfifo backpipe
while true; do nc -l 5902 0<backpipe | nc 10.1.1.116 5902 1>backpipe; done
Pero preferiría una solución netcat "oficial" que no interrumpa el servicio en absoluto.
He leído sobre el parámetro "-" pero no estoy seguro de si esto se ajusta al caso y aún no pude aplicarlo correctamente.
Observaciones adicionales:
Por supuesto, puedo hacer esto con el túnel ssh de diferentes maneras, pero quería una solución sin la sobrecarga de cifrado para que sea lo más sensible posible para el cliente VNC. Una solución proxy diferente estaría bien de lo contrario.
El cliente debe ser VNC, no hay otros protocolos posibles.