[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ successivo ]

La guida Debian
Capitolo 10 - Configurare la rete


Questo capitolo è focalizzato sull'amministrazione di rete in Debian. per un'introduzione generale alla rete in GNU/Linux, leggete il Net-HOWTO.

Per permettere ad un host Debian di accedere ad Internet, le sue interfacce di rete devono essere supportate dal kernel e propriamente configurate.

Il primo requisito è il supporto del kernel per i dispositivi di rete, tipo schede Ethernet, Wi-Fi e modem. Per ottenere detto supporto potreste dover ricompilare il kernel, o aggiungere moduli ad esso, come descritto in Il kernel Linux su Debian, Capitolo 7.

La configurazione dei dispositivi di rete è spiegata sotto. Le informazioni di questo capitolo sono state aggiornate per Sarge. Molte di esse non si applicano a distribuzioni precedenti.


10.1 Le basi dell'IP networking

Un host Debian può avere parecchie interfacce, ciscuna con il proprio indirizzo IP (Internet Protocol). Le interfacce possono essere di tipi differenti, inclusi:

Esiste una vasta gamma di altri dispositivi di rete disponibili, inclusi SLIP, PLIP (linea seriale e parallela IP), dispositivi "shaper" per controllare il traffico su certe interfacce, frame relay, AX.25, X.25, ARCnet, e LocalTalk.

Ciascuna interfaccia connessa direttamente ad Internet (o a qualsiasi rete basata su IP) viene identificata da un indirizzo unico a 32 bit. [53] L'indirizzo Ip può essere diviso in una parte relativa alla rete e ad una parte relativa all'host. Se prendete un indirizzo IP, impostate ad 1 i bit relativi alla rete e a 0 quelli relativi all'host, ottenete il net mask della rete.

tradizionalmente, le reti IP sono raggruppate in classi, le cui parti di indirizzo sono lunghe 8, 16 o 24 bit. [54]

               Indirizzi IP                   net mask      lunghezza
     Classe A  1.0.0.0     - 126.255.255.255  255.0.0.0     =  /8
     Classe B  128.0.0.0   - 191.255.255.255  255.255.0.0   = /16
     Classe C  192.0.0.0   - 223.255.255.255  255.255.255.0 = /24

Gli indirizzi che non sono in questi intervalli vengono usati per scopi speciali.

Esistono intervalli in ciascuna classe che sono riservati per l'uso nelle local area network (LAN). Questi indirizzi sono garantiti non entrare in conflitto con qualsiasi indirizzo di Internet propriamente detto. (Per lo stesso ragionamento, se uno di essi viene assegnato ad un host, allora detto host non deve accedere direttamente ad Internet, ma attraverso un gateway che agisca come proxy per i singoli servizi od altrimenti esegua Network Address Translation.) Questi intervalli vengono forniti nella tabella seguente, insieme al numero di intervalli per ciascuna classe.

               indirizzi                  lunghezza quantità
     Class A   10.x.x.x                     /8      1
     Class B   172.16.x.x -  172.31.x.x     /16     16
     Class C   192.168.0.x - 192.168.255.x  /24     256

Il primo indirizzo di una rete IP è l'indirizzo della rete stessa. L'ultimo è l'indirizzo di broadcast per la rete. [55] Tutti gli altri indirizzi della rete possono essere allocati agli host. Di questi, il primo o l'ultimo indirizzo vengono in genere allocati al gateway Internet per la rete.

La tablla d'instradamento contiene le informazioni del kernel su come inviare i pacchetti IP alle loro destinazioni. Ecco un esempio di tabella per un host Debian su una LAN con indirizzo IP 192.168.50.x/24. L'host 192.168.50.1 (anch'esso sulla LAN) è un router per la rete aziendale 172.20.x.x/16 e l'host 192.168.50.254 (anch'esso sulla LAN) è un router per Internet.

     # route
     Kernel IP routing table
     Destination   Gateway        Genmask       Flags Metric Ref Use Iface
     127.0.0.0     *              255.0.0.0     U     0      0     2 lo
     192.168.50.0  *              255.255.255.0 U     0      0   137 eth0
     172.20.0.0    192.168.50.1   255.255.0.0   UG    1      0     7 eth0
     default       192.168.50.254 0.0.0.0       UG    1      0    36 eth0

Gli indirizzi IP nella tabella possono apparire anche come nomi, ottenuti guardando gli indirizzi in /etc/networks o usando il resolver della Libreria C.

In aggiunta al reindirizzamento, il kernel può eseguire network address translation, traffic shaping e filtering.

Vedere il Net-HOWTO ed altri HOWTO sul networking per maggiori informazioni di base.


10.2 Configurazione della rete a basso livello

Gli strumenti tradizionali per la configurazione a basso livello dei sistemi GNU/Linux, sono ifconfig e route, che sono forniti dal pacchetto net-tools. Essi sono stati ufficialmente soppiantati da ip, fornito dal pacchetto iproute. Il programma ip funziona con Linux 2.2 ed oltre ed è più valido degli altri strumenti. Comunque, questi ultimi ancora funzionano e sono più familiari a molti utenti.


10.2.1 Configurazione a basso livello – ifconfig and route

Ecco un'illustrazione su come modificare l'indirizzo IP dell'interfaccia eth0 da 192.168.0.3 a 192.168.0.111 e per rendere eth0 il route alla rete 10.0.0.0 via 192.168.0.1. Iniziamo lanciando ifconfig e route senza argomenti, per mostrare lo stato attuale di tutte le interfacce di rete e del reindirizzamento.

     # ifconfig
     eth0 Link encap:Ethernet  HWaddr 08:00:46:7A:02:B0
          inet addr:192.168.0.3  Bcast:192.168.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:23363 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:13479541 (12.8 MiB)  TX bytes:20262643 (19.3 MiB)
          Interrupt:9
     
     lo   Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:230172 errors:0 dropped:0 overruns:0 frame:0
          TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:22685256 (21.6 MiB)  TX bytes:22685256 (21.6 MiB)
     # route
     Kernel IP routing table
     Destination  Gateway      Genmask          Flags Metric Ref Use Iface
     192.168.0.0  *            255.255.0.0      U     0      0     0 eth0
     default      192.168.0.1  255.255.255.255  UG    0      0     0 eth0

Prima disattiviamo l'interfaccia.

     # ifconfig eth0 inet down
     # ifconfig
     lo   Link encap:Local Loopback
       ... (la voce eth0 è sparita)
     # route
       ... (le voci della tabella di reindirizzamento sono scomparse)

Poi, riattiviamola con il nuovo indirizzo IP e nuovo reindirizzamento.

     # ifconfig eth0 inet up 192.168.0.111 \
                netmask 255.255.255.0 broadcast 192.168.0.255
     # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0

Il risultato:

     # ifconfig
     eth0 Link encap:Ethernet  HWaddr 08:00:46:7A:02:B0
          inet addr:192.168.0.111  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          ...
     
     lo   Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          ...
     # route
     Kernel IP routing table
     Destination  Gateway      Genmask        Flags Metric Ref Use Iface
     192.168.0.0  *            255.255.255.0  U     0      0     0 eth0
     10.0.0.0     192.168.0.1  255.0.0.0      UG    0      0     0 eth0

Per maggiori informazioni, vedere ifconfig(8) e route(8).


10.2.2 Configurazione a basso livello – ip

I comandi equivalenti per ip dei precedenti per ifconfig e route sono:

Ip stampa la sintassi dei suoi comandi se lanciato con l'argomento help. Per esempio, ip link help mostra:

     Usage: ip link set DEVICE { up | down | arp { on | off } |
                          dynamic { on | off } |
                          multicast { on | off } | txqueuelen PACKETS |
                          name NEWNAME |
                          address LLADDR | broadcast LLADDR |
                          mtu MTU }
            ip link show [ DEVICE ]

Vedere anche ip(8).


10.2.3 Configrazione di un'interfaccia Wi-Fi.

Per le interfacce Wi-Fi, si usa il programma iwconfig, che è fornito dal pacchetto wireless-tools in aggiunta a ifconfig o ip.

Vedere iwconfig(8).


10.2.4 Configurare un'interfaccia PPP

Se accedete ad Internet attraverso un modem connesso alla linea telefonica analogica, allora la connessione viene negoziata mediante il Protocollo Punto-a-Punto (PPP). Si accede a tali connessioni come interfacce di rete ppp0, ppp1 e così via.

L'interfaccia PPP viene gestita dal demone pppd, fornito dal pacchetto ppp. Ergo, per l'utente, configurare l'interfaccia PPP significa configurare pppd.


10.2.4.1 Configurare pppd manualmente

Affinchè una connessione di rete venga stabilita, si deve aprire una porta di comunicazione (in genere seriale), devono essere dati dei comandi ad un dispositivo di comunicazione (in gener un modem), si deve fare il numero telefonico, ci si deve autenticare presso un demone PPP esterno, si deve creare un'interfacia PPP e le tabelle di reindirizzamento devono essere modificate così che il traffico venga inviato sulla connessione. pppd fa tutto ciò e, di conseguenza, ha un elenco molto lungo di opzioni operative. Esse sono descritte in pppd(8).

Su un sistema Debian, le opzioni globali vengono impostate in /etc/ppp/options. Quelle specifiche per l'utente in ~/.ppprc. Quelle che dipendono dalla porta utilizzata vengono immagazzinate in /etc/ppp/options.nomeporta. Per esempio, ammettiamo che abbiate due modem—uno interno, Lucent LT modem, a cui si accede tramite /dev/LT-modem ed uno esterno, a cui si accede tramite /dev/ttyS0. Create i seguenti file di opzioni.

     # cat > /etc/ppp/options.LT-modem <<EOF
     115200
     init "/usr/sbin/chat -f /etc/chatscripts/setup-LT-modem"
     EOF
     # cat > /etc/ppp/options.ttyS0 <<EOF
     115200
     init "/usr/sbin/chat -f /etc/chatscripts/setup-ttyS0"
     EOF

Essi fanno riferimento ai seguenti script chat. Il primo, /etc/chatscripts/setup-LT-modem.

     ABORT ERROR
     '' ATZ
     OK 'ATW2X2 S7=70 S11=55'
     OK AT

Il secondo /etc/chatscripts/setup-ttyS0.

     ABORT ERROR
     '' ATZ
     OK 'ATL1M1Q0V1W2X4&C1&D2 S6=4 S7=70 S11=55 S95=63 S109=1 +FCLASS=0'
     OK AT

Il contenuto di questi file dipende dal vostro hardware, naturalmente.

Le opzioni possono essere anche date come argomenti di pppd.

In Debian pppd vien lanciato in genere dal comando pon. Quando si usa pon, il primo argomento chiama un file in /etc/ppp/peers/ che viene letto anche da pppd. [56] Qui è dove impostate le opzioni specifiche per un particolare peer—per esempio un particolare Internet Service Provider (ISP).

Supponiamo, per esempio, che viaggiate tra Amstrdam e Den Haag. In ciascuna città avete accesso a due ISP—Planet e KPN. Per prima cosa, create un file di opzioni base per ciascun ISP.

     # cat > /etc/ppp/peers/KPN <<EOF
     remotename KPN
     noauth
     user kpn
     noipdefault
     ipparam KPN
     EOF
     # cat > /etc/ppp/peers/Planet <<EOF
     remotename Planet
     auth
     user user3579@planet.nl
     noipdefault 
     mru 1000
     mtu 1000
     ipparam Planet
     EOF

Questi file impostano le opzioni che differiscono tra i due ISP. Quelle comuni ai due ISP possono essere messe in /etc/ppp/options o in uno dei file specifici per interfaccia, se appropriato.

Ora create i file per ciascun ISP, in ciascuna città. Nel nostro esempio l'unica differenza fra connettersi ad un ISP in un luogo e in un altro sta nel chatscript richiesto. (Essi sono diversi, poichè i numeri di accesso telefonico sono diverso.)

     # cat > /etc/ppp/peers/KPN-Amsterdam <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-Amsterdam"
     file /etc/ppp/peers/KPN
     EOF
     # cat > /etc/ppp/peers/KPN-DenHaag <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-DenHaag"
     file /etc/ppp/peers/KPN
     EOF
     # cat > /etc/ppp/peers/Planet-Amsterdam <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-Amsterdam"
     file /etc/ppp/peers/Planet
     EOF
     # cat > /etc/ppp/peers/Planet-DenHaag <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-DenHaag"
     file /etc/ppp/peers/Planet
     EOF

Le direttive file includono ciascuno dei file mostrati prima. La direttiva connect specifica il comando che usa pppd per eseguire la connessione. In genere si usa il programma chat per ciò, adattando il chatscript all'ISP. Ecco quelli per Den Haag; quelli per Amsterdam possono essere simili, tranne che per il numero telefonico, oppure possono differire se l'ISP offre lì i servizi attraverso un'altra compagnia.

     # cat > /etc/chatscripts/KPN-DenHaag <<EOF
     ABORT BUSY
     ABORT 'NO CARRIER'
     ABORT VOICE
     ABORT 'NO DIALTONE'
     ABORT 'NO DIAL TONE'
     ABORT 'NO ANSWER'
     ABORT ERROR
     OK-AT-OK ATDT 0676012321
     CONNECT \d\c
     EOF
     # cat > /etc/chatscripts/Planet-DenHaag <<EOF
     ABORT BUSY
     ABORT 'NO CARRIER'
     ABORT VOICE
     ABORT 'NO DIALTONE'
     ABORT 'NO DIAL TONE'
     ABORT 'NO ANSWER'
     ABORT ERROR
     OK-AT-OK ATDT 0676002505
     CONNECT \d\c
     EOF

Per potervi connettere a questi ISP, avete bisogno dei nomi del client e delle password che pppd possa fornire al peer a richiesta. Questa informazione è contenuta o in /etc/ppp/pap-secrets (se si usa il protocollo PAP) o in /etc/ppp/chap-secrets (se è CHAP). Sebbene CHAP sia più sicuro, PAP è ancora più largamente usato. Siccome questi file contengono dei dati segreti, gruppo e resto del mondo non dovrebbero avere permessi in lettura o scrittura. Il formato di questi file è spiegato in pppd(8). Un "secret" (terzo campo) viene cercato nel file trovando il nome del client (primo campo) e/o il nome del server (secondo campo). Quando ci si collega ad un ISP, in genere non si conosce il nome del server, così si fornisce invece il nome del client; ciò viene fatto nelle righe user in peers/KPN e peers/Planet sopra.

     # client name       server name  secret
     kpn                 *            kpn
     user3579@planet.nl  *            myfavoritepet

Vedere /usr/share/doc/ppp/README.Debian.gz per maggiori informazioni.


10.2.4.2 Configurare pppd con pppconfig

Un modo veloce per configurare pppd è tramite il programma pppconfig, fornito dal pacchetto omonimo. pppconfig imposta i file come quelli sopra, dopo aver chiesto all'utente alcune domande, tramite un'interfaccia a menu.


10.2.4.3 Configurare un'interfaccia PPP con wvdial

Un approccio diverso all'uso di pppd è di lanciarlo da wvdial, fornito dal pacchetto wvdial. Invece di far lanciare a pppd chat per aprire e negoziare la connessione, wvdial esegue il numero e la negoziazione iniziale, poi lancia pppd per fare il resto. Dando solo numero telefonico, username e password a wvdial si ha successo nel compiere la connessione nella maggior parte dei casi.


10.3 Dare un nome al computer


10.3.1 Hostname

Un sistema Debian ha talvolta bisogno di identificarsi tramite un nome. All'uopo, il kernel mantiene un hostname.

Lo script di inizializzazione /etc/init.d/hostname.sh imposta l' hostname al boot (usando il comando hostname) al nome contenuto in /etc/hostname. Questo file deve contenere soslo l'hostname, non un nome di dominio pienamente qualificato.

Per mostrare l'hostname attuale, lanciate hostname senza argomenti.


10.3.2 Mailname

Il mailname di un host è il nome che i programmi che hanno a che fare con la posta usano per identificare l'host. Il file /etc/mailname contiene questo nome, seguito da una riga vuota. Il mailname è in genere uno dei nomi dominio pienamente qualificati dell'host. Vedere mailname(5).

Quello che il destinatario di una mail vede nel campo From: di un messaggio inviato dal vostro host Debian dipende da come sono configurati i vostri Mail User Agent (MUA) e Mail Transfer Agents (MTA). Supponiamo che un utente locale foo mandi un messaggio da un hos con mailname myhost.dom. Il campo From: della mail in uscita sarà:

Persino quando il MUA ha un campo From: impostato, il MTA può aggiungere un campo "Sender:foo@herman.dom" per indicarne la sua vera origine.

Naturalmente, quando tutti i MTA coinvolti eseguono la riscrittura dell'indirizzo, come discusso in Raccolta di tutti gli indirizzi e-mail inesistenti in Exim, Sezione 9.6.1.3 e Riscrivere selettivamente l'indirizzo per la posta in uscita (Exim), Sezione 9.6.1.4, l'indirizzo visto dal destinatario può essere cambiato in qualsiasi cosa.


10.4 Domain Name Service (DNS)

Gli host possono venire definiti per nome dominio e per indirizzo IP. Il DNS è un sistema client-server in cui i risolutori del nome consultano i nameserver per associare i nomi dominio con gli indirizzi IP ed altre proprietà degli host. La libreria GNU C resolver(3) è anch'essa in grado di cercare gli indirizzi Ip nei file o di consultare i Network Information Services (NIS).

Per vedere quale nome dominio è associato con l'host locale, usate il comando hostname --fqdn. Quasto mostra il primo nome dominio pienamente qualificato che il risolutore trova per l'hostname locale. [57]


10.4.1 Il risolutore

Il lavoro di scoprire quali indirizzi IP sono associati con un dominio particolare, è a carico del risolutore. Il più comunemente usato è il gruppo di funzioni che va sotto il nome di resolver (resolver(3)) nella libreria GNU C. Un altro è il risolutore FireDNS, fornito da pacchetto libfiredns.

Come il risolutore LIBC risolva i nomi dipende dalla riga hosts nel file di configurazione /etc/nsswitch.conf. Questa riga elenca i servizi che dovrebbero essere usati per risolvere un nome: p. es., dns, files, nis, nisplus. [58] Vedere nsswitch.conf(5). Fintanto che si usa il servizio files, il comportamento del risolutore viene anche gestito dal file di configurazione /etc/hosts. Vedere hosts(5).

Tutti i file sopra descritti sono statici e possono essere modificati con il vostro editor preferito.

Fintanto che si usa il servizio dns, il comportamento delb risolutore viene gestito anche dal file di configurazione /etc/resolv.conf. Vedere resolv.conf(5). Una delle funzioni principali di resolv.conf è di elencare gli indirizzi IP dei nameserver che verranno contattati per risolvere il nome. Tale lista spesso dipende dal tipo di rete a cui ci si connette e queto tipo può cambiare nel tempo mentre il vostro computer sta funzionando. Programmi tipo pppd e dhclient sono in grado di manipolare resolv.conf per aggiungere e rimuovere righe, ma quaste funzionalità non funzionano sempre in maniera appropriata, entrando in conflitto una con l'altra. Il pacchetto resolvconf risolve il problema in maniera migliore, fornendo un'infrastruttura standard per aggiornare questo file. Vedere Gestire le informazioni del nameserver – resolvconf, Sezione 10.4.2.


10.4.2 Gestire le informazioni del nameserver – resolvconf

Il pacchetto resolvconf fornisce un'infrastruttura per la gestione dinamica delle informazioni sui nameserver disponibili. Risolve l'annoso problema di come mantenere una lista dinamica di nameserver utilizzabile dal risolutore a dalle cache DNS. Resolvconf si pone come intermediario fra i programmi che controllano le interfacce di rete e forniscono le informazioni sul nameserver e le applicazioni che necessitano di dette informazioni.

resolvconf è disegnato per lavorare senza alcuna necessità di configurazione manuale. Comunque, il pacchetto è abbastanza nuovo e può richiedere un intervento manuale per farlo funzionare in maniera appropriata. Ciò è sicuramente vero se avete personalizzato dei pacchetti in maniera da aggiornare /etc/resolv.conf: dovrete disabilitare le vostre modifiche. Vedere /usr/share/doc/resolvconf/README.gz for details.


10.4.3 Salvare i nomi cercati – nscd, dnsmasq, pdnsd, bind9

Se il vostro nameserver è lento a rispondere, allora potete usare nscd per mettere in cache i risultati delle ricerche ottenuti usando il risolutore libc6.

Se volete salvare i risultati per altri host sulla vostra rete locale, allora potreste voler utilizzare un caching forwarding nameserver tipo dnsmasq o pdnsd.

Se volete, potete anche usare named di bind9, per lo stesso scopo. E', però, un programma pesante per cui a meno che abbiate bisogno delle sue funzionalità avanzate, vi troverete meglio con uno dei pacchetti menzionati prima.

Tutti questi pacchetti funzionano bene con resolvconf.


10.4.4 Fornire un Domain Name Service – bind

Se dovete fornire un name service autoritativo per un dominio, allora avete bisogno di un nameserver con tutti i crismi, come named, fornito dal pacchetto bind9.

Se installate bind9, dovreste installare anche dnsutils. Potreste voler installare anche questi pacchetti di utilità: bind9-host; dns-browse; dnscvsutil; nslint. Ed anche il pacchetto con la documentazione: bind9-doc. Nonchè questi pacchetti per lo sviluppo: libbind-dev; libnet-dns-perl. Se configurate le interfacce con DHCP, allora troverete questo pacchetto utile: dhcp-dns.

Installate bind9 o dpkg-reconfigure – atelo per le impostazioni di base. La configurazione consiste nella modifica di named.conf. In Debian esso si trova in /etc/bind/ ed è usato principalmente per definire le zone DNS di base; include altri due file: named.conf.local, usato per definire le zone locali e named.conf.options, usato per impostare le opzioni. (Quest'ultimo viene processato da resolvconf per produrre /var/run/bind/named.options, che è identico all'originale tranne che per la specificazione forwarders, che è una lista dei nameserver correntemente non disponibili. Per usarla modificate la riga include in named.conf in modo che comprenda /var/run/bind/named.options. Vedere Gestire le informazioni del nameserver – resolvconf, Sezione 10.4.2.)

I file di database nominati in named.conf* senza un percorso completo vengono salvati in /var/cache/bind/. Questo è il posto giusto per salvare i file generati da named: per esempio, i database per le zone per le quali il demone è secondario. I file statici dei database /etc/bind/ sono e devono essere riferiti in named.conf con il loro percorso completo. Vedere /usr/share/doc/bind9/README.Debian.gz for details.


10.5 Configurare le interfacce di rete con DHCP

La configurazione a basso livello delle inetrfacce può essere automatizzata mediante il Dynamic Host Configuration Protocol (DHCP). Il vostro firewall, o router o il vostro ISP a larga banda possono fornire gli indirizzi IP ed altri parametri in questo modo.

Per falro funzionare dovete installare uno dei seguenti pacchetti:

pump è semplice e largamente usato. dhcp3-client è complesso, ma ampiamente configurabile. [59]


10.6 Configurazione di rete ad alto livello in Debian

Per semplificare la configurazione di rete, Debian fornisce uno strumento di configurazione standard, che consiste nei programmi ifup ed ifdown e nel file /etc/network/interfaces. [60] Se scegliete ifupdown per la vostra configurazione di rete, allora non dovreste usare, di norma, anche i comandi a basso livello. [61] Il programma ifupdown è stato scritto con l'intento di utilizzarlo da solo per configurare e deconfigurare le interfacce di rete.

Per aggiornare la configurazione di un'interfaccia, fate così:

     # ifdown eth0
     # editor /etc/network/interfaces  # modificatelo a piacimento
     # ifup eth0

Per maggiori informazioni, vedere interfaces(5), /usr/share/doc/ifupdown/examples/network-interfaces.gz e ifup(8).


10.6.1 Configurare un'interfaccia con un indirizzo IP statico

Supponiamo vogliate configurare un'interfaccia Ethernet in maniera che abbia un indirizzo IP fisso di 192.168.0.111. Esso inizia con 192.168.0, quindi deve essere di una LAN. Supponiamo, inoltre, che 192.168.0.1 sia l'indirizzo del gateway ad Internet della LAN. Modificate /etc/network/interfaces in maniera che abbia un blocco di righe come questo:

     iface eth0 inet static
             address 192.168.0.111
             netmask 255.255.255.0
             gateway 192.168.0.1

Potete configurare altri aspetti dell'interfaccia od eseguire altre azioni dopo averla attivata o prima di disattivarla, specificando i comandi appropriati sulle righe "up" e "down".

     iface eth0 inet static
             address 192.168.0.111
             netmask 255.255.255.0
             gateway 192.168.0.1
             up route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.2 dev $IFACE
             down route del -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.2 dev $IFACE
             up echo Interface $IFACE going up | /usr/bin/logger -t ifup
             down echo Interface $IFACE Going down | /usr/bin/logger -t ifdown

In alternativa i comandi possono essere inseriti in script nelle directory /etc/network/if-up.d e /etc/network/if-down.d. Essi possono anche implementare opzioni più estese. Vedere interfaces(5) for details. Per esempio, il pacchetto resolvconf comprende degli script che vi permettono di aggiungere delle opzioni che specificano che le informazioni sul DNS vengano incluse in /etc/resolv.conf mentre l'interfaccia è attiva:

     iface eth0 inet static
             address 192.168.0.111
             netmask 255.255.255.0
             gateway 192.168.0.1
             dns-search somedomain.org
             dns-nameservers 195.238.2.21 195.238.2.22

L'argomento somedomain.org dell'opzione dns-search corrisponde all'argomento dell'opzione search in resolv.conf(5). Gli argomenti 195.238.2.21 e 195.238.2.22 dell'opzione dns-nameservers corrisponde agli argomenti delle opzioni nameserver. Altre opzioni riconosciute sono dns-domain e dns-sortlist. Vedere Gestire le informazioni del nameserver – resolvconf, Sezione 10.4.2.


10.6.2 Configurare un'interfaccia con DHCP

per configurare un'interfaccia con DHCP, modificate /etc/network/interfaces in maniera che comprenda una serie di righe come questa:

     iface eth0 inet dhcp

Affinchè funzioni doverete avere installato uno dei client DHCP menzionati in Configurare le interfacce di rete con DHCP, Sezione 10.5.


10.6.3 Configurare un'interfaccia Wi-Fi

Il pacchetto wireless-tools comprende uno script di aggancio /etc/network/if-pre-up.d/wireless-tools che gli rende possibile configurarare l'harware Wi-Fi (801.11a/b/g) prima che l'interfaccia venga attivata. La configurazione viene fatta con il programma iwconfig; vedere iwconfig(8). Per tutti i parametri possibili di iwconfig potete includere un'opzione in /etc/network/interfaces con il nome del parametro preceduto da un prefisso "wireless-". Per esempio, per impostare l'ESSID di eth0 a myessid e la chiave di cifratura a 123456789e prima di attivare eth0 mediante DHCP, modificate /etc/network/interfaces in maniera che comprenda una serie di righe tipo questa:

     iface eth0 inet dhcp
             wireless-essid myessid
             wireless-key 123456789e

Notate che non dovreste usare questo metodo per impostare ESSID e chiave se state usando waproamd per questa interfaccia. Nel momento in cui ifup viene eseguito waproamd ha già impostato sia ESSID che chiave. Vedere Iniziare la configurazione di rete – waproamd, Sezione 10.10.4.


10.6.4 Configurare un'interfaccia PPP

I programmi ifup e ifdown usano pon e poff per aggiungere e rimuovere le interfacce PPP, per cui leggete prima Configurare un'interfaccia PPP, Sezione 10.2.4.

Supponiamo che abbiate impostato PPP per funzionare con il peer myisp. Modificate /etc/network/interfaces in maniera che includa una serie di righe come questa:

     iface ppp0 inet ppp
             provider myisp

In questo modo, ifup ppp0 esegue

     pon myisp

Sfortunatamente, non è al momento possibile fornire opzioni aggiuntive di pppd alle righe ppp in /etc/network/interfaces. [62]

Non è attualmente possibile usare ifupdown per eseguire una configurazione ausiliaria delle interfacce PPP. Siccome pon termina prima che pppd abbia finito di stabilire la connessione, ifup eseguegli script up prima che l'interfaccia PPP sia pronta all'uso. Finchè questo baco [63] non verrà risolto, resta la necessità di fare una configurazione ausiliaria in /etc/ppp/ip-up o in /etc/ppp/ip-up.d/.


10.6.5 Configurare un'interfaccia PPPoE

Molti Internet Service Provider (ISP) con la larga banda usano PPP per negoziare le connessioni, anche se le macchine dei loro clienti sono connesse tramite reti Ethernet e/o ATM. Ciò si ottiene mediante PPP over Ethernet (PPPoE), che è una metodica per l'incapsulazione di flussi PPP all'interno di blocchi Ethernet. Supponiamo che il vostro ISP si chiami myisp. Per prima cosa configurate PPP e PPPoE per il peer myisp. Il modo più semplice è di installare il pacchetto pppoeconf e di lanciare pppoeconf da console. Poi modificate /etc/network/interfaces in maniera che includa un serie di righe come questa:

     iface eth0 inet ppp
             provider myisp

Talvolta ci possono essere problemi con le Maximum Transmit Unit (MTU) con PPPoE su Digital Subscriber Line (DSL). Vedere DSL-HOWTO for details.

Notate che se il vostro modem a larga banda contiene un router, allora sarà il modem/router a gestire la connessione PPPoE e ad apparire sul versante LAN come un semplice gateway Ethernet per Internet.


10.6.6 Configurare più interfacce Ethernet per un gateway

Supponiamo che eth0 sia connesso ad Internet con un indirizzo IP configurato mediante DHCP e che eth1 sia connesso alla LAN con un indirizzo IP statico 192.168.1.1. Modificate /etc/network/interfaces in maniera da comprendere una serie di righe come questa:

     iface eth0 inet dhcp
     
     iface eth1 inet static 
             address 192.168.1.1 
             netmask 255.255.255.0

Se attivale il NAT su questo host come descritto in Costruire un gateway router, Sezione 10.14, allora potete condividere la connessione ad Internet con tutti gli altri host dell LAN.


10.6.7 Configurare le interfacce virtuali

Mediante le interfacce virtuali potete configurare una singola scheda Ethernet come interfaccia a parecchie sottoreti IP. Per esempio, ammettiamo che il vostro host sia sulla LAN della rete 192.168.0.x/24. Volete conneterlo ad Internet mediante un indirizzo IP pubblico fornito via DHCP usando la vostra scheda Ethernet già esistente. Modificate /etc/network/interfaces in maniera che comprenda una serie di righe come questa:

     iface eth0 inet static
             address 192.168.0.1
             netmask 255.255.255.0
             network 192.168.0.0
             broadcast 192.168.0.255
     
     iface eth0:0 inet dhcp

L'interfaccia eth0:0 è un'interfaccia virtuale. Quando viene attivata, verrà attivata consensualmente eth0.


10.7 Configurazione di rete mediante definizione delle interfacce logiche

E' importante per il lettore comprendere la differenza fra un' interfaccia fisica ed un' interfaccia logica. [64] Un'interfaccia fisica è quella che abbiamo finora chiamato "l'interfaccia", la cosa che il kernel definisce eth0, eth1, ppp0, o quel che avete. Un'interfaccia logica è rappresentata da un gruppo di valori assegnati ai parametri variabili di un' interfacia fisica. Se lo trovate ostico, Sostituite l'espressione "configurato come interfaccia logica X" con l'espressione "configurato con il profilo dell'interfaccia X" quando leggete.

Le definizioni iface in /etc/network/interfaces sono in realtà definizioni di interfacce logiche, non fisiche. [65] Se non vorrete mai riconfigurare le vostre interfacce, allora potete ignorare questo fatto, pocihè l'interfaccia fisica foo verrà configurata in partenza come interfaccia logica foo.

Tuttavia, ammettiamo che il vostro computer sia un portatile che trasportate fra casa e lavoro. Quando lo connettete alla rete aziendale o alla LAN casalinga, dovete configurare eth0 di conseguenza.

Definite prima due interfacce logiche, home e work (invece che eth0, come fatto prima), che descrivono come l'interfaccia deve essere configurata per la rete casalinga ed aziendale, rispettivamente.

     iface home inet static
             address 192.168.0.123
             netmask 255.255.255.0
             gateway 192.168.0.1
     
     iface work inet static
             address 81.201.3.123
             netmask 255.255.0.0
             gateway 81.201.1.1

Allora l'interfaccia fisica eth0 può essere attivata per casa con la configurazione appropriata, specificando sulla riga di comando:

     # ifup eth0=home

Per riconfigurare eth0 per il lavoro, date i comandi:

     # ifdown eth0
     # ifup eth0=work

Notate che con il file interfaces scritto nel modo precedente non sarà più possibile attivare eth0 con il solo ifup eth0. La ragione sta nel fatto che ifup usa il nome dell'interfaccia fisica come nome predefinito di quella logica ed ora nel nostro esempio nessuna interfaccia logica eth0 è definita.


10.8 Magie della configurazione di rete

I nomi delle interfacce possono essere "mappati" come altri nomi quando gira ifup. Come ciò accada può essere fatto dipendere dalle circostanze. Perciò, ifup può essere configurato in maniera tale da attivare una data interfaccia fisica come interfaccia logica appropriata, scegliendo fra una serie di alternative predefinite.

La mappatura dei nomi delle interfacce avviene così:

La sintassi del gruppo di righe mapping è:

     mapping glob-pattern
             script script-name
             [map script input]

Lo script chiamato dal gruppo mapping viene sempre eseguito con il nome dell'interfaccia fisica come argomento e con il contenuto di tutte le righe seguenti "map" nel gruppo (senza la parola "map") fornitogli come standard input. Lo script stampa il risultato della mappatura sul proprio standard output prima di uscire.

Per esempio, il blocco mapping seguente dice a ifup di attivare l'interfaccia eth0 come interfaccia logica home.

     mapping eth0
             script /usr/local/sbin/echo-home

dove /usr/local/sbin/echo-home è:

     #!/bin/sh
     echo home

Poichè la mappatura è eseguita con uno script, è possibile scegliere automaticamente l'interfaccia logica — basandosi su una sorta di test. Vedere Selezione delle interfacce logice con guessnet, Sezione 10.8.1 per un esempio di ciò.


10.8.1 Selezione delle interfacce logice con guessnet

Installate guessnet e poi aggiungete un blocco di righe come il seguente a /etc/network/interfaces:

     mapping eth0
             script guessnet-ifupdown
             map home
             map work

Ora, quando date ifup eth0, guessnet controlla se eth0 può essere attivata come home o work. Per far ciò usa le informazioni contenute nelle definizioni delle interfacce logiche.


10.8.2 Configurazione di rete automatica con laptop-net

Il pacchetto laptop-net usa un approccio diverso per la riconfigurazione automatica della rete. Laptop-net non usa le interfacce logiche di ifupdown, ma ha il proprio sistema di configurazione, basato su "schemes" e "profiles". Laptop-net, però, usa ifup e ifdown per configurare le interfacce fisiche. Per maggiori informazioni consultate l'ottima documentazione in laptop-net-doc.


10.9 Gestire nomi inconsistenti delle interfacce dati dal kernel

I nomi eth0, eth1, ecc. vengono assegnati dal kernel in maniera che possa creare le interfacce con il medesimo nome. mentre gli adattatori riconosciuti al boot sono in genere riconosciuti ogni volta nello stesso ordine e quindi ricevono gli stessi nomi ogni volta, lo stesso no vale per quelli che vengono inseriti a caldo. Questi possono venire riconosciuti in qualsiasi ordine e finire con nomi diversi assegnati dal kernel in occasioni differenti.

A causa di ciò, su un sistema in cui gli adattatori di rete vengono inseriti a caldo, non sempre vale la pena di definire delle interfacce logiche in /etc/network/interfaces con i nomi eth0, eth1, ecc. e di fidarsi della mappatura predefinita. Invece, dovrete dare nomi distinti alle interfacce logiche ed usare uno dei metodi seguenti per decidere quale interfaccia può essere assegnata a quale adattatore.

Un metodo è di usare o l'utilità nameif (del pacchetto net-tools) o la più flessibile ifrename (del pacchetto ifrename) per far assegnare al kernel i nomi alle interfacce in accorso con le proprietà degli adattori soggiacenti. Con tale schema, in effetti, il nome dell'interfaccia fisica può essere utilizzato per risalire a quale adattatore esso corrisponda.

Un altro metodo consiste nell'usare il meccanismo di mappatura di ifup in maniera tale che un'interfaccia logica venga scelta per attivarne una fisica sulla base di alcune caratteristiche tipiche del dato adattatore a cui corrisponde.

Ammettiamo, per esempio che avete due adattatori di rete diversi che usate con le reti net1 e net2, rispettivamente. La directory /usr/share/doc/ifupdown/examples/ contiene uno script di mappatura che può essere utilizzato per scegliere un'interfaccia logica basandosi sull'indirizzo del Media Access Controller (indirizzo MAC) dell'adattatore. Per prima cosa installate lo script nella directory appropriata.

     # install -m770 /usr/share/doc/ifupdown/examples/match-mac-address.sh \
        /usr/local/sbin/

Aggiungete,poi, un gruppo di righe come il seguente a /etc/network/interfaces:

     mapping eth0
             script /usr/local/sbin/match-mac-address.sh
             map 02:23:45:3C:45:3C net1
             map 00:A3:03:63:26:93 net2

Vedere Mappatura multilivello, Sezione 10.11 per un esempio più complesso.

In entrambi i metodi applicati, la proprietà che viene usata più comunemente per identificare l'adattatore è l'indirizzo MAC.


10.10 Iniziare la configurazione di rete

Abbiamo visto come le interfacce possano essere configurate o riconfigurate. Ciò deve avvenire al momento giusto.

Tradizionalmente, la rete veniva configurata durante la sequenza di avvio tramite lo script di inizio /etc/rcS.d/S40networking e veniva raramente riconfigurata. I servizi che dipendevano dalla rete venivano lanciati dopo nella sequenza di avvio. Allo spegnimento o al riavvio gli script venivano eseguiti nell'ordine inverso.

Ora, invece, c'è un trend in GNU e Linux verso il supporto di hardware e circostanze che cambiano in maniera dinamica. All'inizio venne aggiunto il supporto per le schede PCMCIA inseribili a caldo; più di recente è stato aggiunto il meccanismo hotplug, così che molte altre periferiche possono essere messe e tolte mentre il computer sta andando. Ciò comprende l'hardware di rete. Notate che i servizi che dipendono da hardware che viene inserito a caldo devono essere lanciati solo dopo il suo inserimento e fermati dopo la sua rimozione. Ciò significa che tali servizi devono essere tolti al controllo del sistema di avvio System V e messi sotto il controllo di ifupdown.

Per esempio, supponiamo che il servizio foo, controllato dallo script /etc/init.d/foo dipenda dalla interfaccia di rete riconfigurata dinamicamente eth0.


10.10.1 Iniziare la configurazione di rete all'avvio

All'avvio lo script di inizio /etc/rcS.d/S40networking lancia il comando ifup -a. Ciò attiva tutte le interfacce fisiche elencate nei gruppi auto di /etc/network/interfaces.

Oggigiorno è spesso meglio gestire la configurazione di rete con metodi dinamici. Una volta che i meccanismi che supportano hardware dinamico sono in posizione, diventa più semplice anche gestire l'hardware statico come fosse dinamico. L'avvio può essere trattato, allora, come un altro evento hotplug. (Vedere Iniziare la configurazione di rete – hotplug, Sezione 10.10.2.)

Comunque in quasi tutti i casi uno vuole che al meno l'interfaccia di loopback lo venga attivata all'avvio. Perciò assicuratevi che /etc/network/interfaces contenga i seguenti gruppi.

     auto lo
     
     iface lo inet loopback

Potete elencare i nomi delle interfacce fisiche addizionali nei gruppi auto se volete attiavarli anche essi all'avvio. Mai elencare le interfacce PCMCIA nei gruppi auto. Cardmgr per PC;CIA viene lanciato più tardi nella sequenza d'avvio rispetto a /etc/rcS.d/S40networking.


10.10.2 Iniziare la configurazione di rete – hotplug

Per il supporto hot-plug, installlate il pacchetto hotplug.

L'hardware di rete può essere inserito a caldo all'avvio o dopo che una scheda (p. es. PCMCIA) è stata inserita nel computer oppure dopo che un' utilità tipo discover è stata eseguita ed ha caricato i moduli necessari.

Quando il kernel riconosce del niovo hardware, inizializza il driver per esso e poi lancia il programma hotplug per configurarlo. Se poi l'hardware viene rimosso, il kernel lancia di nuovo hotplug con variabili d'ambiente diversamente impostate. In Debian, quando hotplug viene chiamato, esegue degli script in /etc/hotplug/ e /etc/hotplug.d/. Vedere hotplug(8) per i dettagli.

Hardware di rete appena inserito viene configurato dallo script /etc/hotplug/net.agent. [67] Supponiamo che la vostra scheda di rete PCMCIA sia stata inserita, risultando l'interfaccia eth0 disponibile per l'uso. /etc/hotplug/net.agent fa quanto segue [68] :

     ifup eth0=hotplug

A meno di aver aggiunto una definizione di una interfaccia logica, o una mappatura definita hotplug a /etc/network/interfaces, questo comando non produrrà nulla. Per fare sì che configuri eth0, aggiungete il gruppo seguente a /etc/network/interfaces:

     mapping hotplug
             script echo

Come spiegato in Configurazione di rete mediante definizione delle interfacce logiche, Sezione 10.7, ciò mapperà il comando mostrato sopra in maniera che sia equivalente al seguente:

     ifup eth0=eth0

(Non includete un gruppo come questo se state usando delle istanze di ifplugd o waproamd lanciate da hotplug per controllare l'interfaccia.)

Se volete attivare solo eth0 e nient'altro all'inserimento a caldo, allora usate grep al posto di echo come segue:

     mapping hotplug
             script grep
             map eth0

Vedere Magie della configurazione di rete, Sezione 10.8 e /usr/share/doc/hotplug/README.Debian per altri consigli.


10.10.3 Iniziare la configurazione di rete – ifplugd

Il demone ifplugd attiva o disattiva un'interfaccia a seconda se l'hardware soggiacente sia connesso o meno alla rete. Il programma è in grado di riconoscere un cavo attivo connesso ad una interfaccia Ethernet o un punto di accesso associato ad una interfaccia Wi-Fi (sebbene waproamd sia probabilmente quello che volete usare in quest'ultimo caso). Quando ifplugd vede che lo stato del collegamento è cambiato, lancia uno script proxy che da predefinito chiama ifup o ifdown.


10.10.4 Iniziare la configurazione di rete – waproamd

Il demone waproamd è come ifplugd, solo che è stato pensato per le schede Wi-Fi. Cerca attivamente i punti di accesso a cui l'hardware Wi-Fi è in grado di connettersi. Una volta che la connessione è stabilita, waproamd lancia ifup.

Se usate waproamd, allora in via generale configurerete la scheda Wi-Fi tramite waproamd e non tramite le opzioni wireless-* in /etc/network/interfaces.


10.10.5 Configurazione di rete e PCMCIA

Esistono parecchi approcci possibili alla configurazione delle interfacce di rete PCMCIA (per i kernel 2.4 e 2.6).

L'approccio raccomandato per le schede a 16 bit si avvantaggia del fatto che il sottosistema hotplug Linux 2.4 ora supporta PCMCIA. [69]

Le schede di rete PCMCIA sono inseribili a caldo. Di conseguenza, qualsiasi che richiede l'accesso alla rete tramite loro, dovrebbe essere configurato in maniera da partire all'inserimento della scheda e terminare alla sua rimozione. In genere ciò si ottiene facendo sì che il servizio parta ad ifup e termini ad ifdown. Alcuni, tuttavia, scelgono di limitarsi all'inserzione a freddo della loro scheda PCMCIA: inseriscono la scheda prima di avviare il sistema e poi lanciano i servizi che richiedono l'accesso alla rete tramite la scheda nella sequenza di avvio. Se siete uno di questi, allora per assicurarvi che la scheda sia pienamente configurata prima dell'avvio dei servizi dovete fare quanto segue:

Questo trucco funziona solo per le schede a 16 bit.

Notate che, se usate le schede a 16 bit, pcmcia-cs è ancora necessario. Il demone cardmgr che il pacchetto contiene è responsabile della gestione dei socket e del caricamento dei moduli. Non vogliamo solo che chiami i programmi di configurazione di rete via /etc/pcmcia/network.

Affinchè cardmgr funzioni correttamente, potreste dover modificare /etc/pcmcia/config.opts per configurare le risorse assegnate alle schede a 16 bit. Vedere PCMCIA, Sezione 7.2.1 ed il Linux PCMCIA HOWTO per maggiori informazioni.


10.11 Mappatura multilivello

Supponiamo che i vostri adattatori di rete siano dinamici e che abbiate abilitato la configurazione automatica come descritto in Iniziare la configurazione di rete – hotplug, Sezione 10.10.2. Supponiamo anche che abbiate bisogno di mappare le interfacce logiche in "fisiche" a seconda sia dell'adattatore soggiacente all'interfaccia fisica (come descritto in Gestire nomi inconsistenti delle interfacce dati dal kernel, Sezione 10.9) che della rete connessa all'interfaccia (come descritto, per esempio, in Selezione delle interfacce logice con guessnet, Sezione 10.8.1). Potete ottenere ciò con la mappatura multilivello.

Il primo livello prende il nome del gruppo hotplug e restituisce il nome dell'interfaccia assegnato dal kernel, se questa deve essere inserita dinamicamente. Il secondo livello prende un nome dell'interfaccia assegnato dal kernel e restituisce il nome di un adattatore. Il terzo livello mappa i nomi degli adattattori a nomi di interfacce logiche, basandosi sul tipo di rete.

     # Allow hotplug to bring up interfaces
     mapping hotplug
     	script echo
     
     # Determine whether interface is wired or Wi-Fi
     mapping eth?
             script /usr/local/sbin/match-mac-address.sh
             map 02:23:45:3C:45:3C wired
             map 00:A3:03:63:26:93 wifi
     
     # Detect which wired network is available
     mapping wired
             script guessnet-ifupdown
             map work-wired
             map home
     
     # Detect which Wi-Fi network is available
     mapping wifi
             script ifscout
             map starbucks
             map work-wireless
     
     iface work-wired inet static
     	...

10.12 Configurazione dei servizi di rete

Una configurazione tipica dei servizi di rete di un desktop o di un server casalingo comprende:


10.13 Risoluzione dei problemi di rete

Se incontrate dei problemi, controllate l'output dei seguenti come prima presa di contatto:

     # ifconfig
     # cat /proc/pci
     # cat /proc/interrupts
     # dmesg | more

Vedere anche le sezioni seguenti Testare la rete: le basi, Sezione 8.6.29.

Se avete problemi con certi siti web, vedete Strani problemi di accesso con alcuni siti web, Sezione 3.7.5.


10.14 Costruire un gateway router

Un host Debian può diventare una macchina gateway per tutti gli scopi che esegue Network Address Translation (NAT, anche noto come masquerading), trasferimento posta, DHCP, DNS caching, HTTP proxy caching, servizio CVS, servizio NFS e Samba. Vedere Quale host ed IP usare per una LAN, Sezione 3.1.9 per l'esempio di tale impostazione.


10.14.1 Configurare Netfilter

Il progetto netfilter/iptables è un sottosistema di firewalling per Linux 2.4 e successivi. Vedere Netfilter, dove vengono spiegati molti argomenti relativi alla configurazione di rete.


10.14.1.1 Le basi di netfilter

Netfilter processa i pacchetti usando una catena di 5 tabelle: PREROUTING, INPUT, FORWARD, OUTPUT, and POSTROUTING.

                      decisione sul
                      routing
     IN ------>  PRE ---> ------> FORWARD -----> ----> POST -----> OUT
     interfaccia ROUTING  \       tracciamento /       ROUTING     interfaccia
                 DNAT     |       filtro       ^       SNAT
                 REDIRECT |                    |      MASQUERADE
                          v                    |
                        INPUT                OUTPUT
                          | filtro             ^ filtro,DNAT 
                          v                    |
                          \--> Processo Locale --/
                                  programmi nello user-space

10.14.2 La tabella di netfilter

I pacchetti vengono processati ad ogni catena, usando le seguenti tabelle.


10.14.2.1 I target di netfilter

Le regole di firewall hanno parecchi target:


10.14.2.2 I comandi di netfilter

I comandi base di iptables sono:

     iptables -N catena       # crea una catena
     
     iptables -A catena \     # aggiunge una regola alla catena
              -t table \ # usa una table (filter, nat, mangle) 
     	 -p protocollo \ # tcp, udp, icmp, o tutti, 
     	 -s indirizzo-sorgente[/mask] \ 
     	 --sport porta[:porta] \ # porta sorgente se -p è tcp o udp 
     	 -d destination-address[/mask] \
              --dport porta[:porta] \ # porta di destinazione se -p è tcp o udp
              -j target \ # cosa fare se corrisponde 
     	 -i nome-interfaccia-ingresso \ # per INPUT, FORWARD, PREROUTING 
     	 -o nome-interfaccia-uscita # per FORWARD, OUTPUT, POSTROUTING

10.14.2.3 Network Address Translation

Le macchine in una LAN possono accedere all'esterno attraverso un gateway che traduce gli indirizzi IP sulle LAN in indirizzi IP utilizzabili su Internet.

     # apt-get install ipmasq

Applicate le regole come da esempio per rafforzare la protezione di ipmasq. Vedere /usr/share/doc/ipmasq/examples/stronger/README. Per la kernel-image-2.4 Debian di woody, assicuratevi di caricare i moduli appropriati. La versione di ipmasq di Sarge ha risolto questo problema. Vedere Funzioni di rete, Sezione 7.2.3 per le configurazioni necessarie.

Per la kernel-image-2.2 Debian, modificate Z92timeouts.rul in /etc/masq/rules come segue per assicurare una connessione più lunga ai siti remoti (buona per mail di grosse dimensioni, ecc.):

     # tcp, tcp-fin, udp
     # 2hr, 10 sec, 160 sec - default
     # 1 day, 10 min, 10 min - più lungo, per esempio
     $IPCHAINS -M -S 86400 600 600

In più, se la rete è raggiunta tramite una NIC PCMCIA, ipmasq deve essere lanciato da /etc/pcmcia/network.opts. (leggere: /usr/share/doc/ipmasq/ipmasq.txt.gz) o da /etc/network/interfaces (leggere: Configurazione di rete e PCMCIA, Sezione 10.10.5 e Iniziare la configurazione di rete, Sezione 10.10).


10.14.2.4 Redirigere una connessione SMTP (2.4)

Supponiamo che abbiate un portatile che è configurato per utilizzare altre LAN e che vogliate usare il vostro agente di posta sul portatile senza doverlo riconfigurare.

Aggiungendo le regole seguenti tramite il comando iptables alla macchina gateway redirigerà la connessione SMTP verso di essa.

     # iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \
                -p tcp --dport smtp --to-port 25 # smtp=25, INPUT is open

Per una serie di regole di redirezione più completa, considerate l'installazione del pacchetto ipmasq e l'aggiunta di M30redirect.def alla directory /etc/ipmasq/rules/.


10.14.3 Gestione di connessioni multiple di rete

[DA CORREGGERE] Regole di routing: (da Phil Brutsche pbrutsch@tux.creighton.edu) Vedere il manuale iproute per i dettagli. Il traffic control (tc) potrebbe anche essere interessante.

L'ambiente:

     eth0: 192.168.1.2/24; gateway 192.168.1.1
     eth1: 10.0.0.2/24; gateway 10.0.0.1
     Nessun masquerading su questa macchina.

Alcune magie:

  1. ip rule add from 192.168.1.2 lookup 1
  2. ip rule add from 10.0.0.2 lookup 2
  3. ip route add to default via 10.0.0.1 metric 0
  4. ip route add to default via 192.168.1.1 metric 1
  5. ip route add table 1 to 192.168.1.0/24 via eth0
  6. ip route add table 1 to 10.0.0.2/24 via eth1
  7. ip route add table 1 to default via 192.168.1.1
  8. ip route add table 2 to 192.168.1.0/24 via eth0
  9. ip route add table 2 to 10.0.0.2/24 via eth1
  10. ip route add table 2 to default via 10.0.0.2

[DA CORREGGERE] Non l'ho mai fatto personalmente. Come impostare una connessione dialup come riserva di una connessione veloce con la caratteristica di autodial? Patch sono ben accolte :)


[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ successivo ]

La guida Debian

1.08-3, dom mag 1 07:45:18 UTC 2005

Osamu Aoki osamu@debian.org
Editor: David Sewell dsewell@virginia.edu
Traduzione italiana: Davide Di Lazzaro mc0315@mclink.it
Autori, Sezione A.1