18.6.  Configurazione manuale di una connessione di rete

L'esecuzione manuale della configurazione del software di rete dovrebbe costituire un'alternativa estrema, al contrario di YaST il cui uso è consigliato. Queste informazioni generali sulla configurazione della rete possono tuttavia essere utili anche quando si utilizza YaST.

Tutte le schede di rete incorporate e di tipo HotPlug (PCMCIA, USB e alcune schede PCI) vengono rilevate e configurate mediante la tecnologia HotPlug. Una scheda di rete viene vista dal sistema in due modi, prima come dispositivo fisico e quindi come interfaccia. L'inserimento o il rilevamento di un dispositivo attiva un evento HotPlug, che a sua volta attiva l'inizializzazione del dispositivo mediante lo script hwup. Dopo l'inizializzazione della scheda di rete come una nuova interfaccia di rete, il kernel genera un altro evento HotPlug che attiva la configurazione dell'interfaccia mediante ifup.

I nomi di interfaccia vengono numerati dal kernel in base all'ordine temporale della relativa registrazione, mentre la sequenza di inizializzazione definisce l'assegnazione dei nomi. Se per una delle schede di rete si verifica un errore, la numerazione di tutte le schede inizializzate successivamente viene spostata. Per le schede realmente collegabili a caldo, il fattore determinante è l'ordine in cui vengono collegati i dispositivi.

Ai fini della flessibilità, la configurazione del dispositivo (hardware) e dell'interfaccia è stata separata e la mappatura delle configurazioni ai dispositivi e alle interfacce non viene più gestita in base ai nomi delle interfacce. Le configurazioni dei dispositivi si trovano nel percorso /etc/sysconfig/hardware/hwcfg-*, mentre quelle delle interfacce si trovano nel percorso /etc/sysconfig/network/ifcfg-*. I nomi delle configurazioni vengono assegnati secondo un metodo descrittivo che consente di identificare i dispositivi e le interfacce a cui sono associate. Il precedente metodo di mappatura dei driver ai nomi di interfaccia richiedeva l'uso di nomi di interfaccia statici, pertanto non può più essere utilizzato in /etc/modprobe.conf. Secondo il nuovo concetto, le voci alias immesse in questo file potrebbero causare effetti collaterali indesiderati.

I nomi di configurazione, ovvero la parte che segue hwcfg- o ifcfg-, possono descrivere i dispositivi per mezzo dello slot, di un ID specifico del dispositivo o del nome di interfaccia. Il nome di configurazione di una scheda PCI, ad esempio, potrebbe essere bus-pci-0000:02:01.0 (slot PCI) o vpid-0x8086-0x1014-0x0549 (fornitore e ID prodotto). Il nome dell'interfaccia associata potrebbe essere bus-pci-0000:02:01.0 o wlan-id-00:05:4e:42:31:7a (indirizzo MAC).

Per assegnare una determinata configurazione di rete a una scheda qualsiasi di un certo tipo (di cui ne viene inserita una sola alla volta) anzichè una certa scheda, selezionare nomi di configurazione meno specifici. Ad esempio, è possibile utilizzare bus-pcmcia per tutte le schede PCMCIA. I nomi possono essere limitati, d'altra parte, da un precedente tipo di interfaccia. Ad esempio, alle schede WLAN connesse a una porta USB verrà assegnato il nome wlan-bus-usb.

Il sistema utilizza sempre le configurazione che descrive meglio un'interfaccia o il dispositivo che fornisce l'interfaccia. La ricerca della configurazione più adatta viene gestita da getcfg. Nell'output di getcfg sono disponibili tutte le informazioni che è possibile utilizzare per descrivere un dispositivo. I dettagli riguardanti la specifica dei nomi di configurazione sono disponibili nella documentazione di getcfg.

Con il metodo descritto è possibile configurare un'interfaccia di rete nel modo corretto anche se i dispositivi di rete non sono sempre inizializzati nello stesso ordine. Il nome dell'interfaccia continua tuttavia a dipendere dalla sequenza di inizializzazione. Sono disponibili due modi per assicurare l'accesso in maniera affidabile all'interfaccia di una determinata scheda di rete:

ifup richiede un'interfaccia esistente, in quanto l'hardware non viene inizializzato. L'inizializzazione dell'hardware viene gestita dal comando hwup, eseguito da hotplug o coldplug. Quando si inizializza un dispositivo, viene eseguito automaticamente ifup per la nuova interfaccia tramite hotplug, la quale viene configurata se la modalità di avvio è impostata su onboot, hotplug o auto e il servizio network è stato avviato. In precedenza il comando ifup nomeinterfaccia attivava l'inizializzazione dell'hardware, mentre ora la procedura è stata invertita. Un componente hardware viene prima di tutto inizializzato, quindi seguono tutte le altre azioni. In questo modo è sempre possibile configurare un numero variabile di dispositivi nel modo migliore possibile mediante un set di configurazioni esistente.

Nella Tabella 18.5, "Script di configurazione manuale della rete" sono riassunti gli script più importanti utilizzati nella configurazione della rete. Dove possibile gli script sono distinti per hardware e interfaccia.

Tabella 18.5. Script di configurazione manuale della rete

Fase di configurazione

Comando

Funzione

Hardware

hw{up,down,status}

Gli script hw* vengono eseguiti dal sottosistema HotPlug per inizializzare un dispositivo, annullare l'inizializzazione o richiedere lo stato di un dispositivo. Ulteriori informazioni sono disponibili nella documentazione di hwup.

Interfaccia

getcfg

getcfg può essere utilizzato per richiedere il nome dell'interfaccia associata a un nome di configurazione o a una descrizione dell'hardware. Ulteriori informazioni sono disponibili nella documentazione di getcfg.

Interfaccia

if{up,down,status}

Gli script if* avviano le interfacce di rete esistenti o restituiscono lo stato dell'interfaccia specificata. Ulteriori informazioni sono disponibili nella documentazione di ifup.

Ulteriori informazioni su HotPlug e sui nomi di dispositivi permanenti sono disponibili nel Capitolo 12, Gestione dei dispositivi dinamici del kernel con udev.

18.6.1. File di configurazione

In questa sezione viene fornita una panoramica dei file di configurazione di rete e vengono descritti lo scopo e il formato utilizzato.

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

Questi file contengono le configurazioni hardware delle schede di rete e di altri dispositivi, oltre ai parametri necessari, ad esempio il modulo del kernel, la modalità di avvio e le associazioni di script. Per informazioni, fare riferimento alla documentazione di hwup. Indipendentemente dall'hardware esistente, le configurazioni hwcfg-static-* vengono applicate all'avvio di coldplug.

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

Questi file contengono le configurazioni per l'interfaccia di rete, ad esempio la modalità di avvio e l'indirizzo IP. I parametri possibili sono descritti nella documentazione di ifup. Se fosse necessario utilizzare un'impostazione generale per una sola interfaccia, è inoltre possibile utilizzare tutte le variabili dai file dhcp, wireless e config nei file ifcfg-*.

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

Il file config contiene impostazioni generali relative al comportamento di ifup, ifdown e ifstatus. dhcp contiene impostazioni per DHCP e wireless per le schede LAN wireless. Le variabili nei tre file di configurazione sono commentate e possono essere utilizzate anche nei file ifcfg-*, dove sono considerate con maggiore priorità.

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

In questo file viene determinato l'instradamento statico dei pacchetti TCP/IP. Tutti gli instradamenti statici necessari per i vari task di sistema possono essere immessi nel file /etc/sysconfig/network/routes, ovvero instradamenti a un host, a un host tramite un gateway e a una rete. Per ogni interfaccia che richiede un instradamento individuale, è necessario definire un file di configurazione aggiuntivo, /etc/sysconfig/network/ifroute-*. Sostituire * con il nome dell'interfaccia. Le voci contenute nei file di configurazione dell'instradamento hanno un aspetto analogo al seguente:

# Destination     Dummy/Gateway     Netmask            Device
#
127.0.0.0         0.0.0.0           255.255.255.0      lo
204.127.235.0     0.0.0.0           255.255.255.0      eth0
default           204.127.235.41    0.0.0.0            eth0
207.68.156.51     207.68.145.45     255.255.255.255    eth1
192.168.0.0       207.68.156.51     255.255.0.0        eth1

Nella prima colonna è indicata la destinazione dell'instradamento, ad esempio l'indirizzo IP di una rete o di un host oppure, nel caso di nomi di server raggiungibili, il nome completo della rete o dell'host.

Nella seconda colonna è indicato il gateway di default o un gateway attraverso il quale è possibile accedere a un host o alla rete. Nella terza colonna è indicata la maschera di rete per le reti o gli host che utilizzano un gateway. Ad esempio, 255.255.255.255 è la maschera per un host che utilizza un gateway.

La quarta colonna si riferisce solo alle reti connesse all'host locale, ad esempio un dispositivo di loopback, Ethernet, ISDN, PPP o fittizio. Il nome del dispositivo deve essere immesso in questa colonna.

È possibile anche usare una quinta colonna opzionale per specificare il tipo di instradamento. Verificare che le colonne non richieste contengano un segno meno - per essere certi che il parser interpreti correttamente il comando. Per informazioni più dettaglaite, vedere la documentazione di routes(5).

18.6.1.5. /etc/resolv.conf

In questo file (parola chiave search) viene specificato il dominio a cui appartiene l'host, oltre allo stato dell'indirizzo del server dei nomi (parola chiave nameserver). È possibile specificare più nomi di domini. Quando viene risolto un nome non completo, viene effettuato il tentativo di generarne uno aggiungendo le singole voci di search. Per utilizzare più server dei nomi immettere più righe, iniziando ognuna con nameserver. Anteporre ai commenti segni #. Il server dei nomi specificato viene immesso da YaST in questo file. Nell'Esempio 18.5, "/etc/resolv.conf" è illustrato il possibile aspetto di /etc/resolv.conf.

Esempio 18.5. /etc/resolv.conf


# Our domain
search example.com
#
# We use sun (192.168.0.20) as nameserver
nameserver 192.168.0.20

Alcuni servizi, ad esempio pppd (wvdial), ipppd (isdn), dhcp (dhcpcd e dhclient), pcmcia e hotplug, modificano il file /etc/resolv.conf mediante lo script modify_resolvconf. Se il file /etc/resolv.conf è stato modificato temporaneamente da questo script, contiene un commento predefinito con informazioni sul servizio che ha apportato la modifica, sulla posizione in cui si trova la copia di backup del file originale e sul modo per disattivare il meccanismo di modifica automatico. Se /etc/resolv.conf viene modificato più volte, include le modifiche in un formato nidificato. Tali modifiche possono essere ripristinate correttamente anche se l'operazione viene eseguita in un ordine diverso da quello in cui sono state immesse. I servizi che potrebbero richiedere questa flessibilità comprendono isdn, pcmcia e hotplug.

Se un servizio non è stato terminato in modo normale e corretto, è possibile utilizzare modify_resolvconf per ripristinare il file originale. All'avvio del sistema viene inoltre eseguito un controllo per verificare se, ad esempio, dopo un crash di sistema è presente un file resolv.conf modificato e non pulito, nel qual caso viene ripristinato il file resolv.conf originale (non modificato).

In YaST viene utilizzato il comando modify_resolvconf check per verificare se resolv.conf è stato modificato, quindi all'utente viene notificato che dopo il ripristino del file le modifiche andranno perse. A parte questo aspetto, modify_resolvconf non viene utilizzato da YaST e ciò significa che l'impatto della modifica di resolv.conf tramite YaST è lo stesso di qualsiasi modifica manuale. In entrambi i casi le modifiche hanno un effetto permanente, mentre le modifiche richieste dai servizi sopra indicati sono solo temporanee.

18.6.1.6.  /etc/hosts

In questo file, illustrato nell'Esempio 18.6, "/etc/hosts", gli indirizzi IP vengono assegnati a nomi host. Se non viene implementato un server dei nomi, tutti gli host con i quali verrà stabilita una connessione IP devono essere elencati in questo file. Per ogni host immettere nel file una riga formata dall'indirizzo IP, dal nome host completo e dal nome host. L'indirizzo IP deve trovarsi all'inizio della riga e le voci devono essere separate da spazi vuoti e tabulazioni. I commenti sono sempre preceduti dal segno #.

Esempio 18.6. /etc/hosts


127.0.0.1 localhost
192.168.0.20 sun.example.com sun
192.168.0.0 earth.example.com earth

18.6.1.7. /etc/networks

In questo file i nomi di rete vengono convertiti in indirizzi di rete. Il formato è simile a quello del file hosts, ad eccezione del fatto che i nomi di rete precedono gli indirizzi. Vedere l'Esempio 18.7, "/etc/networks".

Esempio 18.7. /etc/networks


loopback     127.0.0.0
localnet     192.168.0.0

18.6.1.8. /etc/host.conf

La risoluzione del nome, ovvero la conversione dei nomi host e di rete tramite la libreria del Resolver, viene controllata da questo file. Questo file viene utilizzato solo per i programmi collegati a libc4 o libc5. Per gli attuali programmi glibc, fare riferimento alle impostazioni contenute nel file /etc/nsswitch.conf. Utilizzare una riga per ogni singolo parametro. I commenti sono preceduti da un segno #. Nella Tabella 18.6, "Parametri per /etc/host.conf" sono illustrati i parametri disponibili. Nell'Esempio 18.8, " /etc/host.conf " è riportato un esempio di file /etc/host.conf.

Tabella 18.6. Parametri per /etc/host.conf

order hosts, bind

Specifica in quale ordine viene eseguito l'accesso ai servizi per la risoluzione del nome. Gli argomenti disponibili, separati da spazi vuoti o da virgole, sono:

hosts: cerca il file /etc/hosts.

bind: accede a un server dei nomi.

nis: utilizza NIS.

multi on/off

Definisce se un host immesso nel file /etc/hosts può avere più indirizzi IP.

nospoof on spoofalert on/off

Questi parametri hanno effetto sullo spoofing del server dei nomi tuttavia, a parte ciò, non hanno alcuna influenza sulla configurazione della rete.

trim domainname

Il nome di dominio specificato viene separato dal nome host dopo la risoluzione di quest'ultimo, a condizione che nel nome host sia incluso il nome di dominio. Questa opzione è utile se nel file /etc/hosts sono inclusi solo i nomi dal dominio locale, i quali devono tuttavia essere riconosciuti mediante i nomi di dominio associati.

Esempio 18.8.  /etc/host.conf


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

18.6.1.9. /etc/nsswitch.conf

L'introduzione della Libreria GNU C 2.0 è stata accompagnata dall'introduzione di Name Service Switch (NSS). Per informazioni, fare riferimento alla documentazione di nsswitch.conf(5) e a The GNU C Library Reference Manual.

L'ordine delle query è definito nel file /etc/nsswitch.conf. Nell'Esempio 18.9, "/etc/nsswitch.conf" è riportato un esempio di file nsswitch.conf. I commenti sono introdotti da segni #. In questo esempio la voce nel database hosts significa che viene inviata una richiesta a /etc/hosts (files) tramite DNS (vedere il Capitolo 20, DNS (Domain Name System)).

Esempio 18.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

I "database" disponibili tramite NSS sono elencati nella Tabella 18.7, "Database disponibili tramite /etc/nsswitch.conf". Nel prossimo futuro sono inoltre previsti automount, bootparams, netmasks e publickey. Le opzioni di configurazione per i database NSS sono elencate nella Tabella 18.8, "Opzioni di configurazione per i "database" NSS".

Tabella 18.7. Database disponibili tramite /etc/nsswitch.conf

aliases

Alias di posta implementati da sendmail; vedere man 5 aliases.

ethers

Indirizzi Ethernet.

group

Per gruppi di utenti, utilizzato da getgrent. Vedere anche la documentazione per group.

hosts

Per nomi host e indirizzi IP, utilizzato da gethostbyname e funzioni simili.

netgroup

Elenchi di utenti e host validi presenti nella rete allo scopo di controllare le autorizzazioni di accesso; vedere la documentazione di netgroup(5).

networks

Nomi e indirizzi di rete, utilizzato da getnetent.

passwd

Password utente, utilizzato da getpwent; vedere la documentazione di passwd(5).

protocols

Protocolli di rete, utilizzato da getprotoent; vedere la documentazione di protocols(5).

rpc

Nomi e indirizzi di chiamate di procedura remota (RPC), utilizzato da getrpcbyname e funzioni simili.

services

Servizi di rete, utilizzato da getservent.

shadow

Password shadow di utenti, utilizzato da getspnam; vedere la documentazione di shadow(5).

Tabella 18.8. Opzioni di configurazione per i "database" NSS

files

Accesso diretto ai file, ad esempio /etc/aliases.

db

Accesso tramite un database.

nis, nisplus

NIS, vedere anche il Capitolo 21,  Uso di NIS.

dns

Può essere utilizzata solo come estensione per hosts e networks.

compat

Può essere utilizzata solo come estensione per passwd, shadow e group.

18.6.1.10. /etc/nscd.conf

Questo file viene utilizzato per configurare nscd (Name Service Cache Daemon). Vedere la documentazione di nscd(8) e di nscd.conf(5). Per default, le voci di sistema di passwd e groups vengono memorizzate nella cache da nscd. È un aspetto importante per le prestazioni dei servizi di directory, come NIS e LDAP, poiché diversamente sarebbe necessario utilizzare la connessione di rete per ogni accesso a nomi o gruppi. hosts non viene memorizzato nella cache per default, in quanto il meccanismo di nscd per la memorizzazione nella cache di host non consente al sistema locale di eseguire in modo sicuro i controlli per le ricerche dirette e inverse. Anziché richiedere la memorizzazione nella cache dei nomi da parte di nscd, configurare un server DNS di caching.

Se viene attivata la funzione di caching per passwd, il riconoscimento di un nuovo utente locale aggiunto richiede di solito circa 15 secondi. Per ridurre questo tempo di attesa, riavviare nscd con il comando rcnscd restart.

18.6.1.11. /etc/HOSTNAME

Questo file contiene il nome host senza il nome di dominio associato e viene letto da numerosi script durante l'avvio del computer. Può contenere una sola riga nella quale è impostato il nome host.

18.6.2. Script di avvio

Oltre ai file di configurazione descritti in precedenza, sono disponibili diversi altri script che caricano i programmi di rete durante l'avvio del computer e che vengono avviati non appena il sistema passa a uno dei runlevel multi-utente. Nella Tabella 18.9, "Alcuni script di avvio per i programmi di rete" sono descritti alcuni di questi script.

Tabella 18.9. Alcuni script di avvio per i programmi di rete

/etc/init.d/network

Questo script gestisce la configurazione delle interfacce di rete. L'hardware deve essere già stato inizializzato da /etc/init.d/coldplug (tramite hotplug). Se il servizio network non è stato avviato, le interfacce di rete non verranno implementate al momento dell'inserimento tramite hotplug.

/etc/init.d/inetd

Avvia xinetd che può essere utilizzato per rendere disponibili i servizi server nel sistema. Ad esempio, può avviare vsftpd ogni volta che viene iniziata una connessione FTP.

/etc/init.d/portmap

Avvia il portmapper necessario per il server RPC, ad esempio un server NFS.

/etc/init.d/nfsserver

Avvia il server NFS.

/etc/init.d/sendmail

Controlla il processo sendmail.

/etc/init.d/ypserv

Avvia il server NIS.

/etc/init.d/ypbind

Avvia il client NIS.