Costruirsi una rete con Linux
Voci dal forum 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

   

Home Page