viernes, 17 de octubre de 2014

Proxmox 3.1 vncproxy [2/2]


Esta es la segunda parte de un articulo (Proxmox 3.1 vncproxy [1/2]) que he publicado para conectar con un cliente vnc a las pantallas de las máquinas virtuales que corren bajo proxmox.

Es posible que no sepas como publicar la pantalla de la máquina virtual desde linea de comandos. Si lo haces desde el cliente web, este se encarga de levantar el demonio vnc para que puedas ver la pantalla. Pero si queremos evitar utilizar el cliente web, tendremos que levantar nosotros el demonio para poder conectarnos.

Tenemos dos opciones. Vamos a ver en primer lugar la más simple, que únicamente necesitamos el ejecutar el comando:
nc -l -p 5900 -c "/usr/sbin/qm vncproxy 101"
Donde 5900 es el puerto donde se publicará el servidor de vnc (5900 es el puerto por defecto de vnc) y 101 es el identificador de la máquina virtual en proxmox.

Éste método es muy cómodo pero implica tener que ejecutar el comando cada vez que queramos hacer uso de la pantalla de la máquina virtual. Creo que esto debería ser lo más correcto y no dejar publicada la pantalla de la máquina virtual, porque pese a que este demonio de vnc nos solicita las credenciales del sistema para acceder a la máquina virtual, no deja de ser una vulnerabilidad dejar publicado un servicio que utilizaremos puntualmente.

La segunda opción está orientada a dejar publicado el servicio siempre en nuestro sistema. Pero para esto tendremos que instalar un servicio si no lo tenemos instalado. Para sistemas Debian el paquete se llama "openbsd-inetd", lo instalaremos con:
apt-get install openbsd-inetd 
Una vez instalado editaremos el fichero /etc/inetd.conf para añadir la linea:
5900 stream tcp nowait root /usr/sbin/qm qm vncproxy 101
Y solo nos falta reiniciar el servicio "/etc/init.d/openbsd-inetd restart" para poder disfrutar de la pantalla de nuestra máquina virtual siembre que queramos.

IMPORTANTE: Los clientes VNC tradicionales NO funcionan con este sistema. Lee el artículo Proxmox 3.1 vncproxy [1/2] para ver como conectar correctamente con la pantalla de la máquina virtual.


Proxmox 3.1 vncproxy [1/2]


Me he encontrado un el siguiente problema cuando intento conectar con las pantallas de máquinas virtuales de Proxmox sin utilizar su cliente web. El cliente web es muy cómodo, pero un poco molesto cuando quieres hacer una conexión rápida y no tienes el navegador correctamente configurado (plugin de java y java correctamente configurado).

Por esto estaba buscando la forma de establecer conexiones vnc con el demonio que levanta proxmox sin necesidad de utilizar el cliente web.

El primer problema que me encontré fue que los clientes vncviewer y  xtightvncviewer me devolvían el mismo error...
jmruiz@jmruizhome :~/$ vncviewer 192.168.1.1:5900
Connected to RFB server, using protocol version 3.8
Server did not offer supported security type
jmruiz@jmruizhome :~/$ xtightvncviewer 192.168.1.1:5900
Connected to RFB server, using protocol version 3.8
Server did not offer supported security type
Pero encontré un cliente que permitía conectar sin problemas http://tigervnc.org/.

Si tus problemas simplemente eran solucionar el error "Connected to RFB server, using protocol version 3.8" y "Server did not offer supported security type" ya has encotrado la solución. Descarga he instala tigervnc https://bintray.com/tigervnc/stable/tigervnc/1.3.1 y podrás conectar sin problemas.

Para la versión de linux ten cuidado donde lo descomprimes; el fichero contiene dos directorios "/etc" y "/usr", está preparado para instalar en la raíz del sistema y sobrescribir vncviewer y vncserver. Pero si únicamente vas a utilizar el cliente puedes descomprimir el contenido del fichero en un directorio (tar xvzf fichero.tgz -C directoriodestino) y ejecutar usr/bin/vncviewer y el cliente te solicitará el host para conectarse o bien pasar como argumento directamente el host "usr/bin/vncviewer 192.168.1.1:5900".

Una vez que establece la conexión el servidor nos solicita que confirmemos el certificado ssl (esto es lo que no tienen implementado los clientes vncviewer y  xtightvncviewer ) y nos solicita las credenciales de acceso.


Es muy importante que pongamos usuario@pam en lugar de usuario únicamente, hay que decirle al demonio vnc donde ha de buscar los usuarios para la autenticación. En caso de tener un LDAP con dominio, obviamente pondremos el dominio.


Y por fin tendremos conexión con la pantalla de nuestra máquina virtual. Yo no soy partidario de utilizar VNC para el trabajo diario, pero en ocasiones es necesario ver qué está pasando en la pantalla de la máquina virtual y es complicado verla de forma remota.

Por si alguien no sabe como publicar con vnc la pantalla de una máquina virtual proxmox os dejo el siguiente artículo donde explico como hacerlo. Proxmox 3.1 vncproxy [2/2]