Conexión mediante VNC inverso

Este tutorial pretende explicaros como realizar una conexión de vnc inverso, ¿que es esto de inverso? pues normalmente para conectar mediante vnc o cualquier protocolo que sirva para administración remota, enviamos una petición de conexión desde el ordenador en el que estamos al cliente que queremos administrar.

En este caso, lo que hacemos es enviar la petición de conexión desde el cliente a nuestro ordenador.

En un principio puede parecer algo inútil, ya que es necesario que alguien esté frente al equipo remoto para que envíe esa conexión al nuestro y podamos controlarlo, (aunque siemre podemos programarlo con cron o anacron) sin embargo esto es verdaderamente útil cuando el equipo al que queremos conectar está detrás de un proxy o un firewall que impida las conexiones entrantes. O simplemente un usuario al que queremos dar soporte es tan inexperto que no sabe mapear los puertos de su router para hacer una conexión vnc normal y corriente.

Los requisitos para el ordenador del cliente son mínimos, solo tiene que tener instalado x11vnc

sudo aptitude install x11vnc

Los requisitos para nuestro equipo son similares:

El mismo programa ha de estar instalado en el ordenador desde el que queremos controlar al otro equipo claro, y además tendremos que abrir en nuestro router un puerto para que el ordenador remoto conecte al nuestro.

Podemos abrir el puerto que queramos, vncviewer por defecto usa el 5500, si abrimos ese los comandos de conexión no requerirán que introduzcamos el número del puerto, pero siempre es más inseguro utilizar los puertos que las aplicaciones tienen asignados por defecto.

Con esto ya estamos listos para escuchar en ese puerto solicitudes de conexión:

vncviewer -listen 5500

poner el puerto 5500 no es necesario ya que como he dicho es el que viene por defecto, pero lo he puesto para que veáis la sintaxis del mismo, si habéis mapeado un puerto diferente solo tenéis que cambiar el número.

y con esto ya estamos listos para administrar de forma remota el otro equipo en el momento que este nos envíe la petición, desde el equipo remoto se ha de introducir este comando (podemos pasarselo a nuestro "cliente" para que lo copie y pegue en un terminal o podríamos haberlo programado como ya he comentado antes:

x11vnc -connect xxx.xxx.xxx.xxx:5500

sustituimos claro está las x por nuestra ip externa. también podemos utilizar un dominio no-ip por si nuestra ip es dinámica y queremos programar esa conexión de alguna manera.

Como véis es realmente sencillo y puede ser útil para conectar a ordenadores remotos cuando estos no tengan la posibilidad de mapear puertos en un router.

Saludos a todos