LTSP

image Salle_LTSP.png (62.8kB)
Salle LTSP
Linux Terminal Server Project est un ensemble de services permettant à plusieurs ordinateurs d'un réseau local (clients LTSP) d'utiliser une même installation (serveur LTSP). La maintenance matérielle et logicielle s'en trouve facilitée et un utilisateur peut se connecter sur n'importe quel poste du réseau local LTSP pour accéder à sa session. Cette technologie est largement utilisée dans les salles en libre-accès (écoles, universités, bibliothèque, etc..). En s'inspirant de la documentation officielle , nous décrirons ci-dessous la mise en place d'une salle en libre accès avec la configuration réseau ci-contre.

Principe de fonctionnement


1. Le client démarre depuis le réseau (Preboot eXecution Environment) : il commence par réclamer via DHCP son adresse IP ainsi que celle du serveur LTSP.
2. Le client charge ensuite le noyau Linux depuis une image pré-configurée sur le serveur LTSP, via le service TFTP lancé sur le serveur LTSP.
3. Le client monte le système de fichiers racine via le service NFS lancé sur le serveur LTSP.
4. Le client charge le système d'exploitation GNU/Linux (depuis le système de fichiers racine via NFS) et démarre le gestionnaire graphique X.
5. Le client établit un tunnel SSH vers l'environnement X du serveur LTSP, puis l'utilise pour lancer le gestionnaire d'affichage LDM depuis le serveur LTSP.

Installation du serveur LTSP


Préparation du système

sudo apt purge --yes --auto-remove indicator-application mate-hud snapd
sudo apt install --yes synaptic


Ajout des dépôts LTSP

sudo add-apt-repository --yes ppa:ltsp
sudo apt update


Installation des différents services

sudo apt install --install-recommends ltsp ltsp-binaries dnsmasq nfs-kernel-server openssh-server squashfs-tools ethtool net-tools epoptes

- ltsp contient le code LTSP.
- dnsmasq fournit les services TFTP, DHCP et DNS (alternatives à isc-dhcp-server et tftpd-hpa utilisés pour le PXE).
- nfs-kernel-server permet d'exporter les images au client via NFS.
- openssh-server fournit le service SSHFS utilisé pour l'authentification des clients et le montage du répertoire personnel.
- ethtool, net-tools offrent des services de gestion de flux réseau.
- epoptes permet la supervision et la prise en main à distance des clients , une fois ajouté l'utilisateur courant au groupe epoptes : sudo gpasswd -a $USER epoptes

Configuration du serveur LTSP


Configuration du réseau

2 options :
- une seule interface (WAN)
sudo ltsp dnsmasq
- 2 interfaces (une LAN et une WAN) - solution retenue à Défis : attribution de l'adresse statique 192.168.67.1 à l'interface LAN (via Network Manager) sans attribuer d'adresse passerelle et de DNS, puis
sudo ltsp dnsmasq --proxy-dhcp=0
Le fichier de configuration de dnsmasq propre à LTSP se trouve dans /etc/dnsmasq.d/ltsp-dnsmasq.conf

Configuration NFS

sudo ltsp nfs
Par défaut, cette commande autorise l'export du dossier /srv/tftp/ltsp mais pas l'export du /home (voire infra).

Le fichier de configuration des exports NFS se trouve dans /etc/exports.d/ltsp-nfs.exports.

Génération de l'image

3 options :

- sans chroot (image disponible dans /srv/ltsp/images/x86_64.img) - solution retenue à Défis

sudo ltsp image /
sudo ltsp initrd


- avec chroot
- avec VM

Configuration PXE

À effectuer à la création d'une nouvelle image afin d'ajouter une nouvelle entrée dans le menu de boot PXE.

sudo ltsp ipxe

Authentification des clients


Traditionnellement, l'authentification dans les systèmes Linux est fournie par le module pam_unix, via les fichiers /etc/passwd, /etc/shadow, /etc/group. Une fois un utilisateur ajouté (par interface graphique où à l'aide de la commande adduser), il faut lancer la commande sudo ltsp initrd
La création de sessions invités se fait depuis l'interface graphique de configuration de lightdm.


Dans le cas de nombreux utilisateurs, où si la liste des utilisateurs doit être utilisée par plusieurs services, il peut-être préférable d'utiliser un annuaire LDAP. L'authentification des clients via ldap repose quand à elle sur le module pam_ldapd
sudo apt install --install-recommends libpam-ldapd libnss-ldapd ldap-utils nscd nslcd nslcd-utils
- libpam-ldapd permet l'authentification des utilisateurs dans les programmes qui utilisent PAM.
- libnss-ldapd fournit un service de nommage qui autorise le serveur LDAP à être utilisé comme service de nom. Ce dernier fournira les informations concernant les comptes utilisateurs et les groupes en particulier.
- ldap-utils contient des utilitaires permettant d'effectuer des requêtes dans un annuaire LDAP.
- nscd fournit un cache pour les services de nom.
- nslcd est utilisé par libpam-ldapd et libnss-ldapd pour retrouver les comptes d'utilisateurs système.

Pour une bonne sécurité, il est recommande d'importer le certificat de l'annuaire LDAP et forcer nslcd à utiliser le protocole StartTLS . Pour cela, on peut lancer la commande
dpkg-reconfigure nslcd
ou éditer le fichier /etc/nslcd
ssl starttls
tls reqcert never
tls_cacertfile /etc/ssl/certs/ca_cert.pem


Contrairement à l'authentification traditionnelle, l'authentification LDAP ne crée pas automatiquement les comptes utilisateurs sur le serveur LTSP lors de leur première connexion. Pour que cela soit possible, il faut éditer le fichier /etc/pam.d/common-session
session required pam_mkhomedir.so umask=0077 skel=/etc/skel

Il semblerait qu'il faille désactiver la fonction pamltsp à travers les commandes suivantes
sudo touch /etc/ltsp/client/init/54-pam.sh && sudo ltsp initrd
(cf https://github.com/ltsp/ltsp/issues/16)

Enfin, l'authentification LDAP impose l'utilisation de NFS au lieu de SSHFS pour le partage de fichiers. Il faut donc installer un serveur NFS
sudo apt install nfs-kernel-server et spécifier à ltsp qu'il faut monter le /home via NFS
sudo ltsp nfs -h 1

Configuration des clients


Création du fichier de configuration :
install -m 0660 -g sudo /usr/share/ltsp/common/ltsp/ltsp.conf /etc/ltsp/ltsp.conf

Quelques options de configuration utiles (cf https://ltsp.org/man/ltsp.conf/):
-montage automatique du répertoire personnel
FSTAB_x="server:/home /home nfs defaults,nolock,rsize=32768,wsize=32768 0 0"
- cacher la liste des utilisateurs dans lightdm
LIGHTDM_CONF="greeter-hide-users=true"
- lancer des programmes via cron
CRONTAB_x="30 17 * * * poweroff"

Ajout d'imprimante


L'installation d'une imprimante repose sur le service CUPS (administrable à l'adresse http:/localhost:631). L'option de partage de l'imprimante doit être activée. Par défaut, l'option CUPS_SERVER="$SERVER" du fichier de configuration des clients leur indique d'utiliser le serveur LTSP comme serveur CUPS, et non le localhost.