22.3. Configurazione manuale della rete

La configurazione manuale della rete dovrebbe sempre essere la seconda scelta. Noi consigliamo di usare . Illustrare i concetti che stanno alla base della configurazione di rete, semplificherà l'utilizzo di .

Ogni scheda di rete — indipendentemente se integrata o un dispositivo hotplug (PCMCIA, USB, a volte anche PCI) — viene rilevata e configurata dal sistema hotplug. Per comprendere questo processo bisogna sapere che:

Schede di rete da diversi punti di vista

Una scheda di rete compare nel sistema in due modi differenti. Una volta come dispositivo (ingl. device) fisico, e dall'altra funge da interfaccia (ingl. interface). Se viene inserito e rilevato un dispositivo del genere si ha un evento hotplug che inizializza il dispositivo tramite lo script /sbin/hwup. Inizializzando la scheda di rete come nuova interfaccia di rete, il kernel crea un ulteriore evento di hotplug che innesca la configurazione dell' interfaccia tramite /sbin/ifup.

Assegnazione da parte del kernel dei nomi di interfaccia

Il kernel numera i nomi di interfaccia nell'ordine in cui sono state registrate. La sequenza di inizializzazione è determinante ai fini dell'assegnazione del nome. Se disponete di diverse schede di rete e la prima nella sequenza viene rimossa o non reagisce più cambia anche la numerazione delle schede inizializzate dopo quella in questione. Con schede hotplug “vere” è determinante la sequenza nella quale sono stati connessi i dispositivi.

Per consentire una configurazione flessibile è stato distinto tra configurazione del dispositivo (Hardware) e dell'interfaccia ed inoltre l'allocazione delle configurazioni ai dispositivi o interfacce non viene più realizzata tramite i nomi delle interfacce. Le impostazioni dei dispositivi si trovano sotto /etc/sysconfig/hardware/hwcfg-*, mentre le impostazioni per le interfacce si trovano sotto /etc/sysconfig/network/ifcfg-*. I nomi dei file di configurazione sono scelti in modo da descrivere i dispositivi o interfacce a cui fanno riferimento. Visto che prima l'allocazione tra driver e nomi di interfacce presupponeva nomi di interfaccia costanti, l'allocazione non può più avvenire tramite /etc/modprobe.conf. Con il nuovo approccio le registrazioni alias in questo file comporterebbero addirittura degli effetti secondari indesiderati.

I nomi di configurazione, dunque la parte che segue dopo hwcfg- o ifcfg- possono indicare il punto di connessione, un ID specifico del dispositivo o anche il nome dell'interfaccia. Nel caso di una scheda PCI si avrebbe una designazione del tipo bus-pci-0000:02:01.0 (slot PCI) o vpid-0x8086-0x1014-0x0549 (ID del fornitore e prodotto). Per la relativa interfaccia si potrebbe utilizzare anche bus-pci-0000:02:01.0 oppure wlan-id-00:05:4e:42:31:7a (indirizzo MAC).

Se non si vuole assegnare una determinata configurazione di rete a una scheda determinata ma a una scheda qualunque di un certo tipo (di cui è inserita sempre una sola alla volta), si sceglie un nome di configurazione più generale; ad esempio si può utilizzare bus-pcmcia per tutte le schede PCMCIA, oppure si possono delimitare i nomi anteponendo un tipo di interfaccia, ad esempio wlan-bus-usb verrebbe assegnata a tutte le schede WLAN connesse ramite USB.

Valgono sempre quelle impostazioni che meglio descrivono l'interfaccia o il dipositivo messo a disposizione dall'interfaccia. É /sbin/getcfg a stabilire la miglior configurazione. L'output di getcfg indica tutte le informazioni riguardanti la descrizione di un dispositivo. La specificazione per i nomi di configurazione è reperibile nella pagina di manuale di getcfg.

Seguendo il metodo illustrato si può impostare l'interfaccia di rete con la configurazione giusta, anche se i dispositivi di rete non vengono inizializzati sempre nella stessa sequenza. Rimane comunque il problema che il nome dell'interfaccia dipende dalla sequenza di inizializzazione. Vi sono due modi per accedere in modo affidabile all'interfaccia di una determinata scheda di rete:

ifup non inizializza l'hardware ma presuppone un'interfaccia preesistente. Per inizializzare l'hardware vi è hwup che viene invocato da hotplug (o coldplug). Non appena si inizializza un dispositivo viene però invocato automaticamente ed eventualmente settato ifup per la nuova interfaccia tramite hotplug se il modo di avvio è impostato su onboot, hotplug o auto ed è stato avviato il servizio network. Prima era un ifup <nome_di_interfaccia> a inizializzare l'hardware. Ora si procede proprio in maniera inversa. Prima viene inizializzato una componente hardware e ne conseguono tutta una serie di azioni. Così è possibile impostare in maniera ottimale un numero variabile di dispositivi con un dato set di configurazioni.

Per una panoramica più articolata, la seguente tabella indica gli script che entrano in gioco durante il processo di configurazione della rete. Quando possibile è distinto tra aspetti che interessano l'hardware e quelli che riguardano più da vicino l'interfaccia:

Table 22.5. Gli script per configurare manualmente la rete

Fase di configurazione

Comando

Funzionalità

Hardware

hw{up,down,status}

Gli script hw* vengono invocati dal sottosistema hotplug per inizializzare un dispositivo, interrompere l'inizializzazione o per visualizzare lo stato di uno dispositivo. Per maggiori informazioni rimandiamo a man hwup.

Interfaccia

getcfg

Con getcfg ottenete il nome di interfaccia relativa al nome di configurazione o descrizione hardware. Per maggiori informazioni rimandiamo a man getcfg.

Interfaccia

if{up,down,status}

Gli script if* attivano o disattivano interfacce preesisteni o ritornano lo stato dell'interfaccia in questione. Per maggiori informazioni rimandiamo a man ifup

Per ulteriori indicazioni in tema di Hotplug e Nomi di dispositivi persistenti consultate il capitolo Chapter 18, Il sistema hotplug e Chapter 19, Device node dinamici grazie a udev.

22.3.1. File di configurazione

Questa sezione riassume i file di configurazione di rete e spiega la loro funzione ed il formato utilizzato.

22.3.1.1. /etc/syconfig/hardware/hwcfg-*

Questi file contengono la configurazione hardware delle schede di rete e altri dispositivi; contengono inoltre i parametri necessari come modulo del kernel, modo di avviamento e script assegnati. Per maggiori dettagli consultate le pagine di manuale di hwup. Le impostazioni in hwcfg-static-* vengono applicate all'avvio di coldplug, indipendentemente dall'hardware presente.

22.3.1.2. /etc/sysconfig/network/ifcfg-*

Questi file contengono le impostazioni per le interfacce di rete. Includono tra le altre cose il modo di avvio e l'indirizzo IP. I parametri consentiti sono descritti nella pagina di manuale di ifup. É inoltre possibile utilizzare nei file ifcfg-* tutte le variabili contenute nei file di dhcp, wireless e config, se una impostazione altrimenti generale debba essere applicata ad una sola interfaccia.

22.3.1.3.  /etc/sysconfig/network/config,dhcp,wireless

Il file config contiene impostazioni generali per il comportamento di ifup, ifdown e ifstatus che sono ben commentate. Troverete anche commenti in dhcp e wireless, dove risiedono le impostazioni generali per DHCP e schede di rete wireless. Tutte le variabili di questi file possono essere utilizzate anche in ifcfg-*, e hanno lì la precedenza.

22.3.1.4. /etc/sysconfig/network/routes,ifroute-*

Qui stabilite il routing statico di pacchetti TCP/IP. In questi file, la prima colonna indica la meta della route, la seconda il gateway, la terza la maschera di rete della meta e la quarta facoltativamente un'interfaccia di rete. Nella quinta e successive colonne possono essere indicate delle particolari opzioni. Le colonne vuote presentano un -. Per maggiori dettagli, leggete la pagina di manuale di routes e la sezione Section 22.5, “Routing sotto ”.

Se non viene indicata l'interfaccia si tenterà di impostare la route per ogni interfaccia, cosa che riesce solo nel caso dell'interfaccia adatta. Potete applicare ciò ad esempio per la route di default. Al posto di nomi di interfaccia possono essere utilizzati anche nomi di configurazione.

Se una route deve essere utilizzata solo in concomitanza con una determinata configurazione di interfaccia, essa può essere immessa in ifroute-<nome_di_configurazione> invece che in routes. É anche possibile configurare diverse route di default. Verrà utilizzata sempre quella dell'interfaccia di rete configurata come ultima.

22.3.1.5.  /etc/resolv.conf

Come già il file /etc/host.conf, anche questo file, influisce sulla risoluzione dei nomi degli host tramite la libreria resolver.

Qui si indica a quale dominio appartenga l'host (parola chiave search) e quale sia l'indirizzo del server dei nomi (parola chiave nameserver) da indirizzare. Possono venire indicati più di un nome di dominio. Al momento della risoluzione di un nome non del tutto qualificato si cercherà di creare un nome valido e completamente qualificato ricorrendo alle registrazioni in search. Diversi server dei nomi possono venir resi noti tramite più righe inizianti con nameserver. I commenti vengono introdotti da # registra qui il server dei nomi indicato.

Il file Example 22.5, “/etc/resolv.conf” mostra un esempio per /etc/resolv.conf.

Example 22.5. /etc/resolv.conf

# Il nostro dominio
search 
#
# Usiamo  () come server dei nomi
nameserver 

Alcuni servizi, come pppd (wvdial), ipppd (isdn), dhcp (dhcpcd e dhclient), pcmcia e hotplug modificano il file /etc/resolv.conf tramite lo script modify_resolvconf.

Una volta modificato temporaneamente il file /etc/resolv.conf attraverso questo script, esso conterrà un commento definito che dichiarerà da che tipo di servizio è stato modificato, dove è memorizzato il file originale, e come possono essere disattivate le modifiche automatiche.

Se /etc/resolv.conf è stato modificato più volte, questa concatenazione di modifiche verrà sempre disattivata in modo ordinato, anche se le modifiche vengono annullate in ordine sparso. Cosa che può tranquillamente accadere, nel caso di isdn, pcmcia e hotplug.

Se avete terminato un servizio in modo non corretto, è possibile ripristinare lo stato iniziale con modify_resolvconf. Durante il caricamento, il sistema verifica se si sia fermato un resolv.conf modificato (p.es. a causa di un crollo del sistema) per poi ripristinare la versione originale (non modificata) di resolv.conf

modify_resolvconf check, permette a di stabilire se resolv.conf sia stato modificato ed avvertire l'utente che tali modifiche andranno perse con il ripristino della versione originale. Altrimenti non si serve di modify_resolvconf: modifiche apportate al file resolv.conf tramite ed una modifica effettuata manualmente sono equivalenti. In entrambi i casi, si tratta di una modifica mirata e duratura, mentre le modifiche tramite uno dei servizi menzionati sono di natura temporanea.

22.3.1.6.  /etc/hosts

In questo file (vd. file Example 22.6, “ /etc/hosts ”) vengono assegnati gli indirizzi IP agli host. Se non si utilizzano server dei nomi, devono venire elencati tutti gli host con i quali deve venire creato un collegamento IP. Per ogni host, in questo file viene annotata una riga consistente dell' indirizzo IP, nome qualificato e nome dell'host (p.es. ). L'indirizzo IP deve trovarsi all'inizio della riga, le registrazioni vengono separate da spazi o da tabulazioni. I commenti vengono preceduti da #.

Example 22.6.  /etc/hosts

127.0.0.1 localhost
  
  

22.3.1.7.  /etc/networks

Qui vengono convertiti i nomi della rete in indirizzi di rete. Il formato assomiglia a quello del file-hosts, qui però i nomi della rete precedono gli indirizzi (si veda file Example 22.7, “ /etc/networks ”).

Example 22.7.  /etc/networks

loopback     127.0.0.0
localnet     192.168.0.0

22.3.1.8.  /etc/host.conf

La risoluzione dei nomi, cioè la traduzione di nomi di host o di reti tramite la libreria resolver viene controllata da questo file; questo file viene usato solo per programmi linkati con libc4 o libc5; per i programmi glibc attuali, si veda le impostazioni in /etc/nsswitch.conf! Ogni parametro deve trovarsi in una propria riga, commenti vengono introdotti da #. La tabella Table 22.6, “Parametri per /etc/host.conf” mostra i parametri possibili.

Table 22.6. Parametri per /etc/host.conf

order hosts, bind

Sequenza nella quale vengono usati i servizi per la risoluzione di un nome. Possibili argomenti sono (separati da uno spazio o virgola):

hosts: cercare nel file /etc/hosts

 

bind: uso di un server dei nomi

 

nis: tramite NIS

 

multi on/off

Determina se un host registrato in /etc/hosts possa avere più indirizzi IP.

nospoof on spoofalert on/off

Questi parametri influiscono su lo spoofing del server dei nomi, ma non influiscono sulla configurazione della rete.

trim domainname

Il nome del dominio indicato viene distaccato dal nome di host prima la risoluzione del nome (sempre che il nome dell'host contenga questo nome di dominio). Questa opzione è d'aiuto se nel file /etc/hosts esistono solo nomi del dominio locale che però devono venire riconosciuti anche col nome del dominio annesso.

Un esempio per /etc/host.conf mostra il file Example 22.8, “ /etc/host.conf ”.

Example 22.8.  /etc/host.conf

# We have named running
order hosts bind
# Allow multiple addrs
multi on

22.3.1.9.  /etc/nsswitch.conf

Con la GNU C Library 2.0 è arrivato anche il Name Service Switch (NSS) (si veda la pagina di manuale di man 5 nsswitch.conf, come pure per maggiori dettagli The GNU C Library Reference Manual, il capitolo “System Databases and Name Service Switch”.

Il file /etc/nsswitch.conf stabilisce la sequenza nella quale verranno richieste determinate informazioni. Un esempio per nsswitch.conf viene mostrato nel file Example 22.9, “/etc/nsswitch.conf”. I commenti vengono introdotti da #. In questo caso per esempio, la registrazione nella banca dati hosts significa che una richiesta viene inviata a /etc/hosts (files) tramite DNS (cfr. sezione Section 22.7, “DNS: Domain Name System”) ).

Example 22.9. /etc/nsswitch.conf

passwd:     compat
group:      compat

hosts:      files dns
networks:   files dns

services:   db files
protocols:  db files

netgroup:   files
automount:  files nis

Le banche dati disponibili tramite NSS sono indicate nella tabella Table 22.7, “Banche dati disponibili tramite /etc/nsswitch.conf”; in futuro ci saranno anche automount, bootparams, netmasks e publickey.

Table 22.7. Banche dati disponibili tramite /etc/nsswitch.conf

aliases

Alias di mail, usato da sendmail; si veda la pagina di manuale man5 aliases.

ethers

Indirizzi ethernet.

group

Usato da getgrent per gruppi di utenti; si veda la pagina di manuale man  5 group.

hosts

Usato da gethostbyname e funzioni simili per nomi host e indirizzi IP.

netgroup

Elenco valido nella rete di host e utenti per regolare i diritti d'accesso; si veda la pagina di manuale man 5 netgroup.

networks

Nomi ed indirizzi di rete usati da getnetent

passwd

Password degli utenti usate da getpwent; si veda la pagina di manuale man 5 passwd.

protocols

Protocolli di rete usati da getprotoent; si veda la pagina di manuale man 5 protocols.

rpc

Nomi e indirizzi per la “Remote Procedure Call” usati da getrpcbyname e funzioni simili.

services

Servizi di rete usati da getservent.

shadow

Password “shadow” degli utenti usate da getspnam; si veda la pagina di manuale man5 shadow.

Le possibilità di configurazione delle banche dati NSS, vengono illustrate nella tabella Table 22.8, “Possibilitàdi configurazione delle banche dati NSS”.

Table 22.8. Possibilitàdi configurazione delle banche dati NSS

files

Accesso diretto ai file, per esempio su /etc/aliases.

db

Accesso tramite una banca dati.

nis

Si veda la sezione Section 22.8, “NIS: Network Information Service”.

nisplus

dns

Da usare come estensione solo con hosts e networks.

compat

Da usare come estensione solo con passwd, shadow e group

Inoltre con determinati risultati di ricerca è possibile provocare reazioni differenti; i dettagli a riguardo si trovano nella pagina di manuale man 5 nsswitch.conf

22.3.1.10.  /etc/nscd.conf

Tramite questo file viene configurato l'nscd (ingl. Name Service Cache Daemon); si veda man 8 nscd e man 5 nscd.conf. Di default le voci in passwd e groups vengono tenute nella cache. Per servizi di directory come NIS e LDAP ciò contribuisce in modo essenziale ad un buon livello di prestazione, poiché altrimenti per ogni accesso a nomi e gruppi si dovrebbe realizzare una connessione di rete. hosts di solito non viene memorizzato temporaneamente (chaching), dato che il sistema non può più fare affidamento su “forward/reverse lookups” di questo servizio di nome. Invece di affidare tale compito all' nscd, si dovrebbe impostare un server dei nomi “caching”.

Se, per esempio, è attivo il caching per passwd, ci vogliono in genere 15 secondi fino a che un utente locale appena creato sia noto al sistema. Riavviando nscd, si può ridurre il tempo d'attesa, il comando sarebbe: rcnscdrestart

22.3.1.11.  /etc/HOSTNAME

Qui si trova il nome dell'host, cioè solo il nome dell'host senza il nome del dominio. Durante l'avvio del computer, questo file viene letto da diversi script; il file può contenere solo una riga recante il nome dell'host!

22.3.2. Script di inizializzazione

Oltre ai file di configurazione descritti esistono diversi script che durante l'avvio del computer, inizializzano i programmi di rete. Questi script vengono avviati non appena il sistema passa in uno dei runlevel multiutente, (vd. tabella Table 22.9, “Alcuni script di inizializzazione dei programmi di rete”).

Table 22.9. Alcuni script di inizializzazione dei programmi di rete

/etc/init.d/network

Questo script si occupa della configurazione delle interfacce di rete. L'hardware deve essere già stata inizializzata tramite /etc/init.d/coldplug (tramite hotplug). Se non è stato lanciato il servizionetwork le interfacce di rete non potranno essere settate dal sistema hotplug al loro inserimento.

/etc/init.d/inetd

Lancia l'xinetd a cui si può ricorrere per mettere a disposizione all'occorrenza dei servizi di sistema sul sistema; ad es. può lanciare vsftpd non appena viene inizializzata una connessione FTP.

/etc/init.d/portmap

Lancia il port mapper che è necessario per poter usare i server RPC, come ad esempio un server NFS.

/etc/init.d/nfsserver

Inizializza il server NFS.

/etc/init.d/postfix

Controlla il processo postfix.

/etc/init.d/ypserv

Lancia il server NIS.

/etc/init.d/ypbind

Lancia il client NIS.