7.13. Configurazione dello script di rete

Questa sezione si applica solamente se è necessario configurare un scheda di rete.

Se non si dispone di schede di rete è consigliabile non creare alcun file di configurazione relativo alle schede di rete. In questo caso è necessario rimuovoere i link simbolici network da tutte le directory dei run-level (/etc/rc.d/rc*.d).

7.13.1. Creazione di nomi stabili delle interfacce di rete

Le istruzioni in questa sezione sono opzionali se si ha soltanto una scheda di rete.

Con Udev e i driver di rete modulari, la numerazione dell'interfaccia di rete predefinita non permane dopo il riavvio, perché i driver sono caricati in parallelo e, pertanto, in ordine casuale. Per esempio, su un computer che ha due schede di rete di marca Intel e Realtek, la scheda di rete fabbricata da Intel può divenire eth0 e la scheda Realtek eth1. In qualche caso, dopo il riavvio le schede ottengono numerazioni diverse. Per evitare questo, occorre creare regole di Udev che assegnino nomi stabili alle schede di rete basati o sul loro indirizzo MAC o sulla posizione del bus.

Se si ha intenzione di usare l'indirizzo MAC per identificare le proprie schede di rete, cercare gli indirizzi con il seguente comando:

grep -H . /sys/class/net/*/address

Per ogni scheda di rete (tranne che per l'interfaccia loopback), inventare un nome descrittivo, simile a «realtek», e creare regole di Udev simili alla seguente:

cat > /etc/udev/rules.d/26-network.rules << EOF
ACTION=="add", SUBSYSTEM=="net", SYSFS{address}=="00:e0:4c:12:34:56", \
    NAME="realtek"
ACTION=="add", SUBSYSTEM=="net", SYSFS{address}=="00:a0:c9:78:9a:bc", \
    NAME="intel"
EOF
[Nota]

Nota

Sebbene gli esempi in questo libro funzionino propriamente, occorre sapere che udev non riconosce la backslash per la prosecuzione di riga. Se si modificano regole di udev con un editor, assicurarsi di lasciare ogni regola su una riga fisica.

Se si ha intenzione di utilizzare come chiave la posizione del bus, creare regole di Udev simili alla seguente:

cat > /etc/udev/rules.d/26-network.rules << EOF
ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:00:0c.0", \
    NAME="realtek"
ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:00:0d.0", \
    NAME="intel"
EOF

Queste regole rinomineranno sempre le schede di rete come «realtek» e «intel», indipendentemente dalla numerazione originale fornita dal kernel (per esempio: le originali interfacce «eth0» e «eth1» non esisteranno più, a meno che si inseriscano quei nomi come «descrittivi» nella chiave NAME). Nelle regole di Udev usare nomi descrittivi invece di «eth0» nei file di configurazione dell'interfaccia di rete di sopra.

Notare che le regole suddette non funzionano per ogni setup. Per esempio, regole basate su MAC falliscono quando sono usate con bridge o VLAN, perché bridge e VLAN hanno lo stesso indirizzo MAC della scheda di rete. Si rinomini solo l'interfaccia della scheda di rete, non l'interfaccia bridge o VLAN, ma la regola d'esempio le abbina entrambe. Se si usano tali interfacce virtuali, si hanno due soluzioni potenziali. Una è di aggiungere la chiave DRIVER=="?*" dopo SUBSYSTEM=="net" nelle regole basate sul MAC le quali stabiliscono l'abbinamento delle interfacce virtuali. Questo si sa che fallisce con alcune vecchie schede Ethernet, perché esse non hanno la variabile DRIVER nell'uevent e per questo motivo la regola non si abbina con tali schede. Un'altra soluzione è di passare a regole che usino come chiave la posizione del bus.

Il secondo caso di non-funzionamento è con schede wireless che usano i driver MadWifi o HostAP, perché esse creano almeno due interfacce con lo stesso indirizzo MAC e posizione del bus. Per esempio, il driver Madwifi crea sia un interfaccia athX che una wifiX dove X è il numero. Per differenziare queste interfacce, aggiungere una appropriato parametro del KERNEL come KERNEL=="ath*" dopo SUBSYSTEM=="net".

Ci possono essere altri casi dove le regole sopra non funzionano. Attualmente vengono ancora segnalati bug su questo problema alle distribuzioni Linux, e non esiste soluzione che copra ogni caso.

7.13.2. Creazione dei file di configurazione per le intefacce di rete

Quali interfacce vengano attivate e disattivate dagli script di rete dipende dai file e directory nella gerarchia /etc/sysconfig/network-devices. Questa directory deve contenere una sottodirectory per ciascuna interfaccia da configurare, nella forma ifconfig.xyz, dove «xyz» è il nome di un'interfaccia di rete. In questa directory ci saranno file che definiscono gli attributi di questa interfaccia, come indirizzo(i) IP, maschera della sottorete, e così via

Il seguente comando crea un file ipv4 di esempio per il dispositivo eth0:

cd /etc/sysconfig/network-devices &&
mkdir -v ifconfig.eth0 &&
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
PREFIX=24
BROADCAST=192.168.1.255
EOF

Naturalmente i valori di queste variabili dovranno essere modificati in ogni file, per una corretta impostazione. Se la variabile ONBOOT è impostata a «yes», lo script di rete attiverà la scheda di rete (NIC) durante l'avvio del sistema. Se si imposta a qualcos'altro diverso da «yes», la scheda di rete (NIC) verrà ignorata dallo script e quindi non attivata.

La variabile SERVICE definisce il metodo di ottenimento dell'indirizzo IP. Il pacchetto LFS-Bootscripts ha un formato modulare di assegnamento degli IP, e la creazione di altri file nella directory /etc/sysconfig/network-devices/services permette altri metodi di assegnamento degli IP. Questo è comunemente utilizzato per il Dynamic Host Configuration Protocol (DHCP), che verrà utilizzato nel libro BLFS.

La variabile GATEWAY deve contenere l'IP del gateway predefinito, se esiste. Altrimenti commentare la variabile.

La variabile PREFIX deve contenere il numero di bit usati nella sottorete. Ogni ottetto in un indirizzo IP consiste di 8 bit. Se la netmask della sottorete è 255.255.255.0 si usano i primi tre ottetti (24 bit) per specificare il numero della rete. Se la netmask è 255.255.255.240 si useranno i primi 28 bit. Prefissi maggiori di 24 bit sono usati comunemente da Internet Service Provider (ISP) di reti DSL e via cavo. In questo esempio (PREFIX=24), la netmask è 255.255.255.0. Aggiustare la variabile PREFIX in base alla sottorete specifica.

7.13.3. Creazione del file /etc/resolv.conf

Se si vuole connettersi a Internet sarà necessario definire le modalità di risoluzione dei nomi DNS (Domain Name Service) per risolvere i nomi di dominio in indirizzi IP. Tale funzionalità può essere realizzata inserendo l'indirizzo IP del proprio DNS, reso disponibile dall'ISP (Internet Service Provider) o dall'amministratore di rete, nel file /etc/resolv.conf. Creare il file eseguendo il comando seguente:

cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf

domain {[Il nome del vostro dominio]}
nameserver [indirizzo IP del nameserver primario]
nameserver [indirizzo IP del nameserver secondario]


# End /etc/resolv.conf
EOF

Naturalmente sostituire [indirizzo IP del nameserver] con l'indirizzo IP del DNS più appropriato per la propria configurazione. Spesso ci può essere più di un indirizzo IP nel file di configurazione (è richiesto un server secondario per evitare fallimenti). Se non è necessario o si desidera avere solo un server DNS, rimuovere dal file la seconda linea contenente nameserver. L'indirizzo IP può essere un router nella rete locale.