[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ successivo ]
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.
Un host Debian può avere parecchie interfacce, ciscuna con il proprio indirizzo IP (Internet Protocol). Le interfacce possono essere di tipi differenti, inclusi:
Loopback: lo
Ethernet: eth0, eth1, ...
Wi-Fi: wlan0, wlan1, ... [52]
Token Ring: tr0, tr1, ...
PPP: ppp0, ppp1, ...
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
La prima riga dopo l'intestazione dice che il traffico destinato alla rete 127.x.x.x verrà reindirizzato attraverso lo, l'interfacia di loopback.
La seconda riga dice che il traffico destinato agli host sulla LAN verrà reindirizzato attraverso eth0.
La terza dice che il traffico destinato alla ret aziendale verrà reindirizzato verso il gateway 192.168.50.1, sempre tramite eth0.
La quarta dice che il traffico destinato ad Internet verrà reindirizzato verso il gateway 192.168.50.254, sempre tramite 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.
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.
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)
.
ip
I comandi equivalenti per ip
dei precedenti per
ifconfig
e route
sono:
ip link show
ip route list
ip link set eth0 down
ip addr del dev eth0 local 192.168.0.3
ip addr add dev eth0 local 192.168.0.111/24 broadcast 192.168.0.255
ip link set eth0 up
ip route add dev eth0 to 10.0.0.0/8 src 192.168.0.111 via 192.168.0.1
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)
.
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)
.
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
.
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.
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.
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.
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.
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à:
"From: foo@myhost.dom" se il MUA non ha il campo From: impostato;
"From: bar@myhost.dom" se il MUA ha il campo "From: bar" impostato;
"From: bar@bogus.dom" se il MUA ha il campo "From: bar@bogus.dom" impostato;
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.
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]
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.
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.
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
.
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.
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:
dhcp3-client
(versione 3, Internet Software Consortium)
dhcpcd
(Yoichi Hariguchi e Sergei Viznyuk)
pump
(Red Hat)
pump
è semplice e largamente usato. dhcp3-client
è
complesso, ma ampiamente configurabile. [59]
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)
.
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.
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.
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.
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/
.
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.
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.
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.
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.
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ì:
Se nessun nome di interfaccia logica è dato ad ifup
da riga di
comando, allora il nome della interfaccia fisica viene usato come nome iniziale
di quella logica.
Se il nome dell'interfaccia logica corrisponde ad uno di un blocco generale di righe mapping, allora quella mappatura verrà applicata per generare un nuovo nome per l'interfaccia logica. Ciò avviene a turno per ogni blocco.
Se il nome finale dell'interfaccia logica è l'etichetta di una definizione di
interfaccia logica in /etc/network/interfaces
, allora
l'interfaccia fisica corrispondente verrà attivata come logica. Altrimenti
ifup
stampa un messaggio che è "Ignoring unknown
interface" ed esce.
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ò.
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.
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
.
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/get-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/get-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.
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.
Prima rimuovete foo dal controllo del sistema di avvio. Se usate
il sistema sysv-rc
, allora fate quanto segue. [66]
# rm /etc/rc[2345].d/S??foo
Poi, mettete foo sotto il controllo di ifupdown
aggiungendo le opzioni up e down al gruppo
eth0 in /etc/network/interfaces
, che contiene le
chiamate allo script foo:
iface eth0 inet dhcp up /etc/init.d/foo start down /etc/init.d/foo stop
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
.
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.
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
.
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
.
Esistono parecchi approcci possibili alla configurazione delle interfacce di rete PCMCIA (per i kernel 2.4 e 2.6).
Per le schede a 32 bit PCI (CardBus):
ifupdown
controllato da hotplug
In Woody e Sarge dovete abilitare localmente il controllo da parte di
hotplug
di ifupdown
, aggiungendo una serie di righe
di mappatura a /etc/network/interfaces
, come descritto in Iniziare la configurazione di rete –
hotplug
, Sezione 10.10.2.
Per schede ISA a 16 bit:
ifupdown
controllato da hotplug
con
pcmcia-cs
raccomandato
In Woody e Sarge dovete disabilitare localmente il comportamento predefinito di
pcmcia-cs
di prendere il controllo di ifupdown
aggiungendo la riga exit 0 all'inizio di
/etc/pcmcia/network
Inoltre, dovete abilitare localmente il
controllo da parte di hotplug
su ifupdown
aggiungendo
un gruppo di righe di mappatura a /etc/network/interfaces
, come
descritto in Iniziare la configurazione di rete
– hotplug
, Sezione 10.10.2.
ifupdown
controllato da pcmcia-cs
mediante il
predefinito /etc/pcmcia/network
Deprecato, ma ancora il predefinito per Woody e Sarge
strumenti a basso livello controllati da pcmcia-cs
mediante codice
speciale in /etc/pcmcia/network
Deprecato
In Woody e Sarge il codice speciale viene abilitato modificando
/etc/pcmcia/network.opts
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:
Impostare CARDMGR_OPTS="-f" in
/etc/default/pcmcia
per forzare cardmgr
a girare in
foreground.
Rinominare /etc/rc?.d/S20pcmcia
a qualcosa tipo
/etc/rc?.d/S12pcmcia
.
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.
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/get-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 ...
Una configurazione tipica dei servizi di rete di un desktop o di un server casalingo comprende:
Il super-server Internet ed il wrapper demone TCP/IP, vedere Controllare l'accesso ai servizi, Sezione 9.2.5.
/etc/inetd.conf
ssh
: La shell sicura OpenSSH, vedere SSH, Sezione 9.5.
/etc/ssh/ssh_config
/etc/ssh/sshd_config
exim
: mail transport agent, vedere Mailname, Sezione 10.3.2 e Mail transport agent (MTA), Sezione 9.6.1.
/etc/exim/exim.conf
/etc/mailname
/etc/aliases
/etc/email-addresses
fetchmail
: demone per ritirare la posta da un account POP3, vedere
Ritirare la posta – Fetchmail,
Sezione 9.6.2.
/etc/fetchmailrc
procmail
: programma di distribuzione e filtro locale della posta,
vedere Processare la posta –
Procmail, Sezione 9.6.3.
~/.procmailrc
Hostname e DNS (proxy, cache, ...), vedere Hostname, Sezione 10.3.1 e Domain Name Service (DNS), Sezione 10.4.
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/resolv.conf
/etc/bind/named.conf
(modificare)
/etc/bind/db.lan
(aggiungere per gli host della LAN)
/etc/bind/db.192.168.0
(aggiungere per il LAN reverse)
DHCP, vedere Configurare le interfacce di rete con DHCP, Sezione 10.5.
/etc/dhcp3/dhclient.conf
(DHCP client)
/etc/default/dhcp3-server
(DHCP server)
/etc/dhcp3/dhcpd.conf
(DHCP server)
cvs
: concurrent versions system, vedere Concurrent Version System (CVS), Sezione 12.1.
/etc/cvs-cron.conf
/etc/cvs-pserver.conf
nfs-kernel-server
: network file system, vedere Configurare NFS, Sezione 3.4. (per sistemi
simil-unix)
/etc/exports
samba
: condivisione file e stampanti per Windows, vedere Configurare Samba, Sezione 3.5 and Samba, Sezione 8.6.38.
/etc/samba/smb.conf
Printer daemon system, vedere Configurare la stampante, Sezione 3.6.
/etc/printcap
(per lpr)
apache
e apache2
: web server.
/etc/apache/*
/etc/apache2/*
squid
: web proxy cache server.
/etc/squid/*
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.
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.
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.
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
I pacchetti vengono processati ad ogni catena, usando le seguenti tabelle.
filter (filtro pacchetti, default)
INPUT (per i pacchetti che vanno all'interno della macchina stessa)
FORWARD (per i pacchetti che vengono instradati attraverso la macchina)
OUTPUT (per pacchetti generati localmente).
nat (network address translation )
PREROUTING (per alterare i pacchetti non appena in entrata)
OUTPUT (per alterare i pacchetti generati localmente prima dell'instradamento)
POSTROUTING (per alterare i pacchetti non appena vengono messi in uscita)
mangle (mascherare il network address, valido solo dopo 2.4.18)
tutte e 5 le catene.
Le regole di firewall hanno parecchi target:
4 target di base:
ACCEPT significa lasciar passare il pacchetto.
DROP significa lasciar cadere il pacchetto.
QUEUE significa far passare il pacchetto nello userspace (se è supportato dal kernel).
RETURN significa fermare l'attraversamento di questa catena e ricominciare alla prossima regola nella catena precedente (in chiamata).
target estesi:
LOG attiva il kernel logging.
REJECT ritorna un pacchetto di errore e lascia cadere il pacchetto.
SNAT altera l'indirizzo di partenza del pacchetto, ed è usato solo nella catena POSTROUTING. (solo per la tabella nat)
--to-source ipaddr[-ipaddr][:port-port]
MASQUERADE è equivalente a SNAT, ma solo per le connessioni con IP dinamico (dialup). (solo per la tabella nat)
--to-ports port[-port]
DNAT modifica l'indirizzo di destinazione del pacchetto ed è usato nelle catene PREROUTING ed OUTPUT ed in quelle definite dall'utente che vengono chiamate solo da quelle catene (PREROUTING ed OUTPUT). (solo per la tabella nat)
--to-destination ipaddr[-ipaddr][:port-port]
REDIRECT modifica l'indirizzo IP della destinazione per inviare il pacchetto alla macchina stessa.
--to-ports port[-port]
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
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).
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/
.
[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:
ip rule add from 192.168.1.2 lookup 1
ip rule add from 10.0.0.2 lookup 2
ip route add to default via 10.0.0.1 metric 0
ip route add to default via 192.168.1.1 metric 1
ip route add table 1 to 192.168.1.0/24 via eth0
ip route add table 1 to 10.0.0.2/24 via eth1
ip route add table 1 to default via 192.168.1.1
ip route add table 2 to 192.168.1.0/24 via eth0
ip route add table 2 to 10.0.0.2/24 via eth1
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
CVS, gio gen 18 11:52:32 UTC 2007osamu#at#debian.org
mc0315#at#mclink.it