Linux: Come configurare una rete
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 \\NOMEHOST\NOMESERVIZIO,
per cui l'utente "test" del sistema
Linux "www" potrà accedere alla
sua home directory da Windows richiedendo la connessione a
\\WWW\TEST. 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.