Capitolo 5. Impostazione della rete

Indice

5.1. L'infrastruttura base di rete
5.1.1. Il nome di dominio
5.1.2. Risoluzione dei nomi di host
5.1.3. Il nome dell'interfaccia di rete
5.1.4. L'intervallo degli indirizzi di rete per la LAN
5.1.5. Il supporto per i dispositivi di rete
5.2. La configurazione moderna della rete per il desktop
5.2.1. Strumenti grafici di configurazione della rete
5.3. La vecchia connessione e configurazione di rete
5.4. Il metodo di connessione alla rete (datato)
5.4.1. Connessione DHCP con Ethernet
5.4.2. Connessione con IP statico con Ethernet
5.4.3. Connessione PPP con pppconfig
5.4.4. Connessione PPP alternativa con wvdialconf
5.4.5. Connessione PPPoE con pppoeconf
5.5. Configurazione base della rete con ifupdown (metodo vecchio)
5.5.1. Sintassi di base dei comandi
5.5.2. Sintassi di base di "/etc/network/interfaces"
5.5.3. Interfaccia di rete loopback
5.5.4. Interfaccia di rete servita da DHCP
5.5.5. Interfaccia di rete con IP statico
5.5.6. Informazioni di base sull'interfaccia LAN wireless
5.5.7. Interfaccia LAN wireless con WPA/WPA2
5.5.8. Interfaccia LAN wireless con WEP
5.5.9. Connessione PPP
5.5.10. Connessione PPP alternativa
5.5.11. Connessione PPPoE
5.5.12. Lo stato di configurazione della rete di ifupdown
5.5.13. Riconfigurazione base della rete
5.5.14. Pacchetto ifupdown-extra
5.6. Configurazione avanzata della rete con ifupdown (strumento datato)
5.6.1. Il pacchetto ifplugd
5.6.2. Il pacchetto ifmetric
5.6.3. L'interfaccia virtuale
5.6.4. Sintassi avanzata dei comandi
5.6.5. Il blocco di mappatura "mapping"
5.6.6. Configurazione della rete commutabile manualmente
5.6.7. Uso di script con il sistema ifupdown
5.6.8. Mappatura con guessnet
5.7. Configurazione della rete a basso livello
5.7.1. Comandi iproute2
5.7.2. Operazioni sicure a basso livello sulla rete
5.8. Ottimizzazione della rete
5.8.1. Trovare l'MTU ottimale
5.8.2. Impostazione dell'MTU
5.8.3. Ottimizzazione di TCP per la WAN
5.9. Infrastruttura netfilter
[Suggerimento] Suggerimento

Per una guida generica all'uso della rete in GNU/Linux, leggere la Linux Network Administrators Guide.

[Suggerimento] Suggerimento

Anche se questo documento usa ancora il vecchio ifconfig(8) con IPv4 per i suoi esempi di configurazione della rete, Debian sta migrando a ip(8) con IPv4+IPv6 nel rilascio wheezy. Patch per aggiornare questo documento sono le benvenute.

5.1. L'infrastruttura base di rete

In questa sezione viene descritta in breve l'infrastruttura base di rete in un sistema Debian moderno.

Tabella 5.1. Elenco degli strumenti di configurazione della rete

pacchetto popcon dimensione tipo descrizione
ifupdown V:589, I:993 191 config::ifupdown strumento standard per attivare e disattivare la rete (specifico di Debian)
ifplugd V:4, I:10 352 " " gestisce automaticamente la rete cablata
ifupdown-extra V:0, I:2 119 " " script per testare la rete di supporto al pacchetto "ifupdown"
ifmetric V:0, I:1 100 " " imposta la metrica di routing per un'interfaccia di rete
guessnet V:0, I:1 532 " " script di mappatura di supporto al pacchetto "ifupdown", attraverso il file "/etc/network/interfaces"
ifscheme V:0, I:0 132 " " script di mappatura di supporto al pacchetto "ifupdown"
ifupdown-scripts-zg2 V:0, I:0 147 " " script di interfaccia di Zugschlus per il metodo manuale di ifupdown
network-manager V:310, I:395 4015 config::NM NetworkManager (demone): gestisce la rete automaticamente
network-manager-gnome V:227, I:345 5746 " " NetworkManager (frontend GNOME)
network-manager-kde V:7, I:29 36 " " NetworkManager (frontend KDE)
wicd I:33 48 config::wicd gestore della rete cablata e wireless (metapacchetto)
wicd-cli V:0, I:4 87 " " gestore della rete cablata e wireless (client a riga di comando)
wicd-curses V:2, I:7 195 " " gestore della rete cablata e wireless (client Curses)
wicd-daemon V:32, I:38 1654 " " gestore della rete cablata e wireless (demone)
wicd-gtk V:26, I:35 552 " " gestore della rete cablata e wireless (client GTK+)
iptables V:277, I:993 1378 config::Netfilter strumenti amministrativi per filtraggio di pacchetti di rete e NAT (Netfilter)
iproute V:637, I:967 970 config::iproute2 iproute2, IPv6 e altra configurazione di rete avanzata: ip(8), tc(8), ecc.
ifrename V:2, I:3 192 " " rinomina le interfacce di rete in base a vari criteri statici: ifrename(8)
ethtool V:65, I:156 292 " " mostra e modifica le impostazioni dei device Ethernet
iputils-ping V:359, I:996 97 test::iproute2 testa la raggiungibilità di rete di un host remoto con nome host o indirizzo IP (iproute2)
iputils-arping V:4, I:32 36 " " testa la raggiungibilità di rete di un host remoto specificato con il suo indirizzo ARP
iputils-tracepath V:14, I:109 67 " " traccia il percorso di rete verso un host remoto
net-tools V:698, I:997 916 config::net-tools toolkit di rete NET-3 (net-tools, configurazione di rete IPv4): ifconfig(8), ecc.
inetutils-ping V:0, I:1 278 test::net-tools testa la raggiungibilità della rete di un host remoto con nome host o indirizzo IP (datato, GNU)
arping V:4, I:32 46 " " testa la raggiungibilità di rete di un host remoto specificato con il suo indirizzo ARP (datato)
traceroute V:113, I:992 175 " " traccia il percorso di rete verso un host remoto (datato, console)
isc-dhcp-client V:429, I:797 1768 config::low-level client DHCP
wpasupplicant V:345, I:460 1364 " " supporto client per WPA e WPA2 (IEEE 802.11i)
wpagui V:0, I:7 790 " " client GUI Qt per WPA supplicant
wireless-tools V:73, I:243 325 " " strumenti per manipolare le estensioni wireless per Linux
ppp V:70, I:444 863 " " connessione PPP/PPPoE con chat
pppoeconf V:2, I:27 340 config::helper strumento di aiuto di configurazione per la connessione PPPoE
pppconfig V:1, I:12 990 " " strumento di aiuto per la connessione PPP con chat
wvdial V:3, I:17 276 " " strumento di aiuto per la connessione PPP con wvdial e ppp
mtr-tiny V:15, I:121 113 test::low-level traccia il percorso di rete verso un host remoto (curses)
mtr V:6, I:36 154 " " traccia il percorso di rete verso un host remoto (curses e GTK+)
gnome-nettool V:28, I:330 2644 " " strumenti per operazioni comuni sulle informazioni di rete (GNOME)
nmap V:61, I:337 14940 " " strumento per mappatura della rete / esplorazione delle porte (Nmap, console)
zenmap V:2, I:14 2177 " " strumento per mappatura della rete /esplorazione delle porte (GTK+)
tcpdump V:32, I:224 1028 " " analizzatore del traffico di rete (Tcpdump, console)
wireshark V:13, I:88 2472 " " analizzatore del traffico di rete (Wireshark, GTK+)
tshark V:4, I:35 338 " " analizzatore del traffico di rete (console)
nagios3 V:4, I:16 29 " " sistema di monitoraggio e gestione per host, servizi e reti (Nagios)
tcptrace V:0, I:3 389 " " produce un riassunto delle connessioni dall'output di tcpdump
snort V:3, I:4 1752 " " sistema flessibile di rilevazione delle intrusioni di rete (Snort)
ntop V:6, I:14 1674 " " mostra l'uso della rete nel browser web
dnsutils V:115, I:921 374 " " client di rete forniti con BIND: nslookup(8), nsupdate(8), dig
dlint V:3, I:60 96 " " controlla l'informazione DNS di zona usando interrogazioni del server di nomi
dnstracer V:0, I:4 81 " " traccia una catena di server DNS fino alla sorgente

5.1.1. Il nome di dominio

La scelta del nome di dominio è un punto un po' problematico per gli utenti con normali postazioni di lavoro PC. La postazione di lavoro potrebbe essere una portatile che si sposta nella rete oppure essere posta dietro un firewall NAT e inaccessibile da Internet. Per questo è bene che il nome di dominio non sia un nome valido per evitare collisioni di nomi.

Se non si è sicuri su cosa scegliere per il nome di dominio, scegliere "localdomain".

Altre scelte popolari per TLD (top-level domain, domini di primo livello) di questo tipo, non validi e sicuri sembrano essere "lan", "localnet", "home", "invalid" o "local", stando all'analisi della mia posta in entrata. Ciò è coerente con le interrogazioni TLD non valide riportate. Si possono anche scegliere domini di secondo o terzo livello non usati.

[Avvertimento] Avvertimento

Se il servizio DNS della propria LAN usa "local come TLD per la LAN, potrebbe interferire con mDNS.

[Suggerimento] Suggerimento

Quando si utilizza un nome di dominio non valido, è necessario falsificare il nome di dominio usato da alcuni programmi, come gli MTA per il loro corretto funzionamento. Vedere Sezione 6.3.3, «La configurazione dell'indirizzo di posta».

5.1.2. Risoluzione dei nomi di host

La risoluzione del nome host è attualmente supportata dal meccanismo NSS (Name Service Switch). Il flusso di eventi nella risoluzione è il seguente.

  1. Il file "/etc/nsswitch.conf" con blocchi tipo "hosts: files dns" detta l'ordine di risoluzione dei nomi di host. (Questo rimpiazza la vecchia funzionalità del blocco "order in "/etc/host.conf".)

  2. Il metodo files è invocato per primo. Se il nome host viene trovato nel file "/etc/hosts", vengono restituiti tutti gli indirizzi validi per esso e il programma termina. (Il file "/etc/host.conf" contiene "multi on".)

  3. Viene invocato il metodo dns. Se il nome host viene trovato dalla interrogazione al DNS (Internet Domain Name System, sistema dei nomi di dominio Internet), identificato dal file "/etc/resolv.conf", vengono restituiti tutti gli indirizzi validi per esso e il programma termina.

Per esempio, "/etc/hosts" contiene righe come le seguenti.

127.0.0.1 localhost
127.0.1.1 <nome_host>.<nome_dominio> <nome_host>

# Le righe seguenti sono desiderabili per host con supporto per IPv6
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Ogni riga inizia con un indirizzo IP e prosegue con l'hostname associato.

L'indirizzo IP 127.0.1.1 nella seconda riga dell'esempio può non essere presente in altri sistemi simil-Unix. L'Installatore Debian crea questa voce per i sistemi senza un indirizzo IP permanente come soluzione per alcuni software (es., GNOME) come documentato nel bug#316099.

Il <nome_host> corrisponde al nome host definito in "/etc/hostname".

Per il <nome_dominio> dei PC portatili, si può scegliere un dominio non valido e sicuro come "localdomain". (Vedere Sezione 5.1.1, «Il nome di dominio».)

Per un sistema con un indirizzo IP permanente, si dovrebbe usare qui tale indirizzo invece di 127.0.1.1.

Per un sistema con un indirizzo IP permanente e un FQDN (Fully Qualified Domain Name, nome di dominio pienamente qualificato) fornito dal DNS (Domain Name System), dovrebbero essere usati qui tali <nome_host> e <nome_dominio>.

Il file "/etc/resolv.conf" è un file statico se non è installato il pacchetto resolvconf. Se invece quest'ultimo è installato il file è un collegamento simbolico. In ogni caso contiene le informazioni che inizializzano le routine del risolutore. Se il DNS si trova all'IP="192.168.11.1", il file conterrà la riga seguente.

nameserver 192.168.11.1

Il pacchetto resolvconf rendo questo file "/etc/resolv.conf" un collegamento simbolico e gestisce il suo contenuto con script eseguiti in automatico.

La risoluzione del nome host con DNS Multicast (usando Zeroconf, ossia Apple Bonjour /Apple Rendezvous), che permette la risoluzione dei nomi in modo efficace da parte dei comuni programmi Unix/Linux nel dominio mDNS ad-hoc "local", può essere fornita installando il pacchetto libnss-mdns. Per abilitare questa funzionalità il file "/etc/nsswitch.conf" dovrebbe contenere un blocco come "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4".

La risoluzione del nome host con il deprecato NETBios su TCP/IP, usato dai vecchi sistemi Windows può essere fornita installando il pacchetto winbind. Per abilitare questa funzionalità il file "/etc/nsswitch.conf" dovrebbe avere una sezione come "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 wins". (I sistemi Windows moderni solitamente usano il metodo dns per la risoluzione del nome host.)

5.1.3. Il nome dell'interfaccia di rete

Il nome dell'interfaccia di rete, ad esempio eth0, viene assegnato a ciascun hardware, quando viene rilevato, nel kernel Linux attraverso il meccanismo di configurazione in spazio utente udev (vedere Sezione 3.5.11, «Il sistema udev»). Il nome dell'interfaccia di rete è chiamato interfaccia fisica in ifup(8) e interfaces(5).

Per garantire che ciascuna interfaccia di rete abbia un nome persistente ad ogni avvio, usando indirizzi MAC ecc., esiste un file di memorizzazione: "/etc/udev/rules.d/70-persistent-net.rules". Questo file viene generato automaticamente dal programma "/lib/udev/write_net_rules" eseguito probabilmente dal file "persistent-net-generator.rules". Lo si può modificare per cambiare le regole di assegnazione dei nomi.

[Attenzione] Attenzione

Quando si modifica il file delle regole "/etc/udev/rules.d/70-persistent-net.rules", si deve mantenere ciascuna regola su una singola riga e l'indirizzo MAC in lettere minuscole. Per esempio, se si trova in quessto file una voce "FireWire device" e una "PCI device", probabilmente si vorrà chiamare "PCI device" eth0 e configurarla come interfaccia di rete primaria.

5.1.4. L'intervallo degli indirizzi di rete per la LAN

Ecco un ripasso degli intervalli di indirizzi IPv4 a 32 bit in ciascuna classe, riservati per l'uso in reti locali (LAN) dalla rfc1918. È garantito che questi indirizzi non creino conflitti con altri indirizzi della vera e propria rete Internet.

Tabella 5.2. Elenco di intervalli di indirizzi di rete

Classe indirizzi di rete maschera di rete maschera rete /bit numero di sottoreti
A 10.x.x.x 255.0.0.0 /8 1
B 172.16.x.x — 172.31.x.x 255.255.0.0 /16 16
C 192.168.0.x — 192.168.255.x 255.255.255.0 /24 256

[Nota] Nota

Se uno di questi indirizzi viene assegnato ad un host, allora l'host non deve accedere ad Internet direttamente, ma deve accedervi attraverso un gateway che agisca da proxy per i singoli servizi o che, in alternativa, faccia da NAT (Network Address Translation, traduzione degli indirizzi di rete). I router a banda larga di solito agiscono da NAT per l'ambiente LAN dell'utente finale.

5.1.5. Il supporto per i dispositivi di rete

Nonostante la maggior parte dei dispositivi hardware sia supportata dal sistema Debian, ci sono alcuni dispositivi di rete che necessitano, per essere supportati, firmware non libero secondo la definizione nelle DFSG. Vedere Sezione 9.7.6, «Driver per hardware e firmware».

5.2. La configurazione moderna della rete per il desktop

I sistemi Debian squeeze possono gestire la connessione di rete attraverso software per demoni di gestione come NetworkManager (NM) (network-manager e pacchetti associati) oppure Wicd (wicd e pacchetti associati).

  • Questi sono forniti con propri programmi per l'interfaccia utente con GUI o a riga di comando.

  • Sono forniti con un proprio demone come sistema di backend.

  • Permettono al proprio sistema di connettersi facilmente ad Internet.

  • Permettono una facile gestione della configurazione delle reti cablate e wireless.

  • Permettono di configurare la rete in modo indipendente dal datato pacchetto ifupdown.

[Nota] Nota

Non usare questi strumenti di configurazione automatica della rete per server. Sono pensati principalmente per utenti con desktop mobili su portatili.

Questi strumenti moderni di configurazione della rete devono essere configurati in modo corretto per evitare conflitti con il datato pacchetto ifupdown e con il suo file di configurazione "/etc/network/interfaces".

[Nota] Nota

Alcune funzionalità di questi strumenti automatici di configurazione della rete possono soffrire dei problemi. Non sono così robusti come il vecchio pacchetto ifupdown. Controllare il BTS di network-manager e il BTS di wicd per vedere i problemi e i limiti attuali.

5.2.1. Strumenti grafici di configurazione della rete

La documentazione ufficiale per NM e Wicd su Debian è fornita rispettivamente in "/usr/share/doc/network-manager/README.Debian" e "/usr/share/doc/wicd/README.Debian".

Fondamentalmente, la configurazione di rete per il desktop viene fatta nel modo seguente.

  1. Aggiungere l'utente desktop, ad esempio pippo, al gruppo "netdev" con il comando seguente. (In alternativa farlo automaticamente attraverso D-bus nei moderni ambienti desktop come GNOME e KDE).

    $ sudo adduser pippo netdev
  2. Mantenere la configurazione di "/etc/network/interfaces" semplice come la seguente.

    auto lo
    iface lo inet loopback
  3. Riavviare NM o Wicd con il comando seguente.

    $ sudo /etc/init.d/network-manager restart
    $ sudo /etc/init.d/wicd restart
  4. Configurare la propria rete attraverso l'interfaccia grafica.

[Nota] Nota

Solo le interfacce che non sono elencate in "/etc/network/interfaces" o che sono state configurate con "auto …" o "allow-hotplug …" e "iface … inet dhcp" (e con nessuna altra opzione) sono gestite da NM, per evitare conflitti con ifupdown.

[Suggerimento] Suggerimento

Se si desirano estendere le capacità di configurazione della rete di NM, cercare i moduli plugin appropriati e i pacchetti supplementari, quali network-manager-openconnect, network-manager-openvpn-gnome, network-manager-pptp-gnome, mobile-broadband-provider-info, gnome-bluetooth, ecc. Lo stesso vale per quelli di Wicd.

[Attenzione] Attenzione

Questi strumenti di configurazione automatica della rete possono non essere compatibili con alcune configurazioni esotiche del datato ifupdown contenute in "/etc/network/interfaces", come quelle in Sezione 5.5, «Configurazione base della rete con ifupdown (metodo vecchio)» e Sezione 5.6, «Configurazione avanzata della rete con ifupdown (strumento datato)». Per informazioni sui problemi e le limitazioni attualmente esistenti, controllare il BTS di network-manager e il BTS di wicd.

5.3. La vecchia connessione e configurazione di rete

Quando il metodo descritto in Sezione 5.2, «La configurazione moderna della rete per il desktop» non è sufficiente per le proprie necessità, si dovrebbe usare il metodo datato di connessione e configurazione della rete che combina assieme diversi strumenti più semplici.

La connessione di rete in vecchio stile è specifica per ciascun metodo (vedere Sezione 5.4, «Il metodo di connessione alla rete (datato)»).

Esistono 2 tipi di programma per la configurazione a basso livello della rete in Linux (vedere Sezione 5.7.1, «Comandi iproute2»).

  • I vecchi programmi net-tools (ifconfig(8), …) provengono dal sistema di rete Linux NET-3. La maggior parte di essi è ora superata.

  • I nuovi programmi Linux iproute2 (ip(8), …) formano l'attuale sistema Linux di rete.

Anche se questi programmi di rete a basso livello sono potenti, sono complicati da usare. Perciò sono stati creati strumenti di configurazione della rete di alto livello.

Il pacchetto ifupdown è lo standard de facto per una configurazione di rete di altro livello di questo tipo in Debian. Permette di attivare la rete semplicemente eseguendo, per esempio, "ifup eth0". Il suo file di configurazione è il file "/etc/network/interfaces" e i suoi contenuti hanno tipicamente un aspetto simile al seguente.

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Il pacchetto resolvconf è stato creato per fornire al sistema ifupdown il supporto per una riconfigurazione indolore della risoluzione degli indirizzi di rete, riscrivendo automaticamente il file "/etc/resolv.conf" di configurazione del risolutore. Attualmente la maggior parte dei pacchetti di configurazione della rete in Debian sono modificati per usare il pacchetto resolvconf (vedere "/usr/share/doc/resolvconf/README.Debian").

Per automatizzare la configurazione dinamica di ambienti di rete come un PC portatile in una LAN cablata, sono stati creati script di aiuto per il pacchetto ifupdown, come ifplugd, guessnet, ifscheme, ecc. Essi sono relativamente difficili da usare ma si comportano bene con il sistema ifupdown esistente.

Questi sono spiegati in dettaglio con esempi (vedere Sezione 5.5, «Configurazione base della rete con ifupdown (metodo vecchio)» e Sezione 5.6, «Configurazione avanzata della rete con ifupdown (strumento datato)»).

5.4. Il metodo di connessione alla rete (datato)

[Attenzione] Attenzione

I metodi per testare la connessione descritti in questa sezione sono pensati per fare prove. Non sono pensati per essere usati direttamente per connettersi alla rete quotidianamente. È consigliato il loro uso con NM, Wicd o il pacchetto ifupdown (vedere Sezione 5.2, «La configurazione moderna della rete per il desktop» e Sezione 5.5, «Configurazione base della rete con ifupdown (metodo vecchio)»).

I metodi di connessione tipici alla rete e i percorsi tipici per la connessione per un PC possono essere schematizzati nel modo seguente.

Tabella 5.3. Elenco dei metodi di connessione alla rete e dei percorsi di connessione

PC metodo di connessione percorso di connessione
Porta seriale (ppp0) PPP modem ⇔ POTS ⇔ punto di accesso dial-up ⇔ ISP
Porta ethernet (eth0) PPPoE/DHCP/Statico ⇔ modem BB (banda larga) ⇔ servizio BB ⇔ punto di accesso BB ⇔ ISP
Porta ethernet (eth0) DHCP/Statico ⇔ LAN ⇔ router BB (banda larga) con NAT (traduzione degli indirizzi di rete (⇔ modem BB …)

Quella che segue è una schematizzazione degli script di configurazione per ciascun metodo di connessione.

Tabella 5.4. Elenco di configurazioni della connessione di rete

metodo di connessione configurazione pacchetto(i) backend
PPP pppconfig per creare chat deterministiche pppconfig, ppp
PPP (alternativo) wvdialconf per creare chat euristiche ppp, wvdial
PPPoE pppoeconf per creare chat deterministiche pppoeconf, ppp
DHCP descritto in "/etc/dhcp/dhclient.conf" isc-dhcp-client
IP statico (IPv4) descritto in "/etc/network/interfaces" net-tools
IP statico (IPv6) descritto in "/etc/network/interfaces" iproute

Gli acronimi per le connessioni di rete hanno il significato seguente.

Tabella 5.5. Elenco di acronimi per le connessioni di rete

acronimo significato
POTS Plain Old Telephone Service, il semplice vecchio servizio telefonico
BB banda larga
servizio BB (BB-service) ad esempio, la linea digitale (DSL), la TV via cavo o fibre ottiche
modem BB ad esempio, il modem DSL, il modem via cavo o l'ONT, il terminale di rete ottica
LAN rete locale (Local Area Network)
WAN rete geografica (Wide Area Network)
DHCP Protocollo di Configurazione Dinamica dell'Host
PPP protocollo Point-to-Point
PPPoE protocollo Point-to-Point via Ethernet
ISP Fornitore di servizi Internet (Internet Service Provider)

[Nota] Nota

I servizi di connessione WAN attraverso la TV via cavo sono generalmente serviti da DHCP o PPPoE. Quelli ADSL e FTTP sono generalmente serviti da PPPoE. Si deve consultare il proprio fornitore di servizi Internet per i requisiti esatti di configurazione della connessione WAN.

[Nota] Nota

Quando un router BB è usato per creare un ambiente LAN domestico, i PC della LAN sono connessi alla WAN attraverso il router BB con NAT (traduzione degli indirizzi di rete). In questi casi alle interfacce di rete dei PC nella LAN sono assegnati dal router BB indirizzi IP statici o DHCP. Il router BB deve essere configurato per connettersi alla WAN seguendo le istruzioni del proprio fornitore di servizi Internet.

5.4.1. Connessione DHCP con Ethernet

Le reti tipiche moderne per le abitazioni e le piccole aziende, cioè le LAN, sono connese alla WAN (Internet) usando un router per banda larga economico. La LAN dietro questo router è di solito servita dal server DHCP (protocollo di configurazione dinamica dell'host) in esecuzione sul router.

Installare semplicemente il pacchetto isc-dhcp-client per Ethernet con DHCP (protocollo di configurazione dinamica dell'host).

Vedere dhclient.conf(5).

5.4.2. Connessione con IP statico con Ethernet

Per Ethernet con IP statico non è necessaria alcuna azione particolare.

5.4.3. Connessione PPP con pppconfig

Lo script di configurazione pppconfig imposta la connessione PPP interattivamente chiedendo all'utente di selezionare solamente quanto segue.

  • Il numero di telefono

  • Il nome utente per il fornitore di servizi Internet

  • La password per il fornitore di servizi Internet

  • La velocità della porta

  • La porta di comunicazione del modem

  • Il metodo di autenticazione

Tabella 5.6. Elenco dei file di configurazione per la connessione PPP con pppconfig

file funzione
/etc/ppp/peers/<nome_isp> Il file di configurazione per pppd specifico per il fornitore di servizi <nome_isp>, generato da pppconfig
/etc/chatscripts/<nome_isp> Il file di configurazione per chat specifico per il fornitore di servizi <nome_isp>, generato da pppconfig
/etc/ppp/options I parametri generici di esecuzione per ppd
/etc/ppp/pap-secret Dati di autenticazione per PAP (rischio per la sicurezza)
/etc/ppp/chap-secret Dati di autenticazione per PAP (più sicuri)

[Attenzione] Attenzione

Se i comandi pon e poff vengono invocati senza argomenti, "<nome_isp>" viene impostato a "provider".

Si può testare la configurazione usando strumenti di configurazione di rete a basso livello come nel modo seguente.

$ sudo pon <nome_isp>
...
$ sudo poff <nome_isp>

Vedere "/usr/share/doc/ppp/README.Debian.gz".

5.4.4. Connessione PPP alternativa con wvdialconf

Un approccio diverso all'uso di pppd(8) è la sua esecuzione tramite wvdial(1) che è fornito nel pacchetto "wvdial. Invece di essere pppd ad eseguire chat(8) per comporre il numero e negoziare la connessione, è wvdial che fa queste cose e poi avvia pppd per tutto il resto.

Lo script di configurazione wvdialconf imposta la connessione PPP interattivamente chiedendo all'utente di selezionare solamente quanto segue.

  • Il numero di telefono

  • Il nome utente per il fornitore di servizi Internet

  • La password per il fornitore di servizi Internet

Nella maggior parte dei casi wvdial crea la connessione con successo e mantiene automaticamente un elenco dei dati di autenticazione.

Tabella 5.7. Elenco dei file di configurazione per la connessione PPP con wvdialconf

file funzione
/etc/ppp/peers/wvdial Il file di configurazione per pppd specifico per wvdial, generato da wvdialconf
/etc/wvdial.conf Il file di configurazione creato da wvdialconf
/etc/ppp/options I parametri generici di esecuzione per ppd
/etc/ppp/pap-secret Dati di autenticazione per PAP (rischio per la sicurezza)
/etc/ppp/chap-secret Dati di autenticazione per PAP (più sicuri)

Si può testare la configurazione usando strumenti di configurazione di rete a basso livello come nel modo seguente.

$ sudo wvdial
...
$ sudo killall wvdial

Vedere wvdial(1) e wvdial.conf(5).

5.4.5. Connessione PPPoE con pppoeconf

Quando il fornitore di servizi Internet dà una connessione PPPoE e si decide di connettere il proprio PC direttamente alla WAN, la rete del proprio PC deve essere configurata con PPPoE. PPPoE sta per "PPP over Ethernet" (PPP via Ethernet). Lo script di configurazione pppoeconf configura la connessione PPPoE in modo interattivo.

I file di configurazione sono i seguenti.

Tabella 5.8. Elenco dei file di configurazione per la connessione PPPoE con pppoeconf

file funzione
/etc/ppp/peers/dsl-provider Il file di configurazione per pppd specifico per pppoe, generato da pppoeconf
/etc/ppp/options I parametri generici di esecuzione per ppd
/etc/ppp/pap-secret Dati di autenticazione per PAP (rischio per la sicurezza)
/etc/ppp/chap-secret Dati di autenticazione per PAP (più sicuri)

Si può testare la configurazione usando strumenti di configurazione di rete a basso livello come nel modo seguente.

$ sudo /sbin/ifconfig eth0 up
$ sudo pon dsl-provider
...
$ sudo poff dsl-provider
$ sudo /sbin/ifconfig eth0 down

Vedere "/usr/share/doc/pppoeconf/README.Debian".

5.5. Configurazione base della rete con ifupdown (metodo vecchio)

La configurazione tradizionale della rete TCP/IP in un sistema Debian usa il pacchetto ifupdown come strumento ad alto livello. Ci sono 2 casi tipici.

Questi metodi di impostazione tradizionali sono piuttosto utili se si desidera impostare una configurazione avanzata (vedere Sezione 5.5, «Configurazione base della rete con ifupdown (metodo vecchio)»).

Il pacchetto ifupdown fornisce l'infrastruttura standard per la configurazione di rete di alto livello nel sistema Debian. In questa sezione viene descritta la configurazione base della rete con ifupdown con un'introduzione semplificata e molti esempi tipici.

5.5.1. Sintassi di base dei comandi

Il pacchetto ifupdown contiene 2 comandi: ifup(8) e ifdown(8). Offrono una configurazione della rete di alto livello in base al file di configurazione "/etc/network/interfaces".

Tabella 5.9. Elenco di comandi base per la configurazione della rete con ifupdown

comando azione
ifup eth0 attiva una interfaccia di rete eth0 con la configurazione di eth0 se esiste un blocco "iface eth0"
ifdown eth0 disattiva una interfaccia di rete eth0 con la configurazione di eth0 se esiste un blocco "iface eth0"

[Avvertimento] Avvertimento

Non usare strumenti di configurazione a basso livello, come i comandi ifconfig(8) e ip(8), per configurare un'interfaccia nello stato attivo (up).

[Nota] Nota

Non esiste un comando ifupdown.

5.5.2. Sintassi di base di "/etc/network/interfaces"

La sintassi di base di "/etc/network/interfaces", come spiegato in interfaces(5), può essere riassunta nel modo seguente.

Tabella 5.10. Elenco dei blocchi in "/etc/network/interfaces"

blocco significato
"auto <nome_interfaccia>" attiva l'interfaccia <nome_interfaccia> all'avvio del sistema
"allow-auto <nome_interfaccia>" " "
"allow-hotplug <nome_interfaccia>" attiva l'interfaccia <nome_interfaccia> quando il kernel rileva un evento hotplug dall'interfaccia
Le righe che iniziano con "iface <nome_config> …" definiscono la configurazione di rete <nome_config>
Le righe che iniziano con "mapping <glob_nome_interfaccia> " definiscono i valori di mappatura di <nome_config> al corrispondente <nome_interfaccia>
Le righe che iniziano con un carattere cancelletto "#" sono commenti e vengono ignorate (i commenti di fine riga non sono supportati)
Le righe che terminano con una barra rovesciata "\" estendono la configurazione alla riga seguente

Le righe con un blocco iface hanno la sintassi seguente.

iface <nome_config> <famiglia_indirizzi> <nome_metodo>
 <opzione1> <valore1>
 <opzione2> <valore2>
 ...

Per la configurazione di base non vengono usati i blocchi mapping ma viene usato il nome dell'interfaccia di rete come nome della configurazione di rete (vedere Sezione 5.6.5, «Il blocco di mappatura "mapping"»).

[Avvertimento] Avvertimento

Non creare definizioni duplicate per un blocco "iface" per un'interfaccia di rete in "/etc/network/interfaces".

5.5.3. Interfaccia di rete loopback

La voce di configurazione seguente, nel file "/etc/network/interfaces" attiva l'interfaccia di rete loopback, lo, all'avvio del sistema (attraverso il blocco auto).

auto lo
iface lo inet loopback

Questo blocco esiste sempre nel file "/etc/network/interfaces".

5.5.4. Interfaccia di rete servita da DHCP

Dopo aver preparato il sistema con Sezione 5.4.1, «Connessione DHCP con Ethernet», l'interfaccia di rete con DHCP viene configurata creando una voce di configurazione nel file "/etc/network/interfaces" nel modo seguente.

allow-hotplug eth0
iface eth0 inet dhcp

Quando il kernel Linux rileva l'interfaccia fisica eth0, il blocco allow-hotplug fa sì che ifup attivi l'interfaccia e il blocco iface fa sì che ifup usi DHCP per configurare l'interfaccia.

5.5.5. Interfaccia di rete con IP statico

L'interfaccia di rete con IP statico viene configurata creando una voce di configurazione nel file "/etc/network/interfaces" nel modo seguente.

allow-hotplug eth0
iface eth0 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 gateway 192.168.11.1
 dns-domain example.com
 dns-nameservers 192.168.11.1

Quando il kernel Linux rileva l'interfaccia fisica eth0, il blocco allow-hotplug fa sì che ifup attivi l'interfaccia e il blocco iface fa sì che ifup usi l'IP statico per configurare l'interfaccia.

In questo esempio sono stati dati per veri i seguenti dati.

  • Intervallo di indirizzi IP della rete LAN: 192.168.11.0 - 192.168.11.255

  • Indirizzo IP del gateway: 192.168.11.1

  • Indirizzo IP del PC: 192.168.11.100

  • Il pacchetto resolvconf è installato.

  • Nome di dominio: "example.com"

  • Indirizzo IP del server DNS: 192.168.11.1

Quando il pacchetto resolvconf non è installato, la configurazione relativa al DNS deve essere fatta manualmente modificando "/etc/resolv.conf" nel modo seguente.

nameserver 192.168.11.1
domain example.com
[Attenzione] Attenzione

L'indirizzo IP usato nell'esempio soprastante non deve essere copiato pari pari. È necessario mettere i numeri IP della reale configurazione della propria rete.

5.5.6. Informazioni di base sull'interfaccia LAN wireless

La LAN wireless (in breve WLAN) fornisce connettività veloce wireless attraverso comunicazioni con espansione di spettro in bande radio senza licenza basate sull'insieme di standard chiamato IEEE 802.11.

Le interfacce WLAN sono quasi come normali interfacce Ethernet, ma richiedono alcuni dati sull'identità della rete e sulla chiave di cifratura per essere usate una volta inizializzate. Gli strumenti di rete di alto livello per esse sono esattamente gli stessi delle interfacce di rete, tranne che i nomi delle interfacce sono un po' diversi come eth1, wlan0, ath0, wifi0, … a seconda dei driver del kernel utilizzati.

[Suggerimento] Suggerimento

Il device wmaster0 è il device master che è un device interno usato solamente da SoftMAC con la nuova API mac80211 di Linux.

Quelle che seguono sono alcune parole chiave relative alla WLAN che è bene ricordare.

Tabella 5.11. Elenco di acronimi per WLAN

acronimo forma estesa significato
NWID Network ID (ID di rete) identificativo di rete a 16 bit usato da reti WaveLAN pre-802.11 (molto deprecato)
(E)SSID (Extended) Service Set Identifier (Identificativo di insieme di servizi (esteso)) il nome di rete dei punti di accesso wireless (Wireless Access Points, AP) interconnessi a formare una LAN wireless 802.11; identificativo del dominio
WEP, (WEP2) Wired Equivalent Privacy (Privacy equivalente alla cablata) standard di cifratura per wireless a 64 bit (128 bit) di prima generazione con chiave a 40-bit (deprecato)
WPA Wi-Fi Protected Access (Accesso Wi-Fi protetto) standard di cifratura per wireless di seconda generazione (maggior parte del 802.11i), compatibile con WEP
WPA2 Wi-Fi Protected Access 2 (Accesso Wi-Fi protetto 2) standard di cifratura per wireless di terza generazione (tutto il 802.11i), non compatibile con WEP

Di fatto la scelta del protocollo è di solito limitata dal router wireless che si possiede.

5.5.7. Interfaccia LAN wireless con WPA/WPA2

È necessario installare il pacchetto wpasupplicant per supportare la WLAN con i nuovi WPA/WPA2.

In caso di IP DHCP per la connessione WLAN, la voce nel file "/etc/network/interfaces" dovrebbe essere come la seguente.

allow-hotplug ath0
iface ath0 inet dhcp
 wpa-ssid zonacasa
 # la chiave di cifratura, psk, esadecimale e' codificata da una passphrase in puro testo
 wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Vedere "/usr/share/doc/wpasupplicant/README.modes.gz".

5.5.8. Interfaccia LAN wireless con WEP

È necessario installare il pacchetto wireless-tools per supportare la rete WLAN con il vecchio WEP. (Il proprio router economico potrebbe usare ancora questa infrastruttura non sicura, ma è meglio di niente.)

[Attenzione] Attenzione

Notare che il traffico di rete in una WLAN con WEP può essere spiato da altri.

In caso di IP DHCP per la connessione WLAN, la voce nel file "/etc/network/interfaces" dovrebbe essere come la seguente.

allow-hotplug eth0
iface eth0 inet dhcp
 wireless-essid Casa
 wireless-key1 0123-4567-89ab-cdef
 wireless-key2 12345678
 wireless-key3 s:password
 wireless-defaultkey 2
 wireless-keymode open

Vedere "/usr/share/doc/wireless-tools/README.Debian".

5.5.9. Connessione PPP

È necessario come prima cosa configurare la connessione PPP come descritto in precedenza (vedere Sezione 5.4.3, «Connessione PPP con pppconfig»). Quindi aggiungere nel file "/etc/network/interfaces" la voce per il device PPP primario ppp0 nel modo seguente.

iface ppp0 inet ppp
 provider <nome_isp>

5.5.10. Connessione PPP alternativa

È necessario come prima cosa configurare la connessione PPP alternativa con wvdial, come descritto in precedenza (vedere Sezione 5.4.4, «Connessione PPP alternativa con wvdialconf»). Quindi aggiungere nel file "/etc/network/interfaces" la voce per il device PPP primario ppp0 nel modo seguente.

iface ppp0 inet wvdial

5.5.11. Connessione PPPoE

Per i PC connessi direttamente alla WAN con servizio PPPoE, è necessario configurare il sistema con la connessione PPPoE come descritto in precedenza (vedere Sezione 5.4.5, «Connessione PPPoE con pppoeconf»). Quindi aggiungere nel file "/etc/network/interfaces" la voce per il device PPPoE primario eth0 nel modo seguente.

allow-hotplug eth0
iface eth0 inet manual
 pre-up /sbin/ifconfig eth0 up
 up ifup ppp0=dsl
 down ifdown ppp0=dsl
 post-down /sbin/ifconfig eth0 down
# Quello che segue e' usato solo internamente
iface dsl inet ppp
 provider dsl-provider

5.5.12. Lo stato di configurazione della rete di ifupdown

Il file "/etc/network/run/ifstate" memorizza gli stati previsti di configurazione della rete per tutte le interfacce di rete attualmente attive gestite dal pacchettoifupdown. Sfortunatamente, anche se il tentativo del sistema ifupdown di attivare un'interfaccia come previsto fallisce, il file "/etc/network/run/ifstate" la elenca come attiva.

Se l'output del comando ifconfig(8) per un'interfaccia non ha una riga come quella dell'esempio seguente, l'interfaccia non può essere usata come parte di una rete IPV4.

  inet addr:192.168.11.2  Bcast:192.168.11.255  Mask:255.255.255.0
[Nota] Nota

Per i dispositivi Ethernet connessi con PPPoE, l'output di ifconfig(8) manca di una riga come quella dell'esempio precedente.

5.5.13. Riconfigurazione base della rete

Quando si cerca di riconfigurare un'interfaccia, ad esempio eth0, per prima cosa è necessario disattivarla con il comando "sudo ifdown eth0". Questo rimuove la voce corrispondente ad eth0 dal file "/etc/network/run/ifstate". (Potrebbero essere generati messaggi di errore se eth0 non è attiva o se non era stata configurata in modo conrretto.) Per il momento, fare questa azione per una postazione di lavoro per singolo utente sembra sicuro in qualunque momento.

Si può ora modificare liberamente il contenuto di "/etc/network/interfaces" in base alle proprie necessità per riconfigurare l'interfaccia di rete eth0.

In seguito si può riattivare eth0 con il comando "sudo ifup eth0".

[Suggerimento] Suggerimento

Si può (re)inizializzare l'interfaccia di rete semplicemente usando "sudo ifdown eth0;sudo ifup eth0".

5.5.14. Pacchetto ifupdown-extra

Il pacchetto ifupdown-extra fornisce facili testi della connessione di rete per l'uso con il pacchetto ifupdown.

  • Il comando network-test(1) può essere usato dalla shell.

  • Gli script automatici vengono eseguiti per ogni invocazione del comando ifup.

Il comando network-test libera l'utente dal faticoso compito di eseguire comandi a basso livello per analizzare i problemi di rete.

Gli script automtici vengono installati in "/etc/network/*/" e effettuano le azioni seguenti.

  • Verifica della connessione del cavo di rete

  • Verifica dell'eventuale uso duplicato di indirizzi IP

  • Impostazione di instradamenti statici del sistema in base alle definizioni in "/etc/network/routes"

  • Verifica della raggiungibilità del gateway di rete

  • Registrazione dei risultati nel file "/var/log/syslog"

Queste voci nel syslog sono piuttosto utili per l'amministrazione di problemi di rete nel sistema remoto.

[Suggerimento] Suggerimento

Il comportamento automatico del pacchetto ifupdown-extra è configurabile con "/etc/default/network-test". Alcuni di questi controlli automatici rallentano un po' il sistema all'avvio dato che è necessario un po' di tempo per restare in ascolto per le risposte ARP.

5.6. Configurazione avanzata della rete con ifupdown (strumento datato)

Le funzionalità del pacchetto ifupdown possono essere migliorate andando oltre quanto è stato descritto in Sezione 5.5, «Configurazione base della rete con ifupdown (metodo vecchio)», con qualche informazione più avanzata.

Le funzionalità descritte in questa sezione sono completamente opzionali. Essendo io pigro e minimalista, raramente faccio lo sforzo di usarle.

[Attenzione] Attenzione

Se non si è riusciti a configurare la connessione di rete usando le informazioni in Sezione 5.5, «Configurazione base della rete con ifupdown (metodo vecchio)», cercare una soluzione nelle informazioni che seguono non farà che peggiorare le cose.

5.6.1. Il pacchetto ifplugd

Il pacchetto ifplugd è un vecchio strumento di configurazione della rete che può gestire soltanto connessioni Ethernet. Risolve problemi di cavi Ethernet sconnessi/ricconessi per PC portatili, ecc. Se è installato NetworkManager o Wicd (vedere Sezione 5.2, «La configurazione moderna della rete per il desktop»), questo pacchetto non è necessario.

Questo pacchetto viene eseguito come demone e rimpiazza le funzionalità auto o allow-hotplug (vedere Tabella 5.10, «Elenco dei blocchi in "/etc/network/interfaces) ed abilita le interfacce quando queste vengono connesse alla rete.

Ecco come usare il pacchetto ifplugd per la porta Ethernet interna, ad esempio eth0.

  1. Rimuovere il blocco "auto eth0" o "allow-hotplug eth0" dal file "/etc/network/interfaces".

  2. Mantenere i blocchi "iface eth0 inet …" e "mapping …" nel file "/etc/network/interfaces".

  3. Installare il pacchetto ifplugd.

  4. Eseguire "sudo dpkg-reconfigure ifplugd".

  5. Indicare eth0 come "interfaccia statica che ifplugd deve osservare".

Ora, dopo la riconfigurazione, la rete funziona come voluto.

  • All'avvio o al rilevamento dell'hardware, l'interfaccia non viene attivata da sé stessa.

  • Quando viene rilevato il cavo Ethernet l'interfaccia viene attivata.

  • Dopo un certo intervallo di tempo dalla disconnessione del cavo Ethernet, l'interfaccia viene automaticamente disattivata.

  • Quando viene inserito un altro cavo Ethernet, l'interfaccia è attivata nel nuovo ambiente.

[Suggerimento] Suggerimento

Gli argomenti del comando ifplugd(8) possono impostare il suo comportamento, come il ritardo nella riconfigurazione delle interfacce.

5.6.2. Il pacchetto ifmetric

Il pacchetto ifmetric permette di manipolare la metrica di instradamenti a posteriori, anche per DHCP.

Le azioni seguenti impostano l'interfaccia eth0 come preferita rispetto alla interfaccia wlan0.

  1. Installare il pacchetto ifmetric.

  2. Aggiungere una riga con l'opzione "metric 0" immediatamente sotto alla riga "iface eth0 inet dhcp".

  3. Aggiungere una riga con l'opzione "metric 1" immediatamente sotto alla riga "iface wlan0 inet dhcp".

"metric 0" significa instradamento con la più alta priorità ed è quello predefinito. Un valore di metrica più alto indica instradamenti con priorità più bassa. L'indirizzo IP dell'interfaccia attiva con il valore di metrica più basso diventa quello di origine. Vedere ifmetric(8).

5.6.3. L'interfaccia virtuale

Una singola interfaccia fisica Ethernet può essere configurata come interfacce virtuali multiple con indirizzi IP differenti. Di solito ciò ha lo scopo di connettere un'interfaccia a diverse sottoreti di IP. Per esempio, un'applicazione di questo tipo è l'hosting web virtuale basato su indirizzi IP con una singola interfaccia di rete.

Per esempio, si supponga quanto segue.

  • Una singola interfaccia Ethernet dell'host è connessa ad un hub Ethernet (non al router a banda larga).

  • L'hub Ethernet è connesso sia ad Internet sia alla rete LAN.

  • La rete LAN usa la sottorete 192.168.0.x/24.

  • L'host usa per Internet indirizzi IP DHCP sull'interfaccia fisica eth0.

  • L'host usa 192.168.0.1 con l'interfaccia virtuale eth0:0 per la LAN.

I blocchi seguenti in " /etc/network/interfaces" configurano la rete.

iface eth0 inet dhcp
 metric 0
iface eth0:0 inet static
 address 192.168.0.1
 netmask 255.255.255.0
 network 192.168.0.0
 metric 1
[Attenzione] Attenzione

Anche se questo esempio di configurazione con traduzione degli indirizzi di rete (NAT) usando netfilter/iptables (vedere Sezione 5.9, «Infrastruttura netfilter») può fornire un router a basso prezzo per la LAN usando una sola interfaccia, non c'è alcuna reale funzionalità di firewall con una configurazione di questo tipo. Si dovrebbero usare 2 interfacce fisiche con NAT per rendere sicura la rete locale rispetto ad Internet.

5.6.4. Sintassi avanzata dei comandi

Il pacchetto ifupdown offre funzionalità di configurazione avanzata della rete usando il nome di configurazione della rete e il nome dell'interfaccia di rete. Viene qui usata una terminologia leggermente diversa da quella usata in ifup(8) e interfaces(5).

Tabella 5.12. Elenco della terminologia per i device di rete

terminologia delle pagine man terminologia di questo documento esempi nel testo seguente descrizione
nome dell'interfaccia fisica nome dell'interfaccia di rete lo, eth0, <nome_interfaccia> nome dato dal kernel Linux (usando il meccanismo udev)
nome dell'interfaccia logica nome della configurazione di rete config1, config2, <nome_config> elemento indicante il nome che segue la parola iface nel file "/etc/network/interfaces"

I comandi base per la configurazione della rete descritti in Sezione 5.5.1, «Sintassi di base dei comandi» richiedono che, nel file "/etc/network/interfaces", il nome della configurazione di rete indicato nel blocco iface corrisponda al nome dell'interfaccia di rete.

I comandi avanzati per la configurazione della rete permettono, nel file "/etc/network/interfaces", la distinzione tra il nome della configurazione di rete e della interfaccia di rete

Tabella 5.13. Elenco di comandi avanzati per la configurazione della rete con ifupdown

comando azione
ifup eth0=config1 attiva una interfaccia di rete eth0 con la configurazione config1
ifdown eth0=config1 disattiva una interfaccia di rete eth0 con la configurazione config1
ifup eth0 attiva una interfaccia di rete eth0 con la configurazione scelta dal blocco di mappatura mapping
ifdown eth0 disattiva una interfaccia di rete eth0 con la configurazione scelta dal blocco di mappatura mapping

5.6.5. Il blocco di mappatura "mapping"

Nella sezione Sezione 5.5.2, «Sintassi di base di "/etc/network/interfaces"» è stata saltata la spiegazione del blocco mapping nel file "/etc/network/interfaces", per evitare complicazioni. Questo blocco ha la sintassi seguente.

mapping <glob_nome_interfaccia>
 script <nome_script>
 map <script_input1>
 map <script_input2>
 map ...

Ciò fornisce funzionalità avanzate al file "/etc/network/interfaces" automatizzando la scelta della configurazione con lo script di mappatura specificato da <nome_script>.

Ecco cosa succede quando viene eseguito il comando seguente.

$ sudo ifup eth0

Quando il "<glob_nome_interfaccia> trova corrispondenza con "eth0", l'esecuzione di questo comando produce, per configurare automaticamente eth0, l'invocazione del comando seguente.

$ sudo ifup eth0=$(echo -e '<script_input1> \n <script_input2> \n ...' | <nome_script> eth0)

Le righe, per l'input dello script, che iniziano con "map" sono opzionali e possono essere ripetute.

[Nota] Nota

L'espressione glob per il blocco mapping funziona come i metacaratteri dei glob per nomi di file della shell (vedere Sezione 1.5.6, «Glob della shell»).

5.6.6. Configurazione della rete commutabile manualmente

Quella che segue è una descrizione di come commutare manualmente tra diverse configurazioni di rete senza dover riscrivere il file "/etc/network/interfaces" come in Sezione 5.5.13, «Riconfigurazione base della rete».

Per tutte le configurazioni di rete alle quali si deve accedere è sufficiente creare un solo file "/etc/network/interfaces" come quello seguente.

auto lo
iface lo inet loopback

iface config1 inet dhcp

iface config2 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 gateway 192.168.11.1
 dns-domain example.com
 dns-nameservers 192.168.11.1

iface pppoe inet manual
 pre-up /sbin/ifconfig eth0 up
 up ifup ppp0=dsl
 down ifdown ppp0=dsl
 post-down /sbin/ifconfig eth0 down

# Quanto segue viene usato solo internamente
iface dsl inet ppp
 provider dsl-provider

iface pots inet ppp
 provider provider

Notare che il nome di configurazione della rete, che è l'elemento che viene dopo iface, non usa il nome dell'interfaccia di rete. Inoltre non ci sono blocchi auto, né allow-hotplug per attivare l'interfaccia di rete eth0 automaticamente in base ad eventi.

Ora tutto è pronto per commutare tra le configurazioni di rete.

Spostare il PC in una LAN con DHCP. L'interfaccia di rete (l'interfaccia fisica) eth0 viene attivata assegnandole il nome di configurazione della rete (il nome dell'interfaccia logica) config1 nel modo seguente.

$ sudo ifup eth0=config1
Password:
...

L'interfaccia eth0 è attiva, configurata con DHCP e connessa alla LAN.

$ sudo ifdown eth0=config1
...

L'interfaccia di rete eth0 è disattivata e disconnessa dalla LAN.

Spostare il PC in una LAN con IP statico. L'interfaccia di rete eth0 viene attivata assegnandole il nome di configurazione della rete config2 nel modo seguente.

$ sudo ifup eth0=config2
...

L'interfaccia eth0 è attiva, configurata con IP statico e connessa alla LAN. I parametri aggiuntivi dns-* forniti configurano il contenuto di "/etc/resolv.conf". Tale file "/etc/resolv.conf" viene gestito meglio se è installato il pacchetto resolvconf.

$ sudo ifdown eth0=config2
...

L'interfaccia di rete eth0 è di nuovo disattivata e disconnessa dalla LAN.

Spostare il PC su una porta di un modem per banda larga connesso ad un servizio PPPoE. L'interfaccia di rete eth0 viene attivata assegnandole il nome di configurazione della rete pppoe nel modo seguente.

$ sudo ifup eth0=pppoe
...

L'interfaccia eth0 è attiva, configurata per la connessione PPPoE diretta con il fornitore di servizi Internet.

$ sudo ifdown eth0=pppoe
...

L'interfaccia di rete eth0 è di nuovo disattivata e disconnessa.

Spostare il PC in una postazione senza LAN o modem per banda larga, ma con una linea telefonica ed un modem. L'interfaccia di rete ppp0 viene attivata assegnandole il nome di configurazione della rete pots nel modo seguente.

$ sudo ifup ppp0=pots
...

L'interfaccia ppp0 è attiva e connessa ad Internet con PPP.

$ sudo ifdown ppp0=pots
...

L'interfaccia di rete ppp0 è disattivata e disconnessa da Internet.

Si dovrebbe controllare nel file "/etc/network/run/ifstate" lo stato attuale della configurazione di rete del sistema ifupdown.

[Avvertimento] Avvertimento

Potrebbe essere necessario cambiare i numeri alla fine di eth*, ppp*, ecc., se si ha più di un'interfaccia di rete.

5.6.7. Uso di script con il sistema ifupdown

Il sistema ifupdown esegue automaticamente gli script installati in "/etc/network/*/" esportando le variabili d'ambiente negli script.

Tabella 5.14. Elenco delle variabili d'ambiente passate dal sistema ifupdown

variabile d'ambiente valore passato
"$IFACE" nome fisico (nome dell'interfaccia) dell'interfaccia in fase di elaborazione
"$LOGICAL" nome logico (nome dell'interfaccia) dell'interfaccia in fase di elaborazione
"$ADDRFAM" <famiglia_indirizzi> dell'interfaccia
"$METHOD" <nome_metodo> dell'interfaccia (es., "static")
"$MODE" "start" se invocato da ifup, "stop" se invocato da ifdown
"$PHASE" come per "$MODE", ma in modo più dettagliato, distinguendo le fasi pre-up, post-up, pre-down e post-down
"$VERBOSITY" indica se è stato usato "--verbose"; se lo è stato viene impostata a 1, altrimenti a 0
"$PATH" percorso di ricerca dei comandi: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
"$IF_<OPZIONE>" valore della opzione corrispondente all'interno del blocco iface

In questo caso, ciascuna variabile d'ambiente di tipo "$IF_<OPZIONE>" viene creata a partire dal nome dell'opzione corrispondente, come <opzione1> e <opzione2>, preceduto da "$IF_" e convertendo tutte le lettere in maiuscolo, sostituendo i caratteri di sottolineatura con trattini e scartando i caratteri non alfanumerici.

[Suggerimento] Suggerimento

Vedere Sezione 5.5.2, «Sintassi di base di "/etc/network/interfaces"» per <famiglia_indirizzi>, <nome_metodo>, <opzione1> e <opzione2>.

Il pacchetto ifupdown-extra (vedere Sezione 5.5.14, «Pacchetto ifupdown-extra») usa queste variabili d'ambiente per estendere la funzionalità del pacchetto ifupdown. Il pacchetto ifmetric (vedere Sezione 5.6.2, «Il pacchetto ifmetric») installa lo script "/etc/network/if-up.d/ifmetric" che imposta la metrica attraverso la variabile "$IF_METRIC". Anche il pacchetto guessnet (vedere Sezione 5.6.8, «Mappatura con guessnet»), che fornisce un'infrastruttura semplice e potente per la selezione automatica della configurazione di rete tramite il meccanismo di mappatura , usa queste variabili.

[Nota] Nota

Per esempi più dettagliati di script personalizzati per la configurazione della rete che usano queste variabili d'ambiente, controllare gli script d'esempio in "/usr/share/doc/ifupdown/examples/*" e gli script usati nei pacchetti ifscheme e ifupdown-scripts-zg2. Questi script addizionali hanno alcune funzionalità che si sovrappongono in parte a quelle dei pacchetti base ifupdown-extra e guessnet. Se si installano questi script addizionali, si dovrebbe personalizzarli in modo da evitare interferenze.

5.6.8. Mappatura con guessnet

Invece di scegliere manualmente la configurazione, come descritto in Sezione 5.6.6, «Configurazione della rete commutabile manualmente», si può usare il meccanismo di mappatura descritto in Sezione 5.6.5, «Il blocco di mappatura "mapping"» per selezionare automaticamente la configurazione di rete con script personalizzati.

Il comando guessnet-ifupdown(8) fornito nel pacchetto guessnet è pensato per essere usato come uno script di mappatura e fornisce un'infrastruttura potente per migliorare il sistema ifupdown.

  • Per ciascuna configurazione di rete in un blocco iface, si elencano delle condizioni da testare come valore per le opzioni di guessnet.

  • La mappatura sceglie come configurazione di rete la prima iface che dà come risultato un non-ERRORE.

Questo doppio uso del file "/etc/network/interfaces" da parte dello script di mappatura, guessnet-ifupdown, e dell''infrastruttura originale di configurazione della rete, ifupdown, non causa impatti negativi dato che le opzioni guessnet esportano solo variabili d'ambiente extra a script eseguiti dal sistema ifupdown. Vedere i dettagli in guessnet-ifupdown(8).

[Nota] Nota

Quando in "/etc/network/interfaces è necessaria più di una riga di opzione guessnet, usare righe di opzione che iniziano con guessnet1, guessnet2 e così via, dato che il pacchetto ifupdown non permette ripetizioni della stringa iniziale delle righe di opzione.

5.7. Configurazione della rete a basso livello

5.7.1. Comandi iproute2

I comandi Iproute2 offrono funzionalità complete di configurazione della rete a basso livello. Quella che segue è una tabella di traduzione dai comandi obsoleti di net-tools ai nuovi comandi iproute2 ecc.

Tabella 5.15. Tabella di traduzione dai comandi obsoleti net-tools ai nuovi comandi iproute2

net-tools obsoleti nuovi iproute2, ecc. manipolazione
ifconfig(8) ip addr indirizzo di protocollo (IP o IPv6) di un device
route(8) ip route voce nella tabella di instradamento
arp(8) ip neigh voce nella cache ARP o NDISC
ipmaddr ip maddr indirizzo multicast
iptunnel ip tunnel tunnel over IP
nameif(8) ifrename(8) nomina le interfacce di rete in base all'indirizzo MAC
mii-tool(8) ethtool(8) impostazioni del device Ethernet

Vedere ip(8) e IPROUTE2 Utility Suite Howto.

5.7.2. Operazioni sicure a basso livello sulla rete

Si possono usare i comandi a basso livello per la rete seguenti in modo sicuro dato che non cambiano la configurazione della rete.

Tabella 5.16. Elenco di comandi di rete a basso livello

comando descrizione
ifconfig mostra lo stato del collegamento e l'indirizzo delle interfacce attive
ip addr show mostra lo stato del collegamento e l'indirizzo delle interfacce attive
route -n mostra tutta la tabella di instradamento in indirizzi numerici
ip route show mostra tutta la tabella di instradamento in indirizzi numerici
arp mostra l'attuale contenuto delle tabelle cache ARP
ip neigh mostra l'attuale contenuto delle tabelle cache ARP
plog mostra il registro del demone ppp
ping yahoo.com controlla la connessione Internet verso "yahoo.com"
whois yahoo.com controlla chi ha registrato "yahoo.com" nel database dei domini
traceroute yahoo.com traccia la connessione Internet verso "yahoo.com"
tracepath yahoo.com traccia la connessione Internet verso "yahoo.com"
mtr yahoo.com traccia la connessione Internet verso "yahoo.com" (ripetutamente)
dig [@dns-server.com] esempio.com [{a|mx|any}] controlla i record DNS di "esempio.com" con "dns-server.com" alla ricerca di un record "a", "mx" o "any"
iptables -L -n controlla il filtraggio dei pacchetti
netstat -a trova tutte le porte aperte
netstat -l --inet trova le porte in ascolto
netstat -ln --tcp trova le porte (numeriche) TCP in ascolto
dlint esempio.com controlla le informazioni DNS di zona per "esempio.com"

[Suggerimento] Suggerimento

Alcuni di questi strumenti di configurazione di basso livello della rete sono contenuti in "/sbin/". Potrebbe essere necessario fornire il percorso completo dei comandi, come "/sbin/ifconfig" o aggiungere "/sbin" all'elenco in "$PATH" nel proprio file "~/.bashrc".

5.8. Ottimizzazione della rete

L'ottimizzazione generale della rete va oltre gli scopi che questo documento si prefigge. Vengono trattati solo quegli argomenti che interessano le connessioni dei computer personali.

Tabella 5.17. Elenco degli strumenti di ottimizzazione della rete

pacchetto popcon dimensione descrizione
iftop V:13, I:93 109 mostra informazioni sull'uso della banda su di un'interfaccia di rete
iperf V:5, I:49 126 strumento di misurazione della banda del protocollo Internet
apt-spy V:1, I:10 105 scrive un file "/etc/apt/sources.list" in base a test sulla banda
ifstat V:2, I:13 88 Monitoraggio delle STATistiche sulle InterFacce
bmon V:2, I:9 188 strumento portabile per monitoraggio della banda e stime della velocità
ethstatus V:0, I:6 84 script che misura velocemente la quantità di dati passanti per un device di rete
bing V:0, I:4 96 tester empirico stocastico della banda
bwm-ng V:2, I:13 114 strumento piccolo e semplice basato sulla console per il monitoraggio della banda
ethstats V:0, I:2 52 strumento basato su console per il monitoraggio delle statistiche Ethernet
ipfm V:0, I:1 156 strumento di analisi della banda

5.8.1. Trovare l'MTU ottimale

Il valore di MTU (Maximum Transmission Unit, unità massima di trasmissione) può essere determinato sperimentalmente con ping(8) usando l'opzione "-M do" che invia pacchetti ICMP con una dimensione dei dati a partire da 1500 (con un offset di 28 byte per l'intestazione IP+ICMP) e trova la dimensione maggiore che non comporta frammentazione IP.

Per esempio, provare a fare quanto segue.

$ ping -c 1 -s $((1500-28)) -M do www.debian.org
PING www.debian.org (194.109.137.218) 1472(1500) bytes of data.
From 192.168.11.2 icmp_seq=1 Frag needed and DF set (mtu = 1454)

--- www.debian.org ping statistics ---
0 packets transmitted, 0 received, +1 errors

Provare 1454 invece di 1500

Come si può vedere ping(8) ha avuto successo con 1454.

Questo processo si chiama "Path MTU (PMTU) discovery (RFC1191) e il comado tracepath(8) può automatizzarlo.

[Suggerimento] Suggerimento

L'esempio precedente di PMTU con un valore di 1454 è per il mio precedente fornitore FTTP che usava ATM (Asynchronous Transfer Mode) come rete backbone e forniva ai clienti un servizio PPPoE. Il valore effettivo di PMTU dipende dal proprio ambiente, ad esempio è 1500 per il mio nuovo fornitore FTTP.

Tabella 5.18. Linee guida di base per il valore di MTU ottimale

ambiente di rete MTU motivo
collegamento dial-up (IP: PPP) 576 standard
collegamento Ethernet (IP: DHCP o statico) 1500 standard e predefinito
collegamento Ethernet (IP: PPPoE) 1492 (=1500-8) 2 byte per l'intestazione PPP e 6 byte per l'intestazione PPPoE
collegamento Ethernet (backbone del fornitore servizi: ATM, IP: DHCP o statico) 1462 (=48*31-18-8) ipotesi dell'autore: 18 per l'intestazione Ethernet, 8 per la coda SAR
collegamento Ethernet (backbone del fornitore servizi: ATM, IP: PPPoE) 1454 (=48*31-8-18-8) vedere Configurazione ottimale dell'MTU per connessioni ADSL con PPPoE" per il ragionamento

In aggiunta a queste linee guida di base si dovrebbe sapere quanto segue.

  • Qualsiasi uso di metodi di tunnelling (VPN, ecc.) può ridurre ulteriormente l'MTU ottimale per il loro carico.

  • Il valore di MTU non dovrebbe superare il valore di PMTU determinato sperimentalmente.

  • A patto di seguire le indicazioni precedenti un valore maggiore di MTU è meglio.

5.8.2. Impostazione dell'MTU

Quelli che seguono sono alcuni esempi di come impostare il valore di MTU dal suo valore predefinito 1500 a 1454.

Per DHCP (vedere Sezione 5.5.4, «Interfaccia di rete servita da DHCP»), si possono sostituire le righe pertinenti nei blocchi iface nel file "/etc/network/interfaces" con blocchi come il seguente.

iface eth0 inet dhcp
 pre-up /sbin/ifconfig $IFACE mtu 1454

Per IP statico (vedere Sezione 5.5.5, «Interfaccia di rete con IP statico»), si possono sostituire le righe pertinenti nei blocchi iface nel file "/etc/network/interfaces" con blocchi come il seguente.

iface eth0 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 gateway 192.168.11.1
 mtu 1454
 dns-domain example.com
 dns-nameservers 192.168.11.1

Per la connessione PPPoE diretta (vedere Sezione 5.4.5, «Connessione PPPoE con pppoeconf», si possono sostituire le riga "mtu" pertinente nel file "/etc/ppp/peers/dsl-provider" con la seguente.

mtu 1454

Il valore di MSS (Maximum Segment Size, dimensione massima di segmento)MSS è usato come misura alternativa della dimensione dei pacchetti. Le relazioni tra MSS e MTU sono le seguenti.

  • MSS = MTU - 40 per IPv4

  • MSS = MTU - 60 per IPv6

[Nota] Nota

L'ottimizzazione basata su iptables(8) (vedere Sezione 5.9, «Infrastruttura netfilter») può bloccare la dimensione dei pacchetti al valore MSS ed è utile per il router. Vedere "TCPMSS" in iptables(8).

5.8.3. Ottimizzazione di TCP per la WAN

Il flusso TCP può essere massimizzato regolando i parametri di dimensione del buffer TCP come descritto in "TCP Tuning Guide" e "TCP tuning" per le moderne WAN a larga banda e alta latenza. Per adesso, le attuali impostazioni predefinite di Debian funzionano bene persino per la mia LAN connessa con un servizio FTTP veloce a 1Gbps.

5.9. Infrastruttura netfilter

Netfilter fornisce un'infrastruttura per firewall con stati e traduzione di indirizzi di rete (NAT) con moduli del kernel Linux (vedere Sezione 3.5.12, «L'inizializzazione dei moduli del kernel»).

Tabella 5.19. Elenco di strumenti per firewall

pacchetto popcon dimensione descrizione
iptables V:277, I:993 1378 strumenti di amministrazione per netfilter
iptstate V:1, I:6 135 monitora continuamente lo stato di netfilter (in modo simile a top(1))
shorewall-init I:1 112 inizializzazione di Shoreline Firewall
shorewall V:11, I:26 1692 generatore di file di configurazione per Shoreline Firewall, netfilter
shorewall-lite V:0, I:0 120 generatore di file di configurazione per Shoreline Firewall, netfilter (versione leggera)
shorewall6 V:1, I:3 697 generatore di file di configurazione per Shoreline Firewall, netfilter (versione IPv6)
shorewall6-lite V:0, I:0 118 generatore di file di configurazione per Shoreline Firewall, netfilter (versione IPv6 leggera)

Il principale programma in spazio utente di netfilter è iptables(8). Si può configurare manualmente netfilter in modo interattivo dalla shell, salvare il suo stato con iptables-save(8) e ripristinarlo attraverso uno script di init con iptables-restore(8) al riavvio del sistema.

Script di aiuto per la configurazione come shorewall facilitano questo processo.

Vedere la documentazione all'indirizzo http://www.netfilter.org/documentation/ (o in "/usr/share/doc/iptables/html/").

[Suggerimento] Suggerimento

Anche se questi documenti sono stati scritti per Linux 2.4, sia il comando iptables(8) sia la funzione netfilter del kernel sono validi per l'attuale Linux 2.6.