Il
primo problema da risolvere è quello del riconoscimento dei nomi: come si sa
il protocollo Ip riconosce le interfacce di rete attraverso dei numeri (gli
indirizzi Ip) che per comodità mnemonica raggruppiamo in quattro "triplette"
separate da punti (per esempio 192.168.168.1); noi però abbiamo difficoltà a
memorizzare queste sequenze di numeri, per cui è stato escogitato un sistema
che permette di associare a ciascun indirizzo Ip un nome, rendendo così la vita
più facile a chi deve avere a che fare con più di una manciata di stazioni di
lavoro. Questa comodità introduce un livello di complessità in più per l'amministratore
di sistema, che deve fare in modo che tale corrispondenza sia sempre aggiornata
e coerente in entrambi i sensi, permettendo cioè ai vari software non solo di
risalire all'indirizzo Ip dato un nome, ma anche di risalire al nome partendo
da un indirizzo Ip (alcuni chiamano questi passaggi Forward e Back conversion).
Il modo più semplice per ovviare a questo problema è quello di usare un file,
chiamato hosts, che nei sistemi Unix risiede nella directory /etc e
nei sistemi Windows è posto nella directory di sistema (solitamente C:Windows),
nel quale vengono indicati, su ciascuna riga, rispettivamente l'indirizzo Ip
e il nome della macchina, con eventuali relativi alias (collegamenti). Potremmo
così avere righe del tipo:
127.0.0.1
localhost
192.168.168.1 dns.prova.com dns
Questo permetterà di sapere
che all'indirizzo 192.168.168.2 corrisponde il nome "dns.prova.com",
noto anche con il nome Dns. Il problema di questo metodo, sicuramente semplice
da implementare, è quello di mantenere sempre aggiornata una copia del file
hosts su ciascuna delle stazioni di lavoro, e questo compito diventa difficile,
se non impossibile, nel momento in cui si ha un buon numero di stazioni in rete.
Internet, ai suoi albori, già si basava su questo principio, ma a un certo punto
il file che veniva distribuito arrivò a una dimensione tale che il sistema non
poteva più funzionare. Si arrivò cosi a pensare a una soluzione che permettesse
a ciascun amministratore di sistema di gestire i nomi all'interno della propria
rete in perfetta autonomia, giungendo così a un database distribuito e gerarchico,
basato su un principio di richieste successive: nel momento in cui un software
deve sapere a quale Ip corrisponde il nome www.gnomix.org, questo chiede
tale informazione al server Dns che è stato configurato dall'amministratore
di rete. Tale server risponde direttamente con l'Ip (se possiede tale informazione)
o perché è stato configurato per gestire il dominio gnomix.org o perché, avendo
già effettuato la ricerca, possiede tale informazione nella propria cache, altrimenti
suddivide il nome richiesto in base ai punti (ottenendo in questo caso le stringhe
www, gnomix e org), e legge il risultato da destra a sinistra: comincia quindi
a chiedere a particolari server (detti root server) a quale Dns rivolgersi per
sapere chi gestisce il dominio di primo livello org (detto anche Tld: Top Level
Domain). Contattaquindi tale Dns, che a sua volta "chiede" a quale
server richiedere informazioni sul dominio di secondo livello gnomix.org, e
infine contatta il server risultante per sapere a quale Ip corrisponde il nome
www.gnomix.org. Una volta ottenuta l'informazione il server Dns la restituisce
al software che l'ha richiesta. Configurare e gestire un Dns è un compito complesso,
soprattutto se si tratta di un Dns direttamente referenziato su Internet, ma
quello che si cercherà di ottenere qui è soltanto una piccola introduzione che
permetta di gestire un dominio all'interno della propria rete, in modo da non
dover manualmente sincronizzare i file hosts su ciascun computer. Il primo passo
da compiere è l'installazione del software:normalmente ciascuna distribuzione
Linux non solo contiene il programma necessario (Bind versione 8) ma durante
l'installazione provvede di norma a una configurazione di base che andrà poi
personalizzata. Il primo file da editare una volta terminata l'installazione
è /etc/named.conf. In tale file si trovano tutte le direttive di configurazione
del server stesso, oltre che la definizione delle zone (domini) per i quali
il server dovrà essere configurato. Il blocco options contiene la definizione
della directory di base, ossia una path che verrà preposta a tutti le altre
path contenute nel file (così per esempio se si trova un riferimento a primary/prova.db
il server cercherà il file prova.db nella directory /var/named/primary). In
seguito vengono le definizioni delle zone, ossia dei domini per i quali il server
viene configurato. La prima zona è particolare, in quanto contiene le definizioni
dei root server, ossia i server dai quali cominciare a cercare nel caso la richiesta
dei client non riguardi domini configurati direttamente nel Dns stesso. Il file
db.root viene aggiornato di tanto in tanto e va prelevato con regolarità dai
vari server che lo distribuiscono (per esempio ftp.internic.net/domain).
Seguono poi le definizioni delle zone vere e proprie per le quali il server
è configurato (zone master) e queste riguardano sia zone di Forward conversion
(da nome a Ip) sia zone di Back conversion. Per queste, in particolare, viene
usato un trucco che non si riesce ad approfondire in questa sede: basti sapere
che, al fine di permettere anche su questi Ip una richiesta di tipo gerarchico,
l'Ip stesso viene rovesciato e assegnato come sottodominio del dominio in-addr.arpa;
perciò per sapere a quale nome corrisponde l'indirizzo 192.168.168.1 il Dns
effettua in realtà una richiesta su 1.168.168.192.in-addr.arpa. Ciascuno dei
file di configurazione referenziato in named.conf, poi, ha un formato particolare.
Il file comincia con il record Soa (Start Of Authority) che prende come parametri
il Dns primario, un indirizzo e-Mail nel formato convenzionale hostmaster.prova.com
(da leggersi come hostmaster@prova.com) e una serie di parametri
di cui quello che interessa particolarmente e il serial number. A seguito di
una modifica nei dati del database, infatti, occorre anche incrementare tale
numero, in quanto il Dns ricaricherà i dati se e solo tale numero (che si può
pensare come un numero di versione) è maggiore di quello che il server ha in
memoria. Viene poi indicato il record Ns – Name Server (possono essere anche
più di uno, indicati però uno per riga), che corrisponde ai server Dns che gestiscono
il dominio in questione e il record Mx – Mail eXchanger (possono essere più
di uno), che corrispondono al o ai server che gestiscono l'e-Mail per il dominio
in questione: ciascuno di tali record ha anche un numero associato che rappresenta
la preference, ossia l'ordine (a partire dal più basso) in cui vanno contattati
i server per spedire l'e-Mail. E' da notare che se si usa un nome comprensivo
di dominio occorre aggiungere un punto alla fine, in quanto altrimenti il Dns
provvede automaticamente ad aggiungere il nome del dominio (per cui, dato che
tale file corrisponde al dominio prova.com il record Ns se non ci fosse il punto
diventerebbe "dns.prova.com. prova.com"). Cominciano poi i record
di associazione vera e propria tra host e indirizzo Ip, che possono avere o
la seguente forma nome -> indirizzo (record A) oppure nome -> altro nome
che deve esistere e corrispondere a un record A (record Cname, una sorta di
alias).I record A e Cname associano nomi a indirizzi Ip, mentre per effettuare
la corrispondenza inversa si usano i record Ptr nei file appositi. I file di
Back conversion hanno lo stesso formato di Soa e Ns, ma non vengono definiti
record Mx e le righe del database hanno il formato (notare il punto alla fine):
|
1
|
IN
|
PTR |
dns.prova.com.
|
|
16
|
IN
|
PTR |
notebook.prova.com.
|
|
31
|
IN
|
PTR |
pc1.prova.com.
|
|
32
|
IN
|
PTR |
pc2.prova.com.
|
Una volta terminata la configurazione
del Dns è possibile fare partire il processo. Il comando da usare è ndc, i cui
più importanti argomenti sono:
-start:
per fare partire il server;
-stop: per fermarlo;
-reload: per fargli rileggere le configurazioni senza
fermarlo;
-restart: per fermarlo e farlo ripartire
Una volta fatto partire il processo
è possibile controllare il funzionamento del server Dns attraverso programmi
di controllo come nslookup o host; se tutto funzionerà si avrà un output di
questo tipo:
$ host
dns.prova.com 192.168.168.1
dns.prova.com is 192.168.168.1
Si potrà quindi aggiornare il
file /etc/resolv.conf e le opzioni "nameserver" del Dhcp in modo da
farli puntare al nuovo nameserver appena configurato. In caso di errori, invece,
il primo punto da cui partire sono i file di log (normalmente /var/adm/messages),
nei quali il processo named avrà scritto i problemi incontrati all'avvio. In
caso di variazioni dei file (aggiunte, modifiche, cancellazioni) occorrerà ricordarsi
di incrementare il serial number ed effettuare un "ndc reload". Dopo
aver configurato gli indirizzi Ip di tutta la rete, permesso a ciascuna stazione
di lavoro di condividere l'accesso a Internet e aver fatto in modo che ciascun
client possa conoscere la corrispondenza tra nomi e indirizzi Ip, si può finalmente
cominciare a creare dei servizi più tangibili e di utilità immediata. La condivisione
di dischi e stampanti è uno dei servizi più popolari e non è patrimonio esclusivo
di casa Microsoft: Windows, nelle sue varie famiglie (da 3.1 fino a Nt), utilizza
per condividere risorse un protocollo noto come Smb e di tale protocollo esiste
una implementazione free (Samba) che negli anni ha avuto sempre maggiore successo,
al punto da essere considerata, insieme a Linux stesso e ad Apache, uno dei
più seri candidati a compromettere l'egemonia Microsoft. Questa suite di programmi,
se opportunamente configurata, permette di prendere il posto in tutto e per
tutto di un server Nt quanto a condivisione risorse, servizi di Primary e Backup
Domain Controller (Pdc/Bdc), logon script e quant'altro. Samba
è fornito con tutte le distribuzioni, ma in ogni caso l'Url di riferimento è
www.samba.org. Una
volta installato occorre reperire la posizione del file
smb.conf (tipicamente sotto /etc o sotto /usr/local/samba/lib), che è l'unico
file di configurazione di tutto il sistema. La sintassi è abbastanza chiara:
le righe che cominciano con ";" o "#" sono dei commenti
e il file stesso è diviso in sezioni, contrassegnate dal nome dela sezione stessa
posto tra parentesi quadre ([NomeSezione]). E' quindi il momento buono per armarsi
del proprio editor preferito e iniziare a configurare il servizio, anche se
potrebbe valere la pena di perdere ancora qualche minuto per leggere la documentazione
(man smb.conf). La configurazione tipica prevede solitamente la presenza di
una sezione generale ([Global]) nella quale vengono definiti dei parametri relativi
all'interno processo server. La personalizzazione comincia scegliendo un nome
per il proprio gruppo di
lavoro: il nome utilizzato di default nelle
installazioni di Windows e Workgroup, per cui occorre ricordarsi, se si decide
di non mantenerlo, di cambiare questo dato anche su tutti i client connessi.
Va poi scelta una politica di sicurezza: per iniziare può andare bene settare
il parametro "security" come user, questo permetterà a tutti gli utenti
definiti in /etc/passwd di utilizzare le risorse condivise semplicemente inserendo
la loro password al login di Windows.
Altri parametri da impostare possono essere local master (valore yes), oslevel
(valore 33) e domain master (ancora yes). Conviene inoltre inserire il parametro
interfaces=192.168.168.1 (indirizzo Ip della scheda di rete). Questo comando
serve per fare in modo che Samba offra i propri servizi solo a chi proviene
dalla rete locale, evitando quindi che malintenzionati possano "sfogliare
la rete" direttamente da Internet (tecnicamente si dice che il daemon
in questione fa il binding sulla scheda Ethernet). Si passa poi all'altra sezione
speciale: la sezione [Homes] permette a ciascun utente di vedere la propria
home directory direttamente da Windows, per cui
sarà disponibile sia tramite "sfoglia la
rete" sia tramite lo strumento "Connetti unità di rete" del file
manager di Windows (accessibile anche con un clic destro del mouse su Risorse
del computer). Va tenuto conto che nella terminologia di Windows un servizio
(disco o stampante) condiviso viene indicato con il formato NOMEHOSTNOMESERVIZIO,
per cui l'utente "test" del sistema
Linux "www" potrà accedere alla
sua home directory da Windows richiedendo la connessione a WWWTEST. L'ultima
sezione speciale è relativa alle stampanti: la sezione [Printers] permette di
condividere le stampanti definite sul sistema (nel file /etc/printcap), per
cui sarà possibile avere una stampante collegata alla porta Lpt del server Linux
e utilizzarla da tutta la
rete. Di qui in poi l'amministratore di sistema ha ampio spazio per creare nuove
risorse condivise: se per esempio si volesse fare in modo che alla directory
/tmp si possa accedere da tutti i client, in modo da permettere lo scambio di
file senza passare per le home directory, occorrerà
creare una sezione ad hoc, scegliendo
un nome da inserire tra parentesi quadre (per esempio [tmp]) e facendo seguire
gli opportuni parametri di configurazione (senza scordare di fare ripartire
il servizio dopo ogni cambiamento). Ciascuna di queste sezioni possiede dei
parametri ben precisi che servono a limitare l'accesso sia a livello utente
(parametri come allow/deny users, valid users, force user) sia a livello di
sistema (sola lettura, sola scrittura o entrambi: writable, read only, guest
ok). Occorre comunque avere un minimo di padronanza della sintassi del file
di configurazione prima di cambiare i valori di default. Un'ultima nota: nelle
ultime versioni di Samba è presente un tool di amministrazione tramite Web,
chiamato Swat (Samba Web Administratrion Tool). Se presente, è solitamente raggiungibile
puntando un browser alla porta 901 del proprio server, ossia utilizzando
un indirizzo Internet del tipo
http://nome
del server:901. Attraverso questa interfaccia
è possibile impostare tutti i parametri del proprio
server in maniera intuitiva, per cui se si preferisce il mouse alla tastiera,
questo è il modo più efficace per riuscire a condividere le risorse.