Clientes ligeros con LTSP en Ubuntu Server 16.04 (Guía exhaustiva)

Gracias, Antonio de Autodefensa Informática, por el tiempo y el esfuerzo dedicado a traducir esta guía al castellano.

Imagina la situación: eres un Administrador de Sistemas y tu jefe quiere gastar lo mínimo posible en componentes al añadir una nueva división a la empresa. Y te encomienda la tarea. Si se entera de que has gastado más dinero de lo necesario, te despide. Has oído hablar sobre LTSP, pero poco más. Este es tu momento.

LTSP, el Proyecto de Servidor de Terminales Linux, es un servidor que, configurado correctamente, puede ahorrar un montón de dinero a las empresas, puesto que requiere pequeñas cantidades de componentes para muchos puestos de trabajo, al mismo tiempo que mantiene la seguridad, el software y los sistemas operativos al día con un mínimo esfuerzo. Primero, los antecedentes.

Cuando un ordenador arranca, carga el kernel, que a su vez carga el resto del sistema operativo, todo desde el disco duro interno de la máquina física que estás usando. Imagina una máquina sin disco duro, sin disco de estado sólido, sin M.2, sin NVMe; sin capacidad de almacenamiento en absoluto. ¡ESTO ES SPART…!- un cliente ligero.


Para empezar, necesitamos definir las características del hardware que vamos a usar. La CPU no es muy importante, puesto que la que se usará será la del cliente ligero; sin embargo, la RAM será importante, ya que todas las aplicaciones se ejecutarán en el servidor local cuando se arranquen en los clientes ligeros. Mi regla general sería empezar con 1 GB de RAM, y añadir 300 MB de RAM por cada cliente ligero (cada máquina) que se conectará simultáneamente al servidor LTSP. Esta cantidad puede variar, dependiendo de la clase de software que asignes a los equipos.

En segundo lugar, tenemos que pensar las aplicaciones que vamos a instalar por petición de quien esté al mando. En mi caso, se me pidió que, como mínimo, debía contar con un navegador web, LibreOffice y gcc en los clientes ligeros.

Por último, debemos considerar cuántas personas usarán el sistema. Esto es necesario para calcular qué cantidad de almacenamiento montaremos en el directorio /home. De forma general, recomiendo 5 GB por máquina que acceda al servidor. Más allá de esta recomendación, quizá deban hacerse ajustes para alguien que necesite más espacio, aunque no me imagino por qué alguien podría necesitar más espacio al usar un cliente ligero.

Una vez dicho esto, comencemos con la instalación y la configuración.


En primer paso, claro está, sería instalar el sistema operativo. Para esta ocasión, se me requiere usar Ubuntu 16.04 LTS Xenial Xerus. Sigue la guía que encontrarás aquí. Si esa guía no es lo bastante completa para ti, por favor déjalo. Esta guía está pensada para gente que sabe de Administración de Sistemas.

Nota: si necesitas acceso remoto al servidor LTSP, no olvides instalar el paquete OpenSSH.

Una vez que el Servidor Ubuntu esté instalado, arráncalo y autentícate, y configura las tarjetas de red. Puesto que ejecutaremos un servidor DHCP en esta máquina, querrás al menos dos: una que se conecte a internet y otra a la red LTSP. Usaremos NAT más adelante para redirigir el tráfico entre internet y la red LTSP.

Con las tarjetas de red configuradas, actualiza la lista de paquetes con sudo apt-get update y actualiza los paquetes con sudo apt-get upgrade. De esta forma tendrás los paquetes de seguridad más recientes. Si quieres aprender sobre cómo asegurar tu servidor más allá de una simple actualización de paquetes, lee esta guía práctica.

Cuando hayas terminado, instala los paquetes LTSP y NFSD:

sudo apt-get install ltsp-server-standalone nfs-kernel-server

A continuación vamos a preparar la imagen que cada cliente ligero descargará en el arranque, ejecutando sudo ltsp-build-client. Esto puede tardar un poco dependiendo de tu conexión a internet, así que, mientras se prepara dicha imagen, vamos a configurar el servidor DHCP que la va a entregar a los clientes ligeros que se conecten al servidor LTSP. Pulsa alt+f2 y autentícate en la segunda terminal de tu servidor. Vamos a por el archivo /etc/ltsp/dhcpd.conf. Ábrelo con tu editor de texto favorito; yo usaré nanosimplemente porque estoy acostumbrado, y editaremos un montón de cosas aquí y allá.

Para este servidor DHCP, usaré la red 172.16.0.0, con la máscara de red 255.255.0.0 (la configuración clásica tipo B de una red privada) aunque, por supuesto, tú puedes decidir sobre la configuración de tu red (por ejemplo, usando una configuración del tipo 192.168.x.x/24). Tomando como base la imagen de abajo, describiré la configuración que he creado.

En la línea 7 tenemos la directiva que declara a este DHCP como el servidor principal de la red.

Con la línea 9, configuramos dhcpd para que escuche en la red 172.16.0.0/16. La línea 10 nos dice que las direcciones IP que se le entregarán a los clientes estarán en el rango 172.16.0.100 y 172.16.0.255, ya que hemos escogido la máscara de red 255.255.0.0, como en la línea 17. En la línea 11, hemos elegido ltsp.net como nombre de dominio para la subred, pero puede ser cualquier nombre que quieras.

Nota: al elegir el nombre de un subdominio, es preferible usar un dominio de primer nivel inalcanzable (como .lan o .ltsp).

Puesto que he elegido la dirección IP estática para el servidor LTSP 172.16.0.1 y este servidor hará de NAT para los clientes ligeros, la línea 15 define la dirección del servidor, y los enrutadores van en la línea 14. Por último, para NAT, configura la opción servidores de nombre de dominio (DNS) en la línea 12 con las direcciones de los servidores DNS con los que queremos conectarnos a internet (por ejempo, 192.99.85.244 de OpenNIC, o la dirección IP de tu router).

Ahora, guarda el archivo de configuración y abre /etc/dhcp/dhcpd.conf, en el que debes incluir "/etc/ltsp/dhcpd.conf" al final del archivo. Guárdalo, y vayamos ahora a la configuración de las exportaciones NFS.

Abre /etc/exports/ y añade /opt/ltsp *(ro,no_root_squash,async,no_subtree_check) al final del archivo, luego lo guardas.

Puesto que el servidor DHCP aún no está configurado para ejecutarse en el arranque, lo habilitaremos y lo arrancaremos:

sudo systemctl enable isc-dhcp-server && sudo systemctl start isc-dhcp-server

Nota: cuando busques el proceso, aparecerá como dhcpd y no como isc-dhcp-server.

Una vez que arranque sin errores (a mí me pasa muchas veces, se me escapa un 5 por aquí o un punto y coma por allí, comprueba /var/log/syslog), pasamos a instalar más software.

Como he mencionado anteriormente, se me ordenó que instalara LibreOffice, gcc y algún navegador web. También me dijeron que debería haber algún entorno de escritorio ligero, para lo que he elegido LXDE. LXDE se instala con un navegador web (Firefox ESR), así que esa parte ya estaría hecha.

Primero, necesitamos situarnos en el directorio raíz LTSP de los clientes, con lo que ejecutaremos:

sudo chroot /opt/ltsp/amd64

Al cambiar de directorio raíz, las peticiones DNS se enviarán al servidor DNS que se configuró en el servidor Ubuntu cuando instalamos y construimos la imagen de cliente. Tendremos que cambiarlo en /etc/resolv.conf/ desde dentro del chroot; yo he configurado el mío con 192.99.85.244 y 128.52.130.209.

Antes de instalar los paquetes, necesitamos ejecutar mount -t proc proc /proc lo que evitará los errores de instalación de java que se muestran en la imagen a continuación.

Instalamos los paquetes:

sudo apt-get install libreoffice gcc lxde

Esto puede tardar un rato. Te dará un error al final de la instalación, diciendo que unos pocos paquetes no han podido ser instalados.

Esto es porque algunos de ellos requieren una máquina en funcionamiento para poder instalarse. Terminaremos este paso más adelante en los clientes.

En este punto tenemos que añadir a las usuarias. Sal del chroot y añade a las usuarias en el servidor. Cualquier cuenta con acceso de root (por ejemplo, la cuenta de administración), debería añadirse con el siguiente comando:

useradd -g users -G sudo -m -s /bin/bash <username>

Primero va la orden. Después, la directiva -g marca el grupo al que pertenece la usuaria, siendo en este caso el grupo users. La directiva -G sudo indica a useradd que también añada a esta usuaria al grupo sudo. -m ordena crear el directorio /home si no existe ya. -s /bin/bash le dice auseradd que use bash como consola. Por supuesto, el último parámetro es el nombre de la usuaria.

Las usuarias normales se puede añadir con el siguiente comando:

useradd -g users -m -s /bin/bash <username>

Nota: no olvides configurar las contraseñas para todas las usuarias.

Una vez añadidas todas las usuarias, instalado el software y los archivos de configuración modificados y guardados, ejecuta sudo ltsp-update-image para reconstruir la imagen con los cambios que hemos hecho. Puede llevar un rato.

Ahora que la mayoría de los cambios se han realizado e integrado en la imagen de los clientes, configuraremos NAT entre la red LTSP e internet.

En el servidor LTSP, descomenta net.ipv4.ip_forward=1 en el archivo /etc/sysctl.conf.

Para activar inmediatamente esta configuración, ejecuta sudo sysctl -w net.ipv4.ip_forward=1. También puedes reiniciar para activarla.

A continuación tenemos que configurar la regla de iptables que habilitará NAT. Puesto que la dirección de red y la máscara de subred de nuestro LTSP es 172.16.0.0/16, el comando sería el siguiente:

sudo iptables --table nat --append POSTROUTING --jump MASQUERADE --source 172.16.0.0/16

Nota: este comando no funcionará en todas partes; cambia la dirección y/o la máscara de subred para que se adapte a tu configuración de red.

Guarda la configuración ejecutando sudo bash -c 'iptables-save > /etc/ltsp/nat.

Para habilitar estos cambios en el arranque, añadiremos una directiva iptables-restore a la interfaz conectada a la red LTSP, en el archivo de configuración de tarjetas de red, de esta forma:

Por último, crea el archivo /var/lib/tftpboot/ltsp/amd64/lts.conf y añade lo siguiente:

[default]
LDM_SESSION = /usr/bin/lxsession

Guarda el archivo, ¡y ya lo tenemos!

Puedes habilitar el arranque por PXE en tu cliente ligero a través de la BIOS, o pulsando F12 en la mayoría de máquinas. Mientras que el cliente ligero esté correctamente conectado a la red LTSP que has configurado, deberías poder arrancar desde el servidor LTSP desde este momento.

Nota: si has instalado otro entorno de escritorio, busca el ejecutable que comenzará la sesión en/usr/bin.


Algunas consideraciones finales:

  • Siempre que realices cambios a los paquetes de software en la imagen de los clientes, asegúrate de actualizar la imagen con ltsp-update-image.

  • No hace falta actualizar la imagen al añadir nuevas usuarias.

  • Los clientes ligeros, en esta configuración, no necesitan ninguna unidad de almacenamiento interno, y 512 MB de RAM deberían ser suficientes en la mayoría de los casos.

  • Desde luego, esta no es la única configuración que puedes implementar. Visita ltsp.org para más información acerca de otras posibilidades. Canonical también tiene más información aquí y aquí, y aunque puede que parte de la información en la web de Canonical esté desfasada y que digan que es aplicable en versiones anteriores, buena parte de esa información servirá para la versión actual de LTSP.

  • Si quieres usar una RaspberryPi 3 como cliente ligero, por favor, lee este tutorial de su web. Es poco probable que se pueda arrancar mediante PXE en los modelos anteriores de la RaspberryPi.

  • Esta guía es un proyecto que me asignó mi profesor de *nix. Las opciones del software utilizado fueron especificadas por el profesor.

  • No tienes que configurar NAT en el servidor LTSP si puedes conectar directamente los clientes ligeros al router principal mediante un switch. En ese caso, tendrías que configurar la directiva option routers apuntando a la dirección IP de la interfaz a la que se conecta el switch.

¡Gracias por la lectura! Si tienes alguna historia exitosa con las experiencias al seguir esta guía general, ¡puedes escribir un comentario y compartir tu experiencia!

Además, si buscas algún tipo de solución para los clientes ligeros, ten en cuenta los Dell Wyse, que tienen una calificación de cuatro huevos en Newegg.

Esta publicación cuenta con una licencia CC BY-NC-SA Creative Commons

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.