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).