Installazione di un server LTSP

Da Faber Libertatis.

N.B.: questo documento è una bozza di lavoro

La presente guida spiega come installare e configurare il pacchetto LTSP versione 5 in una macchina con Ubuntu versione 8.04 "Hardy Heron" o successiva, dotata di due schede di rete, una connessa a internet e una dedicata alla rete dei terminali X (thin client).

La presenza di due schede di rete non è obbligatoria, ma consigliabile, perché:

  • permette di suddividere la rete dei terminali da altre reti, imponendo quindi un blocco ed un controllo all'accesso ad Internet;
  • in genere i router di accesso ad Internet agiscono come server DHCP per la configurazione automatica dei PC in rete, in quanto il server LTSP deve eagire a sua volta da server DHCP, la suddivisione della rete assicura che non vi siano conflitti;
  • disponendo di un numero considerevole di teminali (sopra la decina) raccolti in un'unica stanza, come spesso succede in contesti scolastici, conviene allacciare tutti i terminali su di un unico switch di rete e collegare il server allo switch con una porta da 1Gbps.

Detto questo, si riporta il seguente schema di rete:

 __________ 
|          |                |
| CLIENT 1 +----------------+
|__________|                |
 __________                 |           ________            ________
|          |                |          |        |          |        |
| CLIENT 2 +----------------+----------+ SERVER +----------+ ROUTER +----> INTERNET
|__________|                |     eth1 |________| eth0     |________|
...                         |  192.168.0.1     10.0.0.100
 __________                 |
|          |                |
| CLIENT n +----------------+
|__________|                |

RETE LTSP: 192.168.0.0/24			RETE LAN: 10.0.0.0/24

Dal punto di vista dell'hardware, si possono distinguere le caratteristiche del server, dei client e dello switch.

Indice della pagina

Caratteristiche del server

  • Il server è preferibile che sia una macchina di livello server e non un semplice computer desktop.
  • La potenza elaborativa dipende dal numero di client, ma è preferibile rivolgersi ad un sistema sufficientemente potente con processore dual o quad core;
  • Per il calcolo della RAM necessaria, si consideri di sommare alla quantità necessaria per un normale sistema desktop (512 MByte) una quota di circa 100 MByte per ogni client. In presenza di utilizzo di applicazioni complesse si valuti una quota per client di 200 MByte.
  • Preferibile disporre di due schede di rete di cui almeno una con velocità di 1 GBps;
  • Disponibilità di un controller RAID che supporti il RAID 1 (mirroring dei dischi) e di almeno due dischi. Si consideri di acquistare un secondo controller RAID dello stesso modello da riutilizzare nel cosa quello installato si guasti. Si consideri inoltre di prendere dischi appartenenti a lotti di produzione diversi.
  • Valutare inoltre la compatibilità dell'hardware della macchina con Linux (in genere i server sono certificati per alcune versioni Enterprise di Linu).
  • Si consiglia di dotare il server di un UPS.

Caratteristiche dei client

  • Possono essere usati dei thin-client comunemente in commercio (consto di circa 200 $ dollari l'uno), oppure PC recuperati;
  • Nel caso di PC recuperati è sufficiente che:
    • siano PC Pentium II o Pentium III con almeno 128 MByte di RAM (sono a volte sufficienti anche 64 o 96 MByte);
    • abbiano una scheda di rete ampiamente supportata (Realtek e 3Com sono le più diffuse);
    • la scheda grafica sia sufficiente per reggere una risoluzione di 1024x768 (vecchie schede grafiche ATI, Matrox e SIS sono sufficienti).
    • nel caso il BIOS non supporti l'avvio da rete, acquipaggiare il client di un disco fisso anche di piccole dimensioni (pochi GByte sono sufficienti).

Caratteristiche dello switch

  • E' preferibile che un unico switch supporti tutti i client della rete, per cui valutare il numero delle porte sulla base del numero dei client;
  • Inoltre valutare l'acquisto di uno switch con una o meglio due porte alla velocità di 1 GBps.

Installazione

Installare LTSP insieme ad Ubuntu

E' possibile installare i pacchetti necessari a creare un server LTSP direttamente dal disco di installazione di Ubuntu, utilizzando la versione alternate.

  • Dopo aver inserito il CD d'installazione, giunti alla schermata iniziale, spostarsi sulla riga Installa Ubuntu
  • Premere F4 Modalità alternative e selezionare Server LTSP.
  • Avviare l'installazione selezionando Installa Ubuntu.

Installare LTSP con Ubuntu già presente

Da NetwokManager disattivare il Roaming su entrambe le interfacce, quindi impostare staticamente gli indirizzi IP delle interfacce di rete. Editare il file di configurazione /etc/network/interfaces in questo modo:

# 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

# The primary network interface
auto eth0
iface eth0 inet static
        address 10.0.0.100
        netmask 255.255.255.0
        gateway 10.0.0.1

auto eth1
iface eth1 inet static
        address 192.168.0.1
        netmask 255.255.255.0

Assicurarsi che il computer sia collegato a internet, aprire un terminale e installare i pacchetti ltsp-server-standalone e openssh-server:

sudo apt-get install ltsp-server-standalone openssh-server

Questo comando installerà alcuni servizi necessari al server LTSP quali:

  • il server DHCP per configurare la componente di rete dei client;
  • il server INET per gestire gli altri servizi TFTP e NBD;
  • il server TFTP per permettere ai client di scaricare il kernel e altri file necessari all'avvio del sistema operativo locale;
  • il server NBD per esportare il file system utilizzato da tutti i client;
  • il server SSH per exportare la sessione grafica dal server ai client;
  • il server LTSPFS per permettere ai client di gestire da interfaccia grafica i dischi locali (floppy, CD, chiavette USB).

Installare a questo punto sul server l'ambiente per i thin client:

sudo ltsp-build-client

Durante l'esecuzione di questo comando verranno scaricati dei pacchetti software necessari alla creazione del file system di rete condiviso da tutti i client. Dato che quello che viene installato, è praticamente un mini sistema Ubuntu, il numero dei pacchetti è notevole e sarà necessario aspettare un po' di tempo a seconda della velocità della propria connessione ad Internet.

Riavviare a questo punto il server e testare l'avvio da un terminale LTSP.

Configurazione del servizio DHCP

Il pacchetto è predisposto per una rete di terminali con indirizzi 192.168.0.0/24 in cui l'indirizzo IP del server sia 192.168.0.1. In questo caso non c'è alcuna modifica da apportare al servizio DHCP.

Se invece si vuole cambiare indirizzo IP alla rete di terminali, per esempio con la rete 10.1.1.0/24, bisogna procedere come segue. Questo può essere necessario in particolare se vi siano già altre reti con indirizzi 192.168.0.0/24 (ad esempio la rete LAN a cui è collegato il server).

Aprire il file di configurazione /etc/ltsp/dhcpd.conf per cambiare i parametri di rete (questo file sovrascrive quello tradizionale con persorso /etc/dhcp3/dhcpd.conf):

sudo gedit /etc/ltsp/dhcpd.conf

Il file avrà questo aspetto:

#
# Default LTSP dhcpd.conf config file.
#
 
authoritative;
 
subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.20 192.168.0.250;
    option domain-name "example.com";
    option domain-name-servers 192.168.0.1;
    option broadcast-address 192.168.0.255;
    option routers 192.168.0.1;
#    next-server 192.168.0.1;
#    get-lease-hostnames 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";
    }
}

Le righe da modificare sono le segunti:

...
subnet <indirizzo di rete> netmask <maschera di sottorete> {
    range <indirizzo IP min> <indirizzo IP max>;
    option domain-name "<nome del dominio di rete>";
    option domain-name-servers <primo server DNS>, <secondo server DNS>;
    option broadcast-address <indirizzo di broadcast>;
    option routers <indirizzo IP del router>;
...

Quindi nel nostro caso avremo un file di configurazione come il seguente:

#
# Default LTSP dhcpd.conf config file.
#
 
authoritative;
 
subnet 10.1.1.0 netmask 255.255.255.0 {
    range 10.1.1.20 10.1.1.250;
    option domain-name "ltsp.lan";
    option domain-name-servers 151.99.125.2, 151.99.250.2;
    option broadcast-address 10.1.1.255;
    option routers 10.1.1.1;
#    next-server 10.1.1.1;
#    get-lease-hostnames 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";
    }
}

Modificare il file /etc/network/interfaces nel modo seguente:

# 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

# The primary network interface
auto eth0
iface eth0 inet static
        address 10.0.0.100
        netmask 255.255.255.0
        gateway 10.0.0.1

auto eth1
iface eth1 inet static
        address 10.1.1.1
        netmask 255.255.255.0

Eseguire quindi in sequenza:

sudo /etc/init.d/dhcp3-server stop
sudo /etc/init.d/networking restart
sudo /etc/init.d/dhcp3-server start
sudo ltsp-update-sshkeys 
sudo ltsp-update-image

Il primo comando disattiva il server DHCP, il secondo riconfigura le interfacce di rete e il secondo riavvia il server DHCP, nel caso vi sia un errore nella configurazione o l'interfaccia di rete non abbia le giuste impostazxioni di rete, il servizio DHCP non si avvierà e si necessiterà di correggere i file di configurazione e rieseguire il comando.

Gli ultimi due comandi invece rigenerano le chiavi SSH che identificano il server e rigenerano l'immagine del file system montato dai client con la nuova chiave al suo interno.

Configurazione per l'accesso a internet dei terminali

Quanto segue vale solo se in vogliono installare applicazioni locali sui client, in generale se il server si collega ad Internet non è necessario effettuare ulteriori operazione per abilitare l'accesso alla rete anche per i client.

Per applicazione locale si intende un'applicazione eseguita dal terminale, non all'interno della sessione grafica che compare sullo schermo del terminale, e quindi in esecuzione realmente sul server. In genere non c'è bisogno di realizzare questi interventi a meno di particolari esigenze, quali ridurre il carico del server oppure utilizzare applicazioni multimediali che necessitano di funzionare accedendo direttamente all'hardware dei terminali.

Se si vuole che le eventuali applicazioni locali avviate dai terminali accedano a internet, bisogna che il server LTSP svolga la funzione di router per instradare le richieste dei terminali al gateway verso internet (in genere un modem/router ADSL).

A tale scopo è necessario abiliater il parametro del Kernel che controlla le funzionalità di instradamento dei pacchetti di rete tra le interfacce. Questo parametro si chiama net.ipv4.ip_forward, ed è possibile abilitarlo scrivendo il valore 1 nel file /proc/sys/net/ipv4/ip_forward che lo rappresenta (/proc infatti è un file system virtuale in cui sono contenuti in formato file parametri e informazioni interne del Kernel). A tal fine eseguire il seguente comando (serve a scrivere come root il valore 1 nel file suddetto):

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

Questo parametro tornerà al suo valore predefinito, cioè 0 e dunque allo stato disabilitato ad ogni riavvio per cui è necessario impostare la sua valorizzazione a 1 ad ogni avvio per mezzo di un file che contiene i parametri del kernel da carcare all'avvio. Questo file è sysctl.conf e si può editare con il seguente comando:

sudo gedit /etc/sysctl.conf

Per abilitare l'IP forward, decommentare la riga segunte:

net.ipv4.ip_forward=1

Oltre ad abilitare l'instradamento, è necessario attivare la funzionalità di mascheramento del traffico uscente dalla rete interna dei terminali, questo permette ai pacchetti di rete di essere gestiti dalla rete destinataria come se fossero provenienti direttamente dal sistema instradatore. Il comando in questione è il seguente ed agisce sul firewall interno al kernel Linux; sostituire il parametro interfaccia con il nome della scheda di rete collegata ad internet (nel nostro caso eth0):

sudo iptables --table nat --append POSTROUTING --jump MASQUERADE --out-interface <interfaccia>

Questi comandi non sono più effettivi al reboot, per cui vanno impostati tra i comandi da eseguire al boot. Per rendere permanenti le regole del firewall eseguire il seguente comando che produrrà un file con le regole appena immesse in /etc/ltsp/nat.conf:

sudo sh -c 'iptables-save > /etc/ltsp/nat.conf'

Modificare dunque la configurazione dell'interfaccia collegata alla rete dei terminali, nel nostro caso eth1, in modo che all'abilitazione dell'interfaccia vengano riabilitate le regole del firewall. Modificare dunque il file di configurazione /etc/network/interfaces:

sudo gedit /etc/network/interfaces

Nella sezione relativa alla scheda di rete usata per la connessione ai terminali aggiungere la stringa:

up iptables-restore < /etc/ltsp/nat.conf

Ritornando all'esempio di prima avremo un file con il seguente contenuto:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 10.0.0.100
        netmask 255.255.255.0
        gateway 10.0.0.1

auto eth1
iface eth1 inet static
        address 10.1.1.1
        netmask 255.255.255.0
        up iptables-restore < /etc/ltsp/nat.conf

Configurazione del servizio TFTP

L'LTSP 5 normalmente configura l'avvio dei servizi TFTP e NBD per mezzo del servizio super-server inetd. Il suo file di configurazione è /etc/inetd.conf. dopo eventuali modifiche a questo file, riavviare il servizio eseguendo:

 sudo /etc/init.d/inetd restart

Configurazione del protocollo XDMCP

A differenza delle precedenti versioni LTSP, in LTSP 5 non è strettamente necessario abilitare nel server LTSP l'ascolto in rete da parte del dektop manager (GDM, KDM, XDM) per il protocollo XDCP.

Riferimenti

Altra documentazione

Link esterni

http://wiki.ubuntu-it.org/Hardware/UbuntuLtsp