Administrar varios servidores GNU/Linux con Cockpit

Administro varios servidores con Linux, en casa, VPS remotos, AWS, Google Cloud Platform de manera metódica por línea de comandos, no me gusta emplear paneles de control tipo cPanel o webmin. A veces uso servicios como UptimeRobot para verificar si están en línea. Hace poco decidí darle la oportunidad al proyecto Cockpit, que viene siendo una interfaz administrativa interactiva web y que dicho sea de paso, me permite tener en un solo lugar estadísticas, logs y otras herramientas de monitoreo de diversos servicios.

Como la mayor parte del tiempo uso Debian ya sea Buster o Stretch. He decidio instalarlo de la manera más fácil posible como siempre.

$ sudo apt install cockpit

Acto seguido se instalarán todas las dependencias y el programa en si.

A pesar que se trata de un programa que podemos acceder vía web. No tenemos que tocar apache, nginx ni andar configurando vhosts. Todo funciona desde que lo instalas. La documentación describe que se puede ingresar al servicio con escribir direccion-ip:9090 en el navegador web. Sin embargo como utilizo ufw esto no me funciono ni con el nombre de dominio, ni con la dirección ip ya que solo he permitido el tráfico para los puertos 22, 80 y 443. Pero estando logueado dentro del servidor donde lo instale, con curl pude verificar que si funcionaba en el localhost con curl -Is localhost:9090.

Así que me ha parecido más practico este comportamiento, pues es mucho más seguro crear un túnel SSH e ingresar de esta manera que tener abierto un puerto más, escuchando a todo el mundo. Para crear el tunel SSH:

$ ssh -N -L 9090:127.0.0.1:9090 usuario@host-ssh-remoto

Ahora en nuestro navegador, vamos a localhost:9090 y veremos una pantalla de inicio de sesión.

Ingresar usando usuario/contraseña del sistema

Para ingresar solo hay que emplear el mismo usuario y contraseña del sistema, si tiene superpoderes sudo podremos realizar otras tareas avanzadas e incluso instalar programas o actualizar paquetes, solo hay que marcar al momento de ingresar la casilla «Reutilizar mi contraseña para tareas privilegiadas».

Una vez dentro, veremos en la sección localhost información esencial sobre nuestro servidor y algunas gráficas con indicadores del sistema.

Resumen de información de Cockpit

Si queremos centralizar las estadísticas de varios servidores, utilizaremos el tablero. Para ello, previamente debemos instalar cockpit en cada uno de los servidores que vayamos a agregar.

Añadiendo más servidores para monitorear

Una vez añadidas las credenciales del servidor nuevo, inmediatamente se mostrará el tablero de ese servidor. Para regresar y ver las estadísticas conjuntas volvemos al tablero.

Si deseamos almacenar las métricas, en la información de resumen que se muestra al conectarse al servidor, hay un enlace que dice «Habilitar métricas almacenadas», esto instalará unas dependencias para que cockpit pueda almacenar todos estos datos.

Dependencias para las métricas

Ya para terminar, definitivamente cockpit es un programa muy interesante y potente con una interfaz bien cuidada. Quizás no sea tan potente como Nagios, que es el estándar de facto para monitoreo de servidores, pero es una muy buena alternativa open source que merece la oportunidad.

Armando una red doméstica nivel enterprise

Mi caminar por las redes WiFi empezó con el Linksys WRT54G hace ya varios años atrás, en ese entonces estaban de moda estos «routers» inalámbricos que hacían la función de varios dispositivos simultáneamente. Un día me tocó como estudiante en la facultad de medicina, configurar uno de estos aparatos para que su señal cubriera el edificio donde está la biblioteca y que permitiera la conexión de otros estudiantes, miembros del CIMTe (Club de Informática Médica y Telemedicina).

Lo primero que hicimos fue cambiar las antenas por otras de mayor ganancia. El resultado fue que había cobertura en el edificio, parte de los salones de estudio, en el parque Finlay y aún se lograba cierta recepción en el salón de anatomía (mala de hecho).

Luego, decidimos abrir el compás y permitir que el resto de los compañeros se conectarán a la red, previo registro para garantizar el acceso democrático para todos. Aquí fue donde comenzaron a fallar las cosas. La capacidad que tenía de manera innata este legendario aparato se quedaba corta, o mejor dicho su firmware de fábrica nos limitaba. Así que explorando opciones llegamos a la conclusión de instalar DD-WRT en ese aparato. Todo fue de maravillas y hacíamos el filtrado de los clientes por una lista por mac address de su dispositivo. Llegó incluso a recordar que desarrollé una mini webapp dentro del pobre dispositivo desde donde ingresabamos los datos de quién nos solicitaba el acceso alimentando así la lista para el filtrado por mac address e incluso pensamos expandir la red con varios access point por toda la facultad de medicina.

Durante el proceso, varios dispositivos murieron y quedaron brickeados para siempre. Luego vino la Universidad de Panamá y nos instalo un sistema llamado UP WiFi que daba internet en todo el campus y nuestro sistema perdió relevancia. Sin embargo, la experiencia de ese entonces me hizo instalarle a cada dispositivo WiFi que adquiriera después de eso una distro, ya fuera Open-WRT o DD-WRT. Con el tiempo vino el aumento de la velocidad de internet de los proveedores y se comenzó a hacer obvio un problema que no había notado antes, el rendimiento de la red comenzaba a afectarse y se obtenían velocidades no tan buenas o costaba descargar o abrir ciertos sitios web, incluso Netflix tardaba a veces en cargar los flujos de streaming.

Este problema tiene su raíz en dos cosas, el mismo «router inalámbrico» y las redes inalámbricas vecinas. Coloco entre comillas router inalámbrico porque en realidad se trata de un aparato que cumple 3 funciones que en redes de verdad es realizada por 3 dispositivos diferentes: el router, el switch y el access point. Básicamente estos enlatados son 3 dispositivos en 1, pero no sé logran desempeñar haciendo bien las 3 funciones, es por esto que hay tantas fallas o lentitud en las redes.

El otro problema es la presencia de redes vecinas. Imagina que todos tus vecinos tengan sus bocinas funcionando a todo volumen, ¿qué tendríamos? Un caos auditivo, donde no se entendería nada. Lo mismo pasa con las redes WiFi, al existir muchas, nuestros dispositivos no «escuchan» bien a la nuestra y por consiguiente no se pueden comunicar con el punto de acceso y luego vienen las páginas que no cargan o demoran en cargar. Así que cuando me mudé a mi casa deje de usar estos aparatos todo en uno y decidí armar una red doméstica de nivel entreprise.

Lo que hice fue irme por una marca ampliamente utilizada en el mundo enterprise, Ubiquiti. Si bien, la inversión no es barata, la estabilidad que gané con ella creo justifica lo que invertí en ella. Entre el arsenal de dispositivos de mi hogar hay 15 dispositivos inalámbricos y al menos 8 que requieren conexión cableada.

El reto es el siguiente, lograr cobertura Wifi excelente en toda la casa, usando el mismo SSID. Es decir, no tener varias redes que digan COCINA, SALA, DORMITORIO… etc. Ni tampoco separarlas en 2.4 GHz / 5 GHz.

Adquirí el siguiente equipo para este cometido: 1 Unifi Security Gateway (USG), 1 Ubiquiti EdgeSwitch 5XP POE (ES-5XP), 1 Unifi Access Point AC Long Range (UAP-AC-LR), 1 Unifi Cloud Key (UC-CK).

La configuración base es la siguiente: el módem está conectado al puerto WAN del USG, del puerto LAN 1 se conecta el ES-5XP y del último puerto de este se conecta el UAP-AC-LR. En esta configuración el switch como es POE alimenta el UAP-AC-LR. Cabe destacar que con esta configuración tengo cobertura hasta el parque cerca de mi casa que está a unos 100 m de distancia. Gracias a un colega, que va a realizar una implementación similar en su casa, tengo en préstamo 3 UAP-AC-LR y con esto haré las pruebas.

La gestión de casi todos los equipos se puede hacer con el UC-CK que está conectado a uno de los puertos del ES-5XP, excepto del mismo switch que no pertenece a la línea Unifi. Desde este último podemos controlar vlans y activar la función PoE de un puerto en particular.

Hasta aquí esta primera entrada sobre el tema. En la siguiente explorare varias maneras de realizar el reto propuesto y evaluaré cual de estas tiene mejor desempeño para los dispositivos.