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 clientsPXE
, ou un segment de réseau séparé où vous pouvez lancer un serveurDHCP
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
etNFS
(etDHCP
si vous exécutez un serveur standalone). Assurez-vous également queportmap
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 …
'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.
- É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