Conexión remota por VNC inverso

Seguro que en mas de una ocasión  ha llamado algún conocido o familiar para que te solucionen algún problema con tu pc con linux.

Al grito de “como tu entiendes de linux” cualquier excusa es buena para hacerte ir a su casa a solucionar lo que en ese momento quiera que le pase al equipo [ y es que leer en Internet soluciones a problemas no entra dentro de sus habilidades técnicas :( ]

Para evitar desplazamientos innecesarios que te hacen perder más tiempo del que necesitas para solucionar el fallo quiero explicaros cómo usar VNC para conectar remotamente al equipo, siempre y cuando le funcione la conexión a Internet ;)

¿Por qué conexión inversa?

Debido a firewalls y routers no nos queda mas remedio que abrir algunos puertos para poder establecer la conexión entre los equipos y, partiendo de la base que la persona a la que vamos a ayudar anda corta de recursos, dudo que sepa cómo hacerlo.

La idea de la conexión inversa por VNC (o reverse VNC connection) es que el puerto que se abra sea el de nuestro router (port forwarding) evitando molestias (y explicaciones innecesarias) a nuestro “cliente” (permitidme que a partir de ahora llame así a la persona que vamos a ayudar remotamente).

Instalación en casa del “cliente”

Lo único que tenemos que pedir al “cliente” es que ejecute en su terminal (supondremos que sabe copiar y pegar y puede abrir una terminal… en caso contrario, te vas a tener que dar un paseo a su casa y, ya que estás allí se lo instalas para no tener que volver)

sudo apt-get install x11vnc

Configuración en nuestra casa

Lo primero que tenemos que hacer es habilitar alguno de los puertos habituales de VNC (5500, 5800 y 5900, aunque podría ser el que te diese la gana) en nuestro router y apuntar (gracias a las reglas NAT del router) a nuestro ordenador.

Esta operación depende del router que tengas así que lo mejor será que te indique una web donde consultar (en perfecto inglés) cómo hacerlo en tu aparato concreto.

Nos preparamos para atender al “cliente”

La configuración anterior sólo tendremos que hacerla una vez (con suerte e ip fija), si tuviésemos ip dinámica (dhcp) lo mismo te va a tocar hacerlo n-cientas veces; tampoco hay que exagerar: los routers suelen traer la posibilidad de configurar el port forwarding en base a la MAC del equipo evitando de ese modo el problema del dhcp. Como la solución depende del router que tengas dejaré su estudio a la curiosidad del lector y a un posible artículo posterior para no extendernos más de lo que ya lo hemos hecho.

Antes de poder atender al “cliente” deberás ejecutar en tu equipo un

vncviewer -listen

y con esto ya tendremos nuestro ordenador esperando la conexión del cliente en el puerto 5500; si el puerto que abriste en el router en el paso anterior es, por ejemplo el 7089 deberás ejecutar

vncviewer -listen 7089

Que comience el espectáculo

Ahora que ya tenemos abierto el puerto y vnc listo para recibir conexiones debemos indicar al “cliente” que ejecute un

x11vnc -connect TU_IP_EXTERNA:5500

donde

  • TU_IP_EXTERNA es la dirección IP de tu ordenador; puedes obtenerla siguiendo las instrucciones que dimos en su momento para obtener la ip externa
  • 5500 es el puerto que hemos abierto en el router; si has puesto otro como 7089 ya sabes que debes cambiarlo

Una vez que el “cliente” ejecute esa instrucción automáticamente aparecerá su escritorio en nuestro ordenador y éste flipará viendo cómo le movemos el ratón y comenzamos a abrir ventanas remotamente :)

Resumiendo

Aunque pueda parecer excesivamente complejo (por la longitud del artículo), el proceso queda reducido a:

  1. Abrir puerto en nuestro router (una sola vez y queda para toda la vida)
  2. Ejecutar en nuestro equipo un vncviewer -listen
  3. Instalar (sólo la primera vez) en casa del cliente x11vnc (ejecutando sudo apt-get install x11vnc)
  4. Pedir al cliente que lance un x11vnc -connect TU_IP_EXTERNA:5500

El paso más complicado va a ser, con total seguridad, conseguir abrir el puerto en el router pero recuerda que con las instrucciones que aparecen en la web de port forward y la herramienta que recomendamos utilizar para comprobrar puertos abiertos tendrás más que suficiente para conseguirlo. Si aun así tuvieses problemas ya sabes dónde encontrarme.

Esta caracteristica, sera incluida en la proxima version de CIBERLINUX.

Espero que les sea util.

2 Responses to Conexión remota por VNC inverso

  1. walter dice:

    Excelente post amigo!. Lo mismo te recomiendo para windows usando Ultra VNS Single Click o PCHelpware.

    Personalmente prefiero PCHelpware por que me parece más pulido y con más opciones. El ultravnc en modo listen tambien sirve para escuchar los pedidos de vnc remoto desde linux.

    Acá les dejo mi post sobre esta ultima herramienta:

    http://www.pclibre.com.ar/press/2009/08/pchelpware-o-como-dar-asistencia-tecnica-remota-a-tus-clientes/#more-2039

  2. Guillermo dice:

    Excelente artículo! El trabajo sin fines de lucro que se hace en internet como en esta página siempre es de agradecer. Y cuando el trabajo lo ha hecho otro también es de agradecer. Recuerda que en el Blog del Informático de Guardia en el 2008 ya ha aparecido este artículo (http://andalinux.wordpress.com/2008/08/28/conexion-remota-por-vnc-inverso/). Lo más justo es que se haga mención de ello.

    Muchas gracias por esta transcripción.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *