Escenario
En el trabajo usamos Apache Guacamole para conectarnos a nuestros escritorios de la oficina desde casa. Apache Guacamole proporciona una puerta de entrada HTML5 para conectar con servicios de acceso remoto, como pueden ser VNC o RDP. Consta de dos : el servidor y el cliente que no tienen por qué correr en la misma máquina. El servidor es un demonio (guacd) que se instala compilando el código fuente en un servidor Linux. El cliente es una aplicación HTML5 empaquetada en un war para desplegado en un tomcat. La configuración es sencilla, básicamente consiste en un fichero de propiedades en el que se define los usuarios autorizados y las máquinas en las que corre el servicio al que desean conectarse. Una vez arrancado el demonio y el tomcat, el usuario pueden acceder a través de una interfaz web a sus escritorios. La ventaja de esta solución es que podemos enjaular a los usuarios en sus máquinas de la oficina, bajo las reglas y filtros del firewall interno. De este modo no nos tenemos que preocupar por los ordenadores que los usuarios emplean para acceder a nuestros recursos.Problema
Cuando instalamos el sistema hace un año y medio, la versión más reciente de Apache Guacamole era la 1.0. Desde un principio los compañeros que lo usaban han reportado que, cada cierto tiempo y de manera aleatoria, se corta la conexión a su escritorio remoto y han de esperar unos segundos para reconectar. En su día estuvimos investigando cómo arreglar el problema pero no dimos con ninguna solución. Hace un par de semanas se ha incorporado un nuevo compañero que, de momento, solo ha trabajado desde casa. En repetidas ocasiones me ha avisado que su conexión era inestable. En un principio no lo relacioné con el otro problema y estuve conectándome a su máquina para ver si podía dar con la causa, sin éxito. La siguiente vez que este compañero se queja por un canal de Slack, otro compañero que acaba de volver de vacaciones le informa que es un problema que llevamos arrastrando desde hace más de un año. Me digo que voy a echar otro vistazo al servidor donde tenemos instalado el Apache Guacamole. En el fichero de syslog, aparece repetido este error:
1 2 3 4 |
guacd[18133]: Error reading from TLS: The TLS connection was non-properly terminated.. guacd[18133]: read (4: Interrupted system call) guacd[18133]: Error handling message from VNC server. guacd[18133]: Internal VNC client disconnected |
Solución
Tras una búsqueda en Google doy con la página de las notas del lanzamiento de la versión 1.2 de Apache Guacamole en la que, entre otras cosas, anuncian que han arreglado el siguiente bug: VNC support for TLS: No he visto ninguna documentación de cómo actualizar el Apache Guacamole de la versión 1.0 a la 1.2, así que he tenido que hacerlo siguiendo la de la instalación y cerciorándome de que tenía las copias de seguridad necesarias. Estos son los pasos que he seguido:- wget https://apache.brunneis.com/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz
- tar -xvzf guacamole-server-1.2.0.tar.gz
- cd guacamole-server-1.2.0/
- ./configure --with-init-dir=/etc/init.d
- make
- sudo make install
- sudo ldconfig (para actualizar el caché de las librerías del sistema)
- systemctl stop guacd
- systemctl start guacd
- sudo systemctl enable guacd (por si no estuviera ya habilitado)
- wget https://apache.brunneis.com/guacamole/1.2.0/binary/guacamole-1.2.0.war
- sudo mv /etc/guacamole/guacamole-1.2.0.war /etc/guacamole/guacamole.war
- sudo ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/ (si ya existía el enlace simbólico, dará un error que podemos ignorar)
- sudo systemctl restart tomcat8