Configurare una rete linux
Dopo aver terminato con successo l'installazione e laconfigurazione delle nostre Linux Box decidiamo finalmente dicreare una rete fra due (o piu' pc) PC. Come fare? Ve lospiego subito
Hardware di rete
Prima di tutto e' necessario possedere una scheda direte. Esistono schede ISA e PCI(le schede USB non sono ancorapienamente supportate ma e' solo questione di tempo).
- Le schede ISA sono meno veloci (non raggiungono i 100 mbpspoiche' il bus isa e' piuttosto lento) ma permettonouna configurazione piu' elastica, cioe' e'possibile scegliere, tramite ponticelli o software, tutti iparametri hardware (I/O, IRQ, PnP o non PnP, ecc.). Un altropregio delle schede ISA e' il fatto che sono tutte NE2000compatibili (lo standard ti fatto delle schede di rete) equindi sono riconosciute facilmente dal sistema.
- Le schede raggiungono, e in alcuni casi superano, i 100mbps e sono l'ideale per i computer di nuova generazioneche non hanno piu' gli slot ISA (perche' poi?Provatea configurare le porte paralelle su PCI e fatemisapere qanti anni di vita avete perso).
Il Kernel per la rete
Adesso configureremo il Kernel ed inseriremo (nella sezioneNetwork Device Support) il driver della nostra scheda.Controllare anche che le voci:
- Packet Socket;
- Kernel/User Netlink socket;
- Routing Messages;
- Network firewall;
- Socket Filtering;
- Unix Domain Socket;
- TCP/IP Networking;
- IP Multicasting
della sezione Networking Options siano abilitate.
Per l'NFS (condivisione file) andiamo nella sezioneFilesystem selezioniamo la sotto sezione Network File Systeme abilitiamo la voce Network File System support.
Ricompiliamo e riavviamo il sistema.
All'avvio del PC dobbiamo leggere un messaggio di questotipo:
ne.c:v1.10 9/23/94 Donald Becker(becker@cesdis.gsfc.nasa.gov)
NE*000 ethercard probe at 0x300: 00 c0 26 a1 5a 03
eth0: NE2000 found at 0x300, using IRQ 9.
La scheda ora e' stata riconosciuta ed e' statalinkata al device /dev/eth0.
L'indirizzo di rete
Poiche' Linux (come ogni UnixLike che si rispetti) usa iprotocolli TCP/IP (protocolli non e' un errore, il TCP/IPe' formato da almeno una decina di sottoprotocolli)e' necessario scegliere un indirizzo IP per la macchina.Se la nostra rete restera' isolata dal mondo (cioe'non verra' connessa ad Internet nemmeno tramite modem)potremo scegliere un qualsiasi indirizzo IP, ma se, comenormalmente succede, dobbiamo connettere la nostra rete adInternet sceglieremo un IP neutro.
Gli IP neutri sono:
Classe | Netmask | Indirizzo di rete |
A | 255.0.0.0 | 10.0.0.0 - 10.255.255.255 |
B | 255.255.0.0 | 172.16.0.0 - 172.31.255.255 |
C | 255.255.255.0 | 192.168.0.0 - 192.168.255.255 |
Essendo la nostra una rete piccola, useremo gli indirizzi diclasse C. Quindi il primo PC avra' IP 192.168.0.1, ilsecondo 192.168.0.2, ecc. (l'ordine degli indirizzi none' importante ma sono un tipo ordinato). Nel seguito deltutorial configuremo solo il primo PC (tranne che perl'NFS) poiche' per il secondo e' necessariocambiare solo gli indirizzi.
Adesso dobbiamo assegnare finalmente l'indirizzo allascheda di rete (e quindi al PC), come? Con il seguentecomando:
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
Dopo aver configurato il secondo PC collegiamo il cavo direte (quello ritorto, in caso di 2 soli PC o quello drittoall'HUB, in caso di 3 o piu' PC) e diamo i seguenticomandi:
ping -c1 192.168.0.2
dal primo PC e
ping -c1 192.168.0.1
dal secondo PC. Se il linux ci risponde in questo modo:
PING 192.168.0.2 (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.1: icmp_seq=0 ttl=255 time=0.2ms
--- 192.168.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packetloss
round-trip min/avg/max = 0.2/0.2/0.2 ms
la rete funziona correttamente. Se invece si riceve unarisposta di questo tipo:
PING 192.168.0.2 (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.1: icmp_seq=0 ttl=255 time=0.2ms
--- 192.168.0.1 ping statistics ---
1 packets transmitted, 0 packets received, 100% packetloss
round-trip min/avg/max = 0.2/0.2/0.2 ms
qualcosa non funziona per il verso giusto (il cavo,l'HUB, in caso di 3 piu' PC, o le schede nonfunzionano a dovere)
Credete di aver finito? Allora riavviate uno dei PC e rifatela prova.
Vi risponde sempre alla seconda maniera vero?
Questo succede perche' dobbiamo fare in modo che la retevenga inizializzata ad ogni avvio dei PC, per far cio'dovremo usare i file di init.
Gli init
Adesso arrivano i problemi. Infatti la mia (mitica) Slackwarenon ha lo stesso tipo di init della RedHat del GrandeDIABLOxxx (per i distratti DIABLOxxx e' il Webmaster delsito), quindi occorre creare 2 sezioni differenti.La
Slackware
Slackware e alcune altre distribuzioni (non so con precisionequali) hanno i file di init direttamente nella directory/etc/rc.d, nella directory ci sono i seguenti file:
rc.0@ rc.K* rc.cdrom rc.httpd* rc.keymap* rc.news@rc.sysvinit*
rc.4* rc.M* rc.font.sample* rc.inet1* rc.local*rc.samba*
A noi interessa solo ed esclusivamente il filerc.inet1 (che come potete vedere dall'asteriscoe' un eseguibile). Al suo interno dobbiamo cercare lerighe:
#IPADDR="192.168.0.1" # REPLACE with YOUR IPaddress!
#NETMASK="255.255.255.0" # REPLACE with YOURnetmask!
#NETWORK="192.168.0.0" # REPLACE with YOUR networkaddress!
#BROADCAST="192.168.0.255" # REPLACE with YOURbroadcast
e
#echo "Configuring eth0 as ${IPADDR}..."
#/sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST}netmask ${NETMASK}
L'unica cosa che dobbiamo fare e' togliere ilcancelletto davanti ad ogni riga e cambiare gli IP con inostri. Da ora in avanti ad ogni avvio riceveremo ilmessaggio:
Configuring eth0 as 192.168.0.1
Redhat e Mandrake
Redhat e Mandrake utilizzano 2 file (richiamati in fase diboot dallo script /etc/rc.d/init.d/network) per laconfigurazione della rete; i file sono:/etc/sysconfig/network e/etc/sysconfig/network-script/ifconfig-eth0. Il file/etc/sysconfig/network deve contenere:
NETWORKING=yes
HOSTNAME=nomepc.dominio
mentre l'altro(/etc/sysconfig/network-script/ifcfg-eth0):
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=ip_del_pc
NETMASK=netmask_PC
NETWORK=ip_macchina.0
BROADCAST=ip_macchina.255
E adesso i nomi
Adesso dobbiamo dare un nome ai PC. Aprite i file/etc/hosts (su ambedue i PC) e aggiungete le seguentirighe (questa operazione verra' fatta in automatico dalleutility grafiche):
192.168.0.1 Nome_Computer_1 #sostituire col nome del primoPC 192.168.0.2 Nome_Computer_2
#sostituire col nome del secondo PC.
NFS
Una rete come quella che abbiamo creato finora, anche seperfettamente funzionante, non e' di grande utilita'.Una rete serve piu' di ogni altra cosa per condividerefile. A questo pensa il servizio NFS.
La configurazione del servizio NFS e' molto semplice. Sevogliamo che ognuna delle macchine possa interagire con partidel filesystem dell'altra ambedue dovranno fare sia daclient che da server. Se invece solo una macchina dovra'poter interagire col filesystem dell'altra, la macchinache "presta" il suo filesystem sara' il server.
La configurazione dal lato Server
Sinceratevi di avere attivati i servizi mountd enfsd (ormai tutte le distribuizioni li avviano). Fattocio' dobbiamo modificare il file /etc/exportsaggiungendo una riga nel formato:
/dir/da/condividere nomecomputer(rw) #condividi ladirectory del computer con permessi di lettura escrittura.
Adesso dobbiamo riavviare i servizi mountd e nfsd con questisemplici comandi:
killall -HUP /usr/sbin/rpc.mountd
killall -HUP /usr/sbin/rpc.nfsd
Se tutto funziona lanciando il comando "rpcinfo-p" riceveremo il seguente output:
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 745 mountd
100005 1 tcp 747 mountd
100003 2 udp 2049 nfs
100003 2 tcp 2049 nfs
La configurazione dal lato Client
Dal lato client dobbiamo solo ed esclusivamente montare ilfilesystem della macchina
remota, per farlo useremo il comando:
mount -o rsize=1024,wsize=1024nome_computer_remoto:/directory/condivisa/ /mount_point
Per far si che il filesystem sia montato ad ogni avvio del PCpossiamo aggiungere la seguente riga nel file /etc/fstab:
nome_computer_remoto:/directory/condivisa /mount/point nfsrsize=1024,wsize=1024,auto 0 0
Per approfondimenti potete consultare NET3-4-HOWTO eNFS-HOWTO (nella directory /usr/doc/Linux-HOWTOs).
- Articolo precedente La posta elettronica
- Articolo successivo Configurare apache con supporto PHP e MySQL