Comment mettre en place une station cliente légère ?

NOTE IMPORTANTE : le logiciel dont il est ici question est en pré-version. Vous pourriez donc ne pas en être pleinement satisfait… tant que vous n'aurez pas vous-même participé à son déboguage. Si vous recherchez une solution plus stable, reportez-vous au site du Linux Terminal Server Project, ou au tutoriel LTSP.

Qu'est ce qu'une station cliente légère ?

D'un point de vue utilisateur, une station cliente ressemble à un ordinateur de bureau banal. Pour l'administrateur en revanche, une station cliente est synonyme de machine dépourvue de capacité de stockage, facile à gérer, et pouvant offrir à l'utilisateur un certain confort informatique même avec du matériel ancien.

Comment fonctionne une station cliente ?

Réponse basique

Les stations clientes se contentent de charger en mémoire un système d'exploitation réduit et de se connecter ensuite à un serveur. Les applications s'exécutent sur le serveur mais s'affichent sur l'écran de la station cliente.

Réponse technique

Séquence de démarrage (d'un point de vue station cliente) : la station cliente peut soit disposer d'un noyau sur un média de stockage local, soit le charger depuis le serveur au travers du réseau (en utilisant les instructions appropriés, il est possible de charger le noyau linux depuis un serveur au travers d'une carte réseau de démarrage. Ainsi, la station cliente n'a plus besoin de stocker quoi que ce soit, si ce n'est sur la mémoire morte de la carte réseau.)

  • Séquence de démarrage -

La carte réseau PXE lance une requête DHCP sur le réseau local. Le serveur DHCP répond en indiquant à la carte où se trouve le noyau linux. Le noyau est alors chargé au travers du réseau via le protocole TFTP.

Une fois le noyau chargé, il est exécuté, et la machine démarre sous linux. initramfs est chargé avec le noyau linux et il est monté comme système de fichiers root. Ceci procure automatiquement les pilotes nécessaires pour la carte réseau, la souris, le clavier, etc… Une fois le pilote de carte réseau chargé en mémoire, une seconde requête DHCP fournit aux clients les informations comme l'adresse IP, le masque réseau, la passerelle, le serveur DNS et le point de montage root NFS (Network File System) .

Le noyau linux exécute ubuntu initramfs, qui monte le système de fichiers root partagé du serveur, sur la machine cliente, en lecture seule. La station cliente a donc alors un noyau linux de démarrage, un système de fichiers root, comme un vrai système Linux. A partir de maintenant, quand nous parlerons du système de fichiers de la station client, il s'agira en fait du système de fichiers root du serveur monté en lecture seule. Le système de fichiers root monté par la station cliente est différent du système de fichiers root que le serveur utilise lui-même, mais il est conçu spécialement pour les stations clientes, et il est partagé entre toutes celles connectées au serveur (il est situé dans le répertoire /opt/ltsp/<arch> sur le serveur) . initramfs appelle le programme init, les paramètres du serveur X sont autodéctées et le gestionnaire de connexion ubuntu breezy ltsp, que l'on appelle ldm est exécuté.

- X nuts and bolts -

Une fois connecté, ldm crée un tunnel ssh et démarre une session X sur le serveur avec affichage sur les stations clientes via le tunnel. L'utilisation de ssh procure des avantages : vous n'avez pas à configurer le serveur X sur la station cliente, et aucun transport de données par protocole tcp non sécurisé n'est initialisée, comme cela pouvait l'être auparavant avec ltsp.

Prérequis

Il vous faut avant tout :

  • Une machine sous Ubuntu Breezy 5.10 qui jouera le rôle de serveur,
  • au moins une machine avec démarrage PXE qui jouera le rôle du client,
  • un espace libre sur le disque dur,
  • un connexion internet rapide, un mirroir local pour Breezy, ou beaucoup de patience,
  • un serveur DHCP capable de supporter des clients PXE, ou un segment de réseau séparé où vous pouvez lancer un serveur DHCP dédié,
  • une certaine aisance avec la ligne de commande,
  • un certain goût du risque,
  • et un désir brûlant d'envoyer vos commentaires aux développeurs d'Ubuntu !

Pour commencer

Paramétrer le serveur DHCP

Si vous disposez déjà d'un serveur DHCP avec prise en charge des clients PXE

  • Le configurer de façon à obtenir un fichier de démarrage /ltsp/pxelinux.0 et un chemin root vers /opt/ltsp/i386.

(Pour les versions supérieures à Breezy, le chemin de pxelinux.0 à spécifier est /ltsp/i386/pxelinux.0).

  • Avec ISC DHCPD, utiliser les options suivantes :
      filename "/ltsp/pxelinux.0";
      option root-path "/opt/ltsp/i386";
  • Installer le paquet ltsp-server sur le serveur.

Si vous souhaitez un serveur DHCP dédié

  • Installer le paquet ltsp-server-standalone sur le serveur.
  • Si besoin, adapter le fichier de configuration « /etc/ltsp/dhcpd.conf » (configuré par défaut pour un serveur d'adresse IP 192.168.0.1 relié à des clients 'PXE')
  • Si un firewall est présent sur le serveur, il vous faudra autoriser TFTP et NFS (et DHCP si vous exécutez un serveur standalone). Assurez-vous également que portmap n'est pas limité à l'interface de bouclage (loopback) dans /etc/default/portmap (commentez la ligne "-i 127.0.0.1" si elle existe). Editez éventuellement `/etc/hosts.allow' pour limiter l'accès à portmap, rpc.mountd, rpc.statd, et in.tftpd, uniquement depuis le réseau local :
      portmap:    192.168.0.0/24
      rpc.mountd: 192.168.0.0/24
      rpc.statd:  192.168.0.0/24
      in.tftpd:   192.168.0.0/24
  • Relancer le sous-système nfs :
      sudo invoke-rc.d nfs-kernel-server restart 
      sudo invoke-rc.d nfs-common restart
      sudo invoke-rc.d portmap restart

Construction de l‘environnement d‘exécution du client léger

sudo ltsp-build-client 
  • Ce script est prévu pour fonctionner avec un mirroir spécial Ubuntu. Mais vous pouvez également le modifier si vous avez un miroir plus proche ou un cédérom :
sudo ltsp-build-client --mirror [WWW] file://cdrom

en n'oubliant pas de copier les sources.list du serveur en chroot. Soyez patient, selon la vitesse de votre connexion Internet et la puissance de votre serveur, la construction peut prendre plusieurs minutes …

Attention : si vous avez modifié les paramètres de dépendances d'apt pour que les paquets recommandés ne soient pas sélectionnés automatiquement, il vous manquera certains paquets avec le script. Aucune connexion avec sdm ne sera alors possible puisque certains composants du serveur X seront manquants.
apt-get install openssh-server 
sudo ltsp-update-sshkeys

Vérifier le fichier de configuration « ssh_known_hosts »

Pensez à consulter le fichier « /opt/ltsp/i386/etc/ssh/ssh_known_hosts » et assurez-vous que votre nom d'hôte est bien associé à l'adresse IP. Selon la configuration spécifiée dans le fichier « /etc/hosts », il se peut que cette association soit automatique. Si le contenu du fichier ressemble à :

servername ssh-rsa AAAAB3NzaC1yc2EAAAABI...

…ajouter alors l'adresse IP de la façon suivante :

servername,192.168.0.1 ssh-rsa AAAAB3NzaC1yc2EAAAABI...

Créer éventuellement le fichier /opt/ltsp/i386/etc/lts.conf.

Dans le cas contraire, les valeurs par défaut seront utilisées.

5. Lancer le client par PXE et observer le résultat.

Si tout se passe bien, vous devriez avoir une ouverture de session en mode graphique.

Si votre station client est dépourvue de carte réseau PXE, vous pouvez créer un cédérom ou une disquette de démarrage via le site ROM-o-matic.net. Graver alors l'image iso ou enregistrer l'image disquette, et démarrer à partir du média créé.

6. Connectez-vous avec un identifiant autorisé pour la connexion ssh à distance

et observez le résultat. Si tout fonctionne correctement, vous devriez maintenant être dans une session de travail sur le serveur.

...et pour terminer... envoyez un courriel aux développeurs d'Ubuntu pour partager vos découvertes !

Trucs & Astuces

Si vous utilisez un serveur DHCP dédié sur lequel vous ne souhaitez pas installer LTSP, vous pouvez vous contenter de rediriger la station cliente vers un serveur différent.

Dans le fichier de configuration du serveur DHCP, dhcpd.conf:

next-server 192.168.0.3; 

où 192.168.0.3 est l'adresse de votre serveur LTSP.

Bogue signalé

* Bogue 19407: OpenSSH semble ne pas attribuer correctement les ports pour faire du X forwarding, ce qui empêche de se déconnecter et de se reconnecter immédiatement après, si la prise en charge IPv6 est activée. Désactivez en ajoutant la ligne "AddressFamily inet" au fichier /etc/ssh/sshd_config, et relancez le démon openssh.

Cas d'une station cliente NAT

Ce tutoriel est en fait la synthèse d'informations diverses sur le partage d'une connexion internet entre un serveur et ses stations clientes. The latter will act as NAT/gateway.

Prérequis :

Vous aurez besoin de :

  • un poste client serveur entièrement configuré, disposant d'au moins deux interfaces réseaux, la première connectée à internet, la seconde connectée au réseau interne. Pour les étapes suivantes, nous supposerons que votre serveur est également configuré en gateway réseau.

Pour commencer

  • Vérifier que les 2 interfaces sont bien configurées dans « /etc/network/interfaces »,
  • Vérifier avec la commande ifconfig qu'elles sont toutes deux actives,
  • Assurez-vous que le serveur peut se connecter à internet.
Remarque : les étapes décrites ci-dessus sont très importantes ! Prenez le soin de procéder à toutes ces vérifications, ceci vous épargnera bien des tracas pour la suite. Si vous n'êtes pas sûrs des paramètres réseau, adressez-vous à l'administrateur de votre réseau local.
  • Éditer le fichier /etc/network/options et autoriser l’ip_forward. Vous devriez obtenir ceci :
ip_forward=yes
spoofprotect=yes
syncookies=no

Puis lancer la commande suivante :

sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

pour autoriser immédiatement la fonction de redirection d'IP du noyau.

  • Activer le masquage d'adresse. Par défaut, le réseau ltsp utilise l'adresse 192.168.0.0/24. N'oubliez de la modifier pour être cohérent avec votre réseau, en utilisant la commande :
sudo iptables --table nat --append POSTROUTING --jump MASQUERADE  --source 192.168.0.0/24

pour autoriser NAT.

  • Entrez votre login sur une des stations clientes et appréciez les joies de l'internet. Si cette étape échoue, essayez de remplacer –append par –delete dans la commande ci-dessus.
  • Pour fixer les règles NAT d'iptables, lancez les commandes suivantes :
sudo sh -c 'iptables-save > /etc/ltsp/nat.conf'
  • Éditer le fichier /etc/network/interfaces et ajouter la ligne suivante à l'interface interne stanza :
up iptables-restore < /etc/ltsp/nat.conf

Vous devriez obtenir l'affichage suivant :

auto eth1
iface eth1 inet static
      address 192.168.0.1
      netmask 255.255.255.0
      broadcast 192.168.0.255
      network 192.168.0.0
      up iptables-restore < /etc/ltsp/nat.conf

pour vous assurez que les tables nat sont configurées correctement à chaque redémarrage.

  • Ensuite, il faut s'assurer que le paramètre ip_forward qui a été autorisé (mis à "1", voir plus haut) soit conservé après le redémarrage. Pour cela, éditez le fichier /etc/sysctl.conf et décommentez la ligne (en retirant le "#):
  #net.ipv4.conf.default.forwarding=1   

Votre connexion internet sera maintenant également disponible après un redémarrage.


Contributeurs : * Traduction et amélioration par Gauthier. * Persistence de l'"ip forwarding" après redémarrage par vpxavier

  • tutoriel/comment_mettre_en_place_une_station_cliente_legere.txt
  • Dernière modification: Le 28/04/2018, 11:25
  • (modification externe)