Costruirsi una rete con
Linux
Dalla piccola rete
casalinga alle grandi reti aziendali, dal piccolo ufficio ai cluster di
computer per il calcolo parallelo Linux ha dimostrato in questi anni tutta
la sua potenza e versatilità quando si tratta di reti. Linux possiede
tutte le caratteristiche per svolgere al meglio il compito di server di
rete in qualunque ambiente, a patto che venga utilizzato l'hardware
opportuno (che può andare da un 486 di recupero a un server
multiprocessore a seconda delle esigenze). Ovviamente la configurazione e
la gestione di un server sono compiti che necessitano di una certa pratica
e della conoscenza dei concetti base relativi alle reti, ma non per questo
si deve pensare che gestire una rete basata su Linux sia molto più
complicato rispetto all'analogo compito di Nt. Anzi, è proprio nel
gestire problematiche complesse come le reti che la forza dei sistemi Unix
viene fuori, grazie per esempio alla poderosa mole di strumenti di
debugging che questi forniscono rispetto a Nt. In questo spazio si cercherà
di fornire i primi strumenti per costruire da zero una rete il cui server
principale, basato su Linux, permetta di gestire l'assegnazione dinamica
degli Ip ai suoi client, di condividere l'accesso a Internet proteggendo
nello stesso tempo con tecniche di firewalling i client all'interno, di
utilizzare risorse condivise come dischi e stampanti e di accedere
remotamente al server stesso tramite Internet o tramite telefono. Il primo
passo perdi segnare una rete efficiente non si compie al computer ma alla
scrivania, con carta e penna. È qui che si decide quello che dovrà
essere il layout della rete, quali dovranno essere gli indirizzi Ip
utilizzati, quali servizi dovranno essere offerti e quali dovranno essere
le politiche di accesso agli stessi. La fase della pianificazione non va
assolutamente presa sottogamba, in quanto una volta che la rete sarà
operativa e utilizzata a pieno ritmo diventerà sempre più difficile
rimediare agli eventuali errori. Per quanto riguarda gli indirizzi Ip non
c'è che l'imbarazzo della scelta. Esiste un documento ufficiale (kfc
1597) che precisa gli intervalli di indirizzi che sono utilizzabili
all'interno di reti non collegate a Internet. Questi intervalli sono stati
appositamente riservati per l'utilizzo all'interno di reti sconnesse e
garantiscono di non interferire in alcun modo con la funzionalità di
Internet, e sono:
da 10.0.0.0 a
10.255.255.255
da 172.16.0.0 a 172.31.255.255
da 192.168.0.0 a
192.168.255.255
La scelta di una o
dell'altra serie di indirizzamenti è lasciata totalmente agli
amministratori di rete. Per convenzione, se si ritiene che non
occorreranno più di 254 Ip, conviene utilizzare indirizzi della serie
192.168.x.x, e il nostro suggerimento è quello di non scegliere l'abusata
"classe C" 192.168.0.x, in modo da non crearsi inutili problemi
nel caso occorra interconnettersi con altre reti che verosimilmente
avranno scelto questo spazio di indirizzamento. Una buona scelta potrebbe
essere quella della classe 192.168.168.x, con x che va da 0 a 255. Occorre
tenere presente, poi, che il primo e l'ultimo numero della spazio
prescelto non possono essere usati in quanto rappresentano il primo
l'intera rete e il secondo l'indirizzo di broadcast. Per convenzione, in
fine, si sceglie il primo o l'ultimo numero utile (in questo caso l'1 o il
254) come gateway. In questo caso il server Linux servirà per condividere
l'accesso a Internet, per cui sarà a tutti gli effetti un gateway. I dati
di rete del server saranno quindi:
Indirizzo Ip: 192.168.168.1
Netmask: 255.255.255.0
Network: 192.168.168.0
Broadcast: 192.168.168.255
Nessun default gateway
installato
Per quanto riguarda il
resto della rete può essere il caso di dividerla in più zone logiche,
per esempio riservando una fascia di Ip per esistenti e futuri server,
un'ulteriore fascia per client con Ip fisso (tipicamente client di
amministrazione, in modo da poter restringere l'accesso al server solo per
quegli Ip), una fascia per client con indirizzo Ip dinamico e infine una
fascia per client remoti che si collegano via modem. In questo caso,
quindi, si potrebbe avere una suddivisione di questo tipo:
da 192.168.168.1 a
192.168.168.15: SERVER
da 192.168.168.16 a
192.168.168.30: CLIENT CON IP FISSO
da 192.168.168.31 a
192.168.168.230: CLIENT CON IP DINAMICO
da 192.168.168.231 a
192.168.168.254: CLIENT REMOTI
Il server Linux con Ip
192.168.168.1 sarà il cuore della rete e provvederà a fornire gli
indirizzi Ip ai client con Ip dinamico, condividerà dischi e stampanti e
permetterà l'accesso a Internet, oltre ad accettare chiamate su modem
collegato alla sua porta seriale. Ovviamente una pianificazione così
dettagliata è ampiamente al di sopra delle necessità di chi deve
costruire una semplice rete casalinga di due o tre pc, ma sapere
esattamente cosa si sta facendo è utile in qualunque ambiente, per cui può
comunque essere un buon esercizio per chi ha ambizioni di amministrazione
di sistema prepararsi un picco lo schema di lavoro anche per le esigenze
più semplici. Una volta terminata la fase di pianificazione occorre
procurarsi il software necessario. Si deve installare e configurare:
dhcpd: un daemon
dell'Internet Software Consortium (www.isc.org) che permette di
configurare automaticamente e centralmente sui client il protocollo Tcp/Ip.
L'Rpm di questo pacchetto si trova su rufus.w3.org/linux/RPM/contrib/libc6/i386/dhcpd-2.0b1p10-1.i386.html;
ipchains: software che permette di manipolare le funzionalità di firewall
di Linux. E' fornito con tutte le distribuzioni, ma in caso di bisogno si
può trovare l'Rpm su rufus.w3.org/linux/RPM/redhat/6.1/i386/ipchains-1.3.9-3.i386.html
Una volta terminata
l'installazione del software necessario si può iniziare con la
configurazione del sistema. Il primo passo è quello di configurare la
scheda di rete: questo potrà comportare dopo l'installazione
dell'hardware un'opportuna ricompilazione del kernel e in modo da
includere il supporto per la propria scheda di rete, oltre che per il
Network firewall e l'Ip firewalling, che serviranno in seguito per
abilitare la condivisione del l'accesso a Internet (nel caso si utilizzi
ancora un kernel della serie 2.0.x occorre abilitare anche il supporto per
i driver sperimentali, l'Ip forwarding e il supporto per Ip chains.
Qualora non si sia ancora in possesso di una scheda di rete è più che
consigliabile consultare l'Hardware-HowTo (per esempio su
www.linuxdoc.org) per verificare quale modello scegliere tra quelli
compatibili con linux. Una volta effettuato il boot della macchina con il
nuovo kernel e verificato che la scheda di rete viene correttamente
visualizzata (per esempio con il comando dmesg|grep eth) si può
configurare alla combinazione della stessa. Il metodo per configurare la
rete varia a seconda della distribuzione prescelta: per esempio si può
utilizzare Linuxconf su sistemi RedHat o derivati ovvero inserire i
parametri di rete nello script /etc/init.d/network su sistemi Debian. Sarà
sufficiente lanciare questo script o chiedere a Linuxconf di attivare le
modifiche per avere la scheda di rete configurata correttamente, mentre
per verificare la funzionalità del tutto basta digitare i comandi
ifconfig -a e netstat -rn. Per verificare che la rete funzioni
correttamente si potrà provare a configurare uno dei client con dati
coerenti alla rete, utilizzando per esempio il range precedentemente
attribuito alle stazioni con Ip fisso (per esempio Ip 192.168.168.16 e
netmask 255.255.255.0). A questo punto sarà possibile controllare per
esempio con un ping (dalla finestra del Dos se si usa Windows 95/98/Nt)
verso il 192.168.168.1 la regolare operatività del server e della rete
appena configurata. E' ora il momento di installare il server Dhcp, che
permetterà di configurare automaticamente e centralmente le assegnazioni
di indirizzi ai singoli client. Il meccanismo alla base del Dhcp è
semplice: ogni stazione collegata a una rete Ethernet viene riconosciuta
grazie all'indirizzo hardware della scheda, chiamato Mac Address. Questo
indirizzo viene settato in fabbrica. ed è costituito da una parte che
identifica il fabbricante e da un numero progressivo. Il fabbricante è
responsabile dell'unicità del Mac Address di ciascuna scheda. in modo
che, di fatto, ogni stazione sulla rete abbia una sua impronta digitale
che la renda unica e riconoscibile. Per verificare quale sia il Mac
Address della scheda sotto Linux è possibile utilizzare il comando
ifconfig -a. mentre sotto Windows si può usare Winipcfg.Exe. Durante la
fase di boot il sistema operativo invia sulla rete (tramite un broadcast)
una richiesta di configurazione fornendo il proprio Mac Address. A tale
richiesta risponde il server Dhcp, che fornisce alla stazione richiedente
i parametri essenziali per configurarsi, quali indirizzo Ip, netmask,
broadcast, Dns, gateway, eventuale server Wins. Per fornire tali dati, il
server Dhcp può basarsi o su un pool di indirizzi dai quali prelevare il
primo libero o sul Mac Address fornito dalla scheda. In questo modo è
possibile grazie a questo indi rizzo prevedere configurazioni
personalizzate in base alla singola macchina (con l'accortezza di
aggiornare tali configurazioni in caso di cambio della scheda di rete). Il
file di configurazione (normalmente /etc/dhcpd.conf) è un normale file di
testo. Nella sua versione di base, applicato agli indirizzi che abbiano
riportato sopra, è sufficiente specificare:
subnet 192.168.168.0
netmask 255.255.255.0 {
range 192.168.168.31
192.168.168.230;
default-lease-time 86400;
max-lease-time 259200;
option subnet-mask
255.255.255.0;
option broadcast-address
192.168.1168.255;
option routers
192.166.168.1;
option domain-name-servers
192.168.168.1;
option domain-name "provagnomix.com";
}
In questo modo si dice al
server Dhcp che per la rete da 192.168.168.0 a 192.168.168.255 esiste un
range di lp che va dal 192.168.168.3l al 192.168.168.230 da assegnare a
chi ne facesse richiesta. Tali assegnazioni hanno una scadenza. ossia
vanno rinnovate dal client ogni 86.400 secondi (default lease-time), e in
ogni caso una macchina non può avere lo stesso indirizzo lp per più di
259.200 secondi consecutivi (max-lease-time). Insieme all' indirizzo lp
vengono fornite alla stazione richiedente anche alcune informazioni
opzionali: la net mask (option subnet-mask), il broadcast (option
broadcast-address), il default gateway (option routers), il Dns (option
domain-name-servers) e il nome a dominio delle macchine (option domain
name). In una configurazione più avanzata si potrebbero aggiungere le
linee:
host notebook {
hardware ethernet
00:00:B4:58:B5:D2;
fixed-address
192.168.168.16;
option host-name
"notebook";
}
Questo permetterà a una
stazione ben precisa. individuata dalla sua scheda di rete, di assumere
sempre e comunque lo stesso indirizzo lp, ossia 192.168.168.16. Una volta
terminata la configurazione occorrerà far partire il processo dhcpd dal
prompt (come root, ovviamente) e selezionare "Ottieni automaticamente
un indirizzo Ip" da una stazione Windows in rete. Se tutto funziona
regolarmente al riavvio di quest'ultima si potrà verificare con
Winipcfg.exe che il client abbia ottenuto un indirizzo di rete valido dal
server Dhcp. Una prima applicazione pratica può essere quella della
condivisione dell'accesso a Internet. Il meccanismo che viene utilizzato
è quello del cosiddetto masquerading: ogni client interno utilizza il
server Linux come gateway verso Internet. La configurazione del
masquerading con ipchains è molto semplice: una volta che si è compilato
il kernel con i necessari supporti, sarà sufficiente lanciare i seguenti
comandi come root per vedere le proprie stazioni sulla rete in grado di
navigare su Internet senza problemi, una volta che il server è connesso:
# ipchains -P forward DENY
# ipchains -A forward -i
ppp+ -j MASQ
# echo 1 > /proc/sys/net/ipv4/ip_forward
Per poter utilizzare
applicativi particolari dalle singole stazioni, può essere il caso di
caricare dei moduli aggiuntivi in questo modo:
# modprobe ip_masq_autofw.o
# modprobe ip_masq_portfw.o
# modprobe ip_masq_mfw.o
# modprobe ip_masq_user.o
# modprobe ip_masq_ftp.o
# modprobe ip_masq_irc.o
# modprobe ip_masq_raudio.o
# modprobe ip_masq_quake.o
# modprobe
ip_masq_vdolive.o
# modprobe
ip_masq_cuseeme.o
Attenzione: questa semplice impostazione permette di fare utilizzare
Internet alle proprie postazioni interne e nel frattempo le protegge in
qualche modo da attacchi provenienti dall' esterno, ma lascia totalmente
sguarnito il server stesso. Per ottenere un buon livello di protezione
occorre inserire altri comandi che rifiutino qualunque connessione
proveniente dall'esterno e diretta verso il server stesso. Un buon punto
di partenza si può trovare su www.abc.se/~m10813/fi1es/firewall.txt. Si
tratta di uno script di shell che è possibile lanciare direttamente al
boot e che, opportunamente personalizzato, si prende cura della stragrande
maggioranza delle esigenze di sicurezza e rnasquerading necessarie per un
accesso sicuro a Internet. Ovviamente le possibilità di Linux in rete non
finiscono qui...
Fonte:
bladexperience.com |