lunes, 8 de octubre de 2007

VNC, el escritorio remoto

Hemos hablado ya aquí de diversos servicios como: ftp, ssh que nos pueden ofrecer nuestros pc para incrementar su potencia. Ahora es hora de hablar de otro servicio muy interesante que nos abre un gran abanico de posibilidades como es el escritorio remoto.
Al principio de todo (no digo de la creación del hombre sino de los primeros computadores ;)) los ordenadores eran maquinas enormes que solían ocupar una habitación entera. Entonces la idea la tener para cada computadora para cada usuario con una entrada de teclado era una utopía. Es aquí donde aparece la necesidad de conectar diversas consolas a una maquina a través de una interfaz (podríamos decir que es aquí donde aparece al idea de crear un servicio parecido a lo que después será el ssh o telnet). Con el paso del tiempo los ordenadores fueron reduciendo su tamaño, evolucionando su tecnología y aumentando las prestaciones. Pero en la década de los 90 vuelve a surgir una revolución más. Los sistemas operativos eliminan parte de la interacción textual para dar vida a la interacción gráfica. Nacen los escritorios gráficos. Inicialmente en el sistema UNIX ya se pensó en la opción de poder conectar varios clientes a un mismo servidor gráfico. Esa es la filosofía (cliente-servidor) en la que se basa el x-windows (hemos hablado ya sobre el en este blog: "Las X y ese mundo tan confuso"). Hoy por hoy, en el año 2007, dispones de una gran variedad de productos que nos permiten acceder remotamente a nuestro ordenador con toda la potencia que ofrece el entorno gráfico. Además el avance en las velocidades de conexión aumentan más y mejor las prestaciones de estos servicios.

Existe una gran variedad de protocolos para la implantación de diversas soluciones para el escritorio remoto. Me voy a centrar únicamente en el VNC (que hace uso del protocolo "Remote FrameBuffer", para más información acerca del funcionamiento ir a aquí ), ya que es el más utilizado hoy por hoy además de ser código abierto, ligero, sencillo y multiplataforma.
VNC (Virtual Network Computing) es un programa que se utiliza para el control remoto de equipos. Podremos manejar el ordenador al cual estamos conectados (es decir podremos tener el control de recursos como el ratón, el teclado, la pantalla... ) como si estuviésemos delante de el. El programa se basa en la arquitectura cliente-servidor. En un ordenador (supuestamente el que queremos controlar y digo supuestamente porque después veremos que se pueden hacer conexiones inversas) ejecutamos el servidor y el en otro lanzaremos el cliente que controlara al ordenador del servidor.

Para realizar las prácticas usaré MS Windows como sistema operativo y el cliente/servidor VNC a utilizar será el TightVNC (ya que es una versión mejorada de VNC, optimizada para conexiones lentas que comprime el tráfico usando un algoritmo de compresión propio). Existe también una versión la Linux. Para instalarla solo tenemos que ejecutar la orden "apt-get install tightvncserver xtightvncviewer" si queremos instalar tanto el cliente como el servidor (para hacer nuestras pruebas) o elegir el cliente o el servidor dependiendo de lo que queramos instalar.
Para instalar el tightVNC para Window tenemos que dirigirnos a la página del proyecto. Podemos descargarnos una versión sin instalación muy útil para ejecutarlo en cualquier maquina donde estemos sin necesidad de instalarlo en el propio sistema, y otra versión con instalación. Su ejecución es muy fácil. En la maquina a la cual queremos administrar remotamente lanzamos el servidor. Veremos que en la parte inferior derecha (en la barra de inicio) nos aparece un nuevo icono con una "V", que nos indica que se esta ejecutando el servidor correctamente. Abriremos ahora el programa (es decir, el servidor, haciendo clic con el botón derecho sobre el icono en forma de "V"), cambiaremos el password y dejaremos las demás opciones como están.
Ahora le toca el turno al cliente. En la maquina donde queremos controlar al servidor lanzamos el cliente (como vemos es una aplicación muy sencilla). Solamente tendremos que introducir su dirección ip o el nombre del host y automáticamente tendremos acceso a la maquina donde esta instalado el servidor. Recordar que habrá que mapear/nattear los puertos del router para que el puerto utilizado por el VNC apunte hacia nuestro ordenador. Estos puertos son: 5900, 5800 (tendremos que abrir dichos puertos en el servidor).
Si tenemos una maquina a la cual vamos a administrar remotamente muchas veces, seria interesante ponerle un programa tipo noip o dyndns, para poder acceder a el siempre que queramos mediante un nombre de host. Como hacer esto, lo hemos visto en "Dyndns,tu ip fija (o casi)".

Existe también otra forma de conectarnos al servidor que no sea mediante el cliente del tightVNC: el navegador. Si escribiremos "nombre_del_host:5800" en la barra de direcciones, podremos controlar remotamente también el servidor mediante el navegador.
También existe la posibilidad de hacer conexiones inversas. A todos nos ha pasado el caso de estar en una red que no es de propiedad y no poder tener acceso al router para natear los puertos. En estas situaciones podemos hacer conexiones inversas. Será el servidor el que se conecte al cliente y no al revés. Para ello lanzaremos el cliente en modo "Listening Mode". En la parte del servidor lo lanzaremos, haremos clic en el botón derecho sobre el icono del TightVNC que aparece en la barra de inicio (en la esquina inferior derecha), y seleccionamos la opción "Add New Client". Aquí le indicaremos el nombre del host de la maquina cliente. Cuando el cliente vea que el servidor se ha ejecutado. Automáticamente obtendremos el control sobre el servidor. Señalar que para poder realizar las conexiones inversas hay que abrir el puerto 5500 (o el que nosotros elijamos, se pude cambiar) en el cliente.

Por ultimo y para terminar, un importante dato. Las conexiones VNC no van cifradas. Así que cualquier visitante que tengamos podría husmear el tráfico de la red. Eso si, la contraseñan no se envía en texto plano sino que utiliza un mecanismo llamado desafió-repuesta, pero el resto de la conexión no va cifrado. Para cifrar las conexiones se pueden utilizar otro tipo de programas como UltraVNC o utilizar VNC sobre ssh.

Espero que sirva de ayuda, y así poder aumentar la potencia de nuestro PC.
Un saludo.

No hay comentarios: