FreeNX – Algo más que un ‘Términal Server’ mejorado (alternativa a vnc server en Linux)
Enviado por miguelcarmona :: 11 de enero de 2009
La empresa Italiana nomachine hace ya bastante tiempo, liberó gran parte del código de su servidor «NX Server», el cual viene a ser algo parecido a un servidor vnc pero con una integración nativa con el servidor Xorg, de forma que brinda un espectacular rendimiento con un bajísimo consumo de recursos. A partir de esta liberación del código, se creo el proyecto freenx, que nos brinda esta tecnología totalmente libre.
En openSuse, la instalación del servidor biene a ser bien fácil:
Método automático (recomendado)
Método manual (consola)
Para las versiones posteriores a openSuse 11.1 (incluida), hay que añadir el repositiorio http://download.opensuse.org/repositories/X11:/RemoteDesktop/ + la versión de openSuse que se utilice.
Una vez añadido dicho repositorio, instalamos el servidor freenx.
zypper install FreeNX
Configurar el servicio (para ambos métodos):
nxsetup --install --auto --setup-nomachine-key --clean
Se ha configurado con la llave de nomachine. ¿El por qué? Esta empresa tiene un proyecto de cliente basado en java, así que podemos tener el cliente en cualquier máquina sin necesidad de instalarlo básicamente entrando a una dirección web donde lo alojemos.
Bueno, con esto ya tenemos el servidor funcionando. Ya sólo nos quedaría instalar el cliente y realizar la conexión. Decir que el servidor freenx utiliza openssh como capa de abstracción de comunicación y seguridad, por lo que si ya tenemos acceso a este puerto, no habría que hacer ninguna configuración ni en el cortafuegos de esta máquina ni en los routers a atravesar hasta llegar a la misma.
En la dirección http://www.nomachine.com/download.php tenemos varios clientes para su instalación en distintas plataformas. Para el caso, yo escojí el cliente para linux en su versión rpm.
Lo descargamos y bastaría con un (como root y lógicamente corregir el nombre del paquete según el que hayamos descargado):
rpm -i nxclient-3.3.0-3.i386.rpm
Una vez instalado, y en su primera ejecución, nos aparece un asistente de conexión el cual es bien sencillo y no da error alguno sobre su configuración. Aún así, os dejo unas captura de ejemplo:
- Session: Nombre con el que identificaremos la conexión a este servidor con esta configuración.
- Host: Nombre o ip del servidor freenx a conectarse.
Una vez finalicemos, aparecerá la pantalla para hacer login con los datos de algún usuario de la máquina donde instalamos el servidor freenx.
Como vemos, se puede elegir el tipo de sesión para la conexión. Esto es muy útil no sólo para conectarse a distintas máquinas, sino para hacerlo a la misma con distintas configuraciones.
Una vez introducidos los correctos datos, veremos como se realiza la conexión perfectamente (y quedaría como la primera imagen donde se realiza una captura del cliente/servidor en ejecución).
No hay que decir que para que la conexión se establezca, y ya que depende del servicio openssh, este debe estar en funcionamiento y configurado en el cortafuegos para aceptar conexiones.
Importante:
Al conectarme al servidor, la codificación del teclado se queda por defecto en americana. Tras buscar sobre este problema en sus páginas, dí con que ese error se había reportado hace ya bastante tiempo y aún no se le ha dado solución, por lo que recurrí a xmodmap, de forma que hice:
xmodmap -pke > /opt/xmodmap
Con esa línea guardo en /opt la configuración actual del teclado (para escribir en /opt deben ser root).
Básicamente, con este mapa del teclado podemos establecer la configuración del mismo al iniciar sesión como el usuario, así que como utilizo kde3, creo un script bash para autoejecutarse al iniciar sesión en kde.
vim /opt/kde3/share/autostart/teclado.espanol.sh
Dentro de este archivo introducimos:
#!/bin/bash
xmodmap /opt/xmodmap
Guardamos y damos permisos de ejecución
chmod +x /opt/kde3/share/autostart/teclado.espanol.sh
De esta forma, para cada usuario que inicie sesión, se cargará la configuración que nos permitirá tener el teclado en español.
El rendimiento de este servicio, en comparación con vnc (en todas sus plataformas y software del estilo -como remote administrator, etc…-) o el servidor Terminal Server de Microsoft, es alucinante, pudiéndose ver incluso vídeos (a un tamaño pequeño y considerable para su fluidez) y con una compresión y ahorro de ancho de banda impresionantes (sobre una conexión adsl con 320 kbits/s de subidad, se trabaja con una espeluznante fluidez).
Otra curiosidad que me llamó bastante la atención fue que no es necesario tener un servidor X corriendo, de forma que la máquina se puede detener en el servicio de ejecución 3 (init 3) y aún así, al realizar la conexión, se realizaría correctamente. Muy útil para servidores los cuales no tendrían que tener unos recursos ocupados con el servidor X para esperar las conexiones (como pasa con vnc).
Por último indicar que el servidor freenx no sólo es un servidor magnífico para conexiones gráficas remotas, sino que es capaz de servir de pasarela para servidores RDP (conexión de escritorio remoto de Microsoft – Terminal Server) y VNC.
Referencias y configuraciones adicionales: