dmesg.fr:~#

display message

Dossier : Installation d'un serveur LTSP avec Debian GNU Linux 7 Wheezy

ltsp logoCe article explique comment installer un serveur LTSP (Linux Terminal Server Project) avec Debian 7 Wheezy.

Avantages d'un serveur LTSP  :

- une seule machine à administrer, maintenance simplifiée
- dès qu'une application est installée sur le serveur, elle est immédiatement disponible pour tous les PC clients
- les PC clients n'ont pas besoin d'être puissants, un ancien PC sans disque dur suffit
- l'ajout d'un nouveau PC client se fait en quelques minutes

ltsp debian picture


Recommandations matériel

Voici une configuration utilisée dans une école, qui comporte 1 serveur LTSP et 15 PC clients.

PC serveur : processeur Intel core i7 + 8 Go de RAM + un disque dur rapide + 2 cartes réseau gigabit

PC clients : PC n'ayant pas plus de 5 ans, avec 512 Mo de RAM, et équipés d'une carte réseau 100 Mbs

Switch Ethernet Gigabit

Note concernant les PC clients

Vous devez configurer les PC clients LTSP pour qu'ils démarrent en priorité sur le réseau. Cette configuration se fait dans le BIOS des PC clients. Cherchez "Boot sequence" ou quelque chose de similaire, puis choississez "PXE" ou "Network" comme First boot device, et sauvegardez les réglages.


Installation du serveur LTSP

Téléchargez une image d'installation Debian GNU Linux Wheezy amd64 :

http://www.debian.org/CD/http-ftp/#stable


Note : je vous recommande un bureau léger pour des clients LTSP. Le bureau XFCE est un bon choix. Choisissez donc l'image ISO amd64-xfce.

Procédez à une installation classique.

Une fois l'installation de Debian GNU Linux terminée, ouvrez un Terminal Administrateur, et suivez les étapes ci-dessous.


Désactiver Network Manager

Tapez :

service network-manager stop

update-rc.d -f network-manager remove


Configurer les 2 cartes réseau

Tapez :

ifdown eth0

ifdown eth1


Editez comme suit le fichier/etc/network/interfaces :

#############################################
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Interface vers Internet

allow-hotplug eth0
iface eth0 inet dhcp

# Interface reseau local
# /etc/ltsp/nat : regles iptables pour acces a Internet des postes clients a partir du reseau local

auto eth1
iface eth1 inet static
address 10.101.1.1
netmask 255.255.255.0
network 10.101.1.0
up iptables-restore < /etc/ltsp-nat
#############################################


Créer le fichier /etc/ltsp-nat

Tapez :

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sh -c 'iptables-save > /etc/ltsp-nat'


Remonter les interfaces réseau

Tapez :

ifup eth0
ifup eth1


Installer le package serveur LTSP

Tapez :

apt-get install ltsp-server-standalone


Note : ltsp-server-standalone est un meta paquet qui installera entre autres openssh-server et isc-dhcp-server

A la question "Veuillez choisir le répertoire racine qui sera utilisé par le serveur TFTP", laissez :

/srv/tftp


Editez comme suit le fichier /etc/exports :

#############################################
/opt/ltsp       *(ro,no_root_squash,async)
#############################################


Activer l'IP forwarding

Décommentez la ligne ci-dessous dans le fichier /etc/sysctl.conf :

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1


Pour activer l'IP forwarding en direct, tapez :

echo "1" > /proc/sys/net/ipv4/ip_forward


Configurer le serveur DHCP

Fichier /etc/default/isc-dhcp-server :

Configurez le port d'écoute pour le réseau local :

#############################################
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#    Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"
#############################################


Effacez le contenu du fichier /etc/dhcp/dhcpd.conf et ajoutez :

#############################################
# Configuration LTSP
include "/etc/ltsp/dhcpd.conf";
#############################################


Editez comme suit le fichier /etc/ltsp/dhcpd.conf :
(à adapter selon votre configuration)

#############################################
authoritative;

subnet 10.101.1.0 netmask 255.255.255.0 {
range 10.101.1.101 10.101.1.200;
# domain-name et domain-name-servers uniquement si serveur DNS
option domain-name "rpinet.lan";
option domain-name-servers 10.101.1.1;
option broadcast-address 10.101.1.255;
option routers 10.101.1.1;
next-server 10.101.1.1;
# Utilisation d'un serveur DNS
# Si pas de serveur DNS, mettre en commentaire get-lease-hostnames
get-lease-hostnames true;
# Si pas de serveur DNS, on peut decommenter use-host-decl-names pour passer les noms host ci-dessous
#    use-host-decl-names true;
#    option subnet-mask 255.255.255.0;
option root-path "/opt/ltsp/i386";
if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
filename "/ltsp/i386/pxelinux.0";
} else {
filename "/ltsp/i386/nbi.img";
}

# Configuration des postes clients

host fuji1 {
hardware ethernet 11:11:11:11:11:11;
fixed-address 10.101.1.20;
}

host fuji2 {
hardware ethernet 22:22:22:22:22:22;
fixed-address 10.101.1.21;
}

}

#############################################



Redémarrez le serveur DHCP :

service isc-dhcp-server restart


Construire l'image du serveur LTSP utilisée par les clients

Nous allons maintenant construire l'environnement LTSP qui sera utilisé par les PC clients.

Puisque les PC clients risquent d'être un peu âgés, il est possible qu'ils ne supporteront pas le 64 bits. Nous allons donc construire l'image en 32 bits (i386).

Tapez :

ltsp-build-client --arch i386


Note : cette opération prend un certain temps, car les fichiers nécessaires à la création de l'image LTSP sont téléchargés sur Internet.



Configurer TFTPD

Fichier /etc/inetd.conf :

Vérifiez qu'il n'y ait pas de ligne tftp. Le cas échéant, mettre cette ligne en commentaire et redémarrer inetd :

service openbsd-inetd restart


Fichier /etc/default/tftpd-hpa :

Ajoutez RUN_DAEMON="yes" :

#############################################
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

RUN_DAEMON="yes"

#############################################


Redémarrez tftpd-hpa :

service tftpd-hpa restart


Redémarrez nfs-kernel-server :

service nfs-kernel-server restart


Modification du fichier /etc/resolv.conf

Attention au fichier /etc/resolv.conf

Il est modifié automatiquement au redémarrage de la machine, et contiendra l'adresse IP de votre modem / routeur. Au moment où j'écris cet article, je ne sais pas quel service effectue cette modification automatique.

Vous devez donc restaurer la bonne configuration de votre réseau après un reboot.

Une façon de faire, est de créer un script à exécuter dans /etc/rc.local

Créez par exemple un fichier /home/votre_nom_utilisateur/resolvconfrpi :

#############################################
#!/bin/bash
# Configuration réseau rpinet

echo "search rpinet.lan" > /etc/resolv.conf
echo "nameserver 10.101.1.1 " >> /etc/resolv.conf

#############################################

Rendez-le exécutable :

chmod +x /home/votre_nom_utilisateur/resolvconfrpi


Ajouter le script dans /etc/rc.local :

#############################################
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


# Remplacer /etc/resolv.conf par la bonne configuration

/home/votre_nom_utilisateur/resolvconfrpi

exit 0

#############################################



Installer un serveur DNS

Par défaut, les terminaux LTSP s'appellent "ltsp<xx>". Nous allons installer un serveur DNS pour leur donner un nom plus parlant.

Tapez :

apt-get install bind9


Fichier /etc/bind/named.conf.options :

Ajoutez les adresses des serveurs DNS de votre F.A.I. et mettez en commentaire la ligne dnssec-validation auto; :

#############################################
options {
directory "/var/cache/bind";

// exemple pour le F.A.I. Numericable

forwarders {
89.2.0.1;
89.2.0.2;
};

// dnssec-validation auto;

auth-nxdomain no;    # conform to RFC1035
listen-on-v6 { any; };
};
#############################################

 

Créez un nouveau fichier named.conf pour votre domaine :
(à adapter selon votre configuration)

Exemple : /etc/bind/named.conf.rpinet

#############################################
zone "rpinet.lan" {
type master;
file "/etc/bind/db.rpinet.lan";
forwarders{};
};

zone "1.101.10.in-addr.arpa" {
type master;
file "/etc/bind/db.rpinet.lan.inv";
forwarders{};
};

#############################################


Modifiez ensuite le fichier /etc/bind/named.conf :

#############################################
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

// Inclure le nouveau fichier de configuration
include "/etc/bind/named.conf.rpinet";

#############################################



Créez le fichier /etc/bind/db.rpinet.lan :

#############################################
$TTL    604800
@       IN      SOA     debiansrv1.rpinet.lan. root.rpinet.lan. (
20110802
604800
86400
2419200
604800  )
NS      debiansrv1.rpinet.lan.
debiansrv1   A    10.101.1.1
fuji1        A    10.101.1.20
fuji2        A    10.101.1.21

#############################################



Créez le fichier /etc/bind/db.rpinet.lan.inv :

#############################################
$TTL 604800
@       IN      SOA     debiansrv1.rpinet.lan. root.rpinet.lan. (
20041122
604800
86400
2419200
604800 )
NS      debiansrv1.rpinet.lan.
20    PTR    fuji1.rpinet.lan.
21    PTR    fuji2.rpinet.lan.

#############################################


Vous pouvez vérifier vos fichiers de configuration avec named-checkconf :

Tapez :

named-checkconf /etc/bind/named.conf

named-checkconf
/etc/bind/db.rpinet.lan

named-checkconf
/etc/bind/db.rpinet.lan.inv


Affichez aussi le fichier syslog :

tail /var/log/syslog


Redémarrez le serveur DNS :

service bind9 restart


Messages d'erreurs de configuration BIND

Attention au copier / coller des fichiers de configuration de cet article dans vos fichiers de configuration. Les tabulations et espaces ne seront pas les mêmes, donc vous aurez certainement une erreur au redémarrage du service bind.

Exemple d'erreur dans syslog :

debianltsp named[19417]: /etc/bind/db.rpinet.lan:8: unknown RR type 'debianltsp.rpinet.lan.'
debianltsp named[19417]: zone rpinet.lan/IN: loading from master file /etc/bind/db.rpinet.lan failed: unknown class/type
debianltsp named[19417]: zone rpinet.lan/IN: not loaded due to errors.

Dans le cas ci-dessus, il manquait une tabulation devant la ligne :

NS      debianltsp.rpinet.lan.


Test du serveur LTSP

A ce stade, le serveur LTSP est opérationnel.

Allumez un PC client, il devrait démarrer sur le serveur LTSP. N'oubliez pas de configurer vos PC clients afin qu'ils démarrent en priorité sur le réseau (voir dans le BIOS des PC clients).


Note : si le PC client met trop de temps à obtenir son adresse IP, ou qu'il bloque au démarrage, vérifiez le fichier /etc/resolv.conf qui doit contenir ceci :

search rpinet.lan
nameserver 10.101.1.1


A l'écran d'accueil LTSP, en bas à droite, devraient figurer :

- le nom DNS que vous avez configuré avec BIND
- l'adresse IP correspondante

LTSP login screen



Modification de l'environnement du client LTSP


Installation du navigateur web Iceweasel (Firefox) et du plugin Flash en applications locales

Il est judicieux d'installer certaines applications gourmandes en ressources en applications locales. Dans ce cas, l'application utilisera les ressources du PC client et non du serveur.

Nous allons installer le navigateur web Iceweasel et le module flash en local apps, car flash peut rapidement devenir gourmand en ressources, et pourrait saturer le serveur dans le cas où 15 postes surfent simultanément sur des sites web flash.

Tapez :

ltsp-chroot


Une fois dans le chroot LTSP :

Modifiez comme suit le fichier /etc/apt/sources.list :

#############################################
deb http://cdn.debian.net/debian wheezy main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free

#############################################


Mettez à jour de la liste des paquets :

apt-get update


Installez iceweasel et le module flash :

apt-get install iceweasel iceweasel-l10n-fr flashplugin-nonfree


Sortez du chroot LTSP :

exit


Activez la prise en charge des applications locales

Fichier : /opt/ltsp/i386/etc/lts.conf

Ajoutez LOCAL_APPS=True et iceweasel dans LOCAL_APPS_MENU_ITEMS :

#############################################
[default]
LTSP_CONFIG=True
LOCAL_APPS=True
LOCAL_APPS_MENU=True
LOCAL_APPS_MENU_ITEMS=iceweasel
#LOCALDEV=False
#CONFIGURE_X=False

#############################################


Faut-il lancer la commande ltsp-update-image avec Debian ?

Certaines distributions Linux utilisent NBD. Dans ce cas, cette commande créé une image client à partir du répertoire /opt/ltsp/i386 et la stocke dans /opt/ltsp/i386/images.

Toute modification effectuée dans le chroot du client (par exemple ajout d'une localapp) ne sera prise en compte qu'après le lancement de la commande ltsp-update-image.

Debian utilise NFS, et non NBD. Il n'est donc pas nécessaire de lancer la commande ltsp-update-image. Toute modification effectuée avec ltsp-chroot est prise en compte immédiatement. Il suffit de se déconnecter / reconnecter sur le client ltsp.


Test du navigateur web Iceweasel en local app

Démarrez un PC client LTSP.

Lancez classiquement Iceweasel via le menu Applications -> Internet

Dans la barre de titre devrait être marqué : iceweasel sur [nom_du_poste_client]

Cela signifie qu'Iceweasel est bien exécuté en application locale.

Vous pouvez aussi démarrer des applications locales à partir du Terminal :

ltsp-localapps iceweasel

Iceweasel local app


Activation du son sur le client LTSP

Si vous souhaitez activer le son sur les PC clients LTSP :

Fichier : /opt/ltsp/i386/etc/lts.conf

Ajoutez SOUND=True pour activer le son :

#############################################
[default]
LTSP_CONFIG=True
SOUND=True
VOLUME=100
HEADPHONE_VOLUME=100
PCM_VOLUME=100
LOCAL_APPS=True
LOCAL_APPS_MENU=True
LOCAL_APPS_MENU_ITEMS=iceweasel
#LOCALDEV=False
#CONFIGURE_X=False

#############################################

Vous pouvez aussi modifier le volume par défaut du son des clients (VOLUME=valeur, etc). Pour plus d'informations, reportez-vous au manuel lts.conf, et recherchez SOUND :

man lts.conf


Faire fonctionner le son avec les applications locales (local apps)

Par défaut, le son d'une application locale est redirigé sur la sortie audio du serveur. Par obtenir le son d'une application locale sur le client, suivre les instructions du fichier : /usr/share/doc/ltsp-server/README.sound

Créez le fichier /etc/asound.conf comme indiqué dans le fichier /usr/share/doc/ltsp-server/README.sound


Configurer une imprimante sur le serveur LTSP

Branchez l'imprimante sur le serveur et configurez classiquement via CUPS :

http://localhost:631

Une fois configurée, l'imprimante sera disponible pour tous les PC clients.


Configurer une imprimante sur un poste client

Il peut être utile de brancher une imprimante sur un poste client, par exemple dans le cas ou le serveur LTSP est trop loin des clients, et que votre imprimante ne comporte qu'une interface USB.

Dans cet exemple, nous allons brancher une imprimante Laser SAMSUNG ML2010 sur le port USB du PC client FUJI1.

Editez le fichier /opt/ltsp/i386/etc/lts.conf :

Après la section [default], ajoutez une section pour le PC client sur lequel est branché l'imprimante :

#############################################
# Adresse MAC de la carte réseau du PC client sur lequel est branché l'imprimante
[11:11:11:11:11:11]
PRINTER_0_DEVICE=/dev/usb/lp0

#############################################

NOTE : la page d'aide du fichier lts.conf indique :

"Valid device names such as /dev/lp0, or /dev/usblp0 are allowed."

Dans cet exemple, l'imprimante apparait sous /dev/usb/lp0. A adapter selon votre configuration.


Vous devez maintenant encore créer une imprimante réseau, qui va pointer sur l'adresse IP du poste client sur lequel est branché l'imprimante.

Dans CUPS :

http://localhost:631

Ajoutez une imprimante.

Choisissez "AppSocket/HP Jet Direct"

Dans Connexion, saisissez l'adresse IP du PC client sur lequel est branché l'imprimante et le numéro de port. Exemple :

socket://10.101.1.20:9100

Donnez ensuite un nom à l'imprimante et cliquez sur Continuer.

Terminez la configuration en choisissant le fabriquant et le modèle de votre imprimante, et cliquez sur "Ajouter une imprimante".


Tous les utilisateurs pourront maintenant imprimer sur l'imprimante installée sur ce PC client. Attention : ce PC client doit être allumé !


Imprimer avec les applications locales LTSP local apps

Par défaut, si vous utilisez par exemple un navigateur Internet en local app, c'est à dire exécuté sur le client, l'imprimante ne sera pas visible. En parcourant le web, vous pourrez lire ça et là qu'il faut installer CUPS dans le chroot (l'environnement client LTSP) pour pouvoir imprimer. Ceci est inutile sur un serveur LTSP Debian 7. Procédez comme suit.

Sur le serveur LTSP, ouvrez un navigateur Internet et allez dans l'administration de CUPS :

http://localhost:631/admin

Cliquez sur "Gérer les imprimantes", choisissez votre imprimante, puis sélectionnez "Modifier l'imprimante".

Cliquez sur "Continuer", puis cochez "Partager cette imprimante".

Cliquez sur "Continuer", puis "Modifier une imprimante".


Retournez au panneau d'administration CUPS :

http://localhost:631/admin

Cochez "Partager les imprimantes connectées à ce système".


Ajoutez la ligne suivante dans le fichier /opt/ltsp/i386/etc/lts.conf :

# Adresse IP à adapter, saisissez celle de votre serveur LTSP
CUPS_SERVER=10.101.1.1


Sauvegardez et redémarrez un client LTSP. Lancez une local app. L'imprimante sera visible dans la boite de dialogue d'impression.

Je rappelle que sous Debian, il est inutile de lancer la commande ltsp-update-image.

Configurer un scanner sur un poste client

Toujours dans le fichier /opt/ltsp/i386/etc/lts.conf, dans la section du PC client sur lequel est branché le scanner, indiquez simplement SCANNER=True :

#############################################
# Adresse MAC de la carte réseau du PC client sur lequel est branché le scanner
[22:22:22:22:22:22]
SCANNER=True

#############################################


Utiliser les ports USB sur un client LTSP avec l'environnement de bureau XFCE

Ajoutez la ligne suivante dans le fichier /opt/ltsp/i386/etc/lts.conf :

LOCALDEV=True


Démarrez un client LTSP, et insérez une clé USB. Avec l'environnement de bureau XFCE, vous observez qu'il ne se passe rien à l'écran... Pourtant, la clé USB est montée. Le point de montage se trouve dans l'arborescence suivante :

/media/$USER/nom_du_peripherique

Pour y accéder rapidement, une solution est, par exemple, de créer un raccourci dans la barre des tâches ou sur le bureau.

Attention, le répertoire /media/$USER est créé lorsque vous insérez une clé USB, et disparaît lorsque vous la retirez.


Copyright dmesg.fr - All Rights Reserved.