Indice
Suggerimento | |
---|---|
Per una guida moderna sull'uso della rete specifica per Debian, leggere The Debian Administrator's Handbook — Configuring the Network. |
In questa sezione viene descritta in breve l'infrastruttura base di rete in un sistema Debian moderno.
Tabella 5.1. Elenco degli strumenti di configurazione della rete
pacchetto | popcon | dimensione | tipo | descrizione |
---|---|---|---|---|
network-manager
|
V:392, I:459 | 15542 | config::NM | NetworkManager (demone): gestisce la rete automaticamente |
network-manager-gnome
|
V:121, I:369 | 5583 | config::NM | NetworkManager (frontend GNOME) |
netplan.io
|
V:1, I:5 | 319 | config::NM+networkd | Netplan (generatore): interfaccia unificata, dichiarativa ai backend NetworkManager e systemd-networkd |
ifupdown
|
V:608, I:979 | 199 | config::ifupdown | strumento standard per attivare e disattivare la rete (specifico di Debian) |
isc-dhcp-client
|
V:217, I:981 | 2875 | config::low-level | client DHCP |
pppoeconf
|
V:0, I:5 | 186 | config::helper | strumento di aiuto di configurazione per la connessione PPPoE |
wpasupplicant
|
V:353, I:513 | 3862 | config::helper | supporto client per WPA e WPA2 (IEEE 802.11i) |
wpagui
|
V:0, I:1 | 774 | config::helper | client GUI Qt per WPA supplicant |
wireless-tools
|
V:179, I:244 | 292 | config::helper | strumenti per manipolare le estensioni wireless per Linux |
iw
|
V:34, I:475 | 302 | config::helper | strumento per configurare dispositivi wireless per Linux |
iproute2
|
V:736, I:972 | 3606 | config::iproute2 | iproute2, IPv6 e altra configurazione di
rete avanzata: ip (8), tc (8), ecc. |
iptables
|
V:319, I:718 | 2414 | config::Netfilter | strumenti amministrativi per filtraggio di pacchetti di rete e NAT (Netfilter) |
nftables
|
V:106, I:701 | 182 | config::Netfilter | strumenti amministrativi per filtraggio di pacchetti di rete e NAT (Netfilter) (successore di {ip,ip6,arp,eb}tables) |
iputils-ping
|
V:194, I:997 | 122 | test | testa la raggiungibilità di rete di un host remoto con nome host o indirizzo IP (iproute2) |
iputils-arping
|
V:3, I:36 | 50 | test | testa la raggiungibilità di rete di un host remoto specificato con il suo indirizzo ARP |
iputils-tracepath
|
V:2, I:30 | 47 | test | traccia il percorso di rete verso un host remoto |
ethtool
|
V:95, I:267 | 739 | test | mostra e modifica le impostazioni dei device Ethernet |
mtr-tiny
|
V:5, I:46 | 156 | test::low-level | traccia il percorso di rete verso un host remoto (curses) |
mtr
|
V:4, I:41 | 209 | test::low-level | traccia il percorso di rete verso un host remoto (curses e GTK) |
gnome-nettool
|
V:0, I:17 | 2492 | test::low-level | strumenti per operazioni comuni sulle informazioni di rete (GNOME) |
nmap
|
V:25, I:199 | 4498 | test::low-level | strumento per mappatura della rete / esplorazione delle porte (Nmap, console) |
tcpdump
|
V:17, I:175 | 1340 | test::low-level | analizzatore del traffico di rete (Tcpdump, console) |
wireshark
|
I:45 | 10417 | test::low-level | analizzatore del traffico di rete (Wireshark, GTK) |
tshark
|
V:2, I:25 | 400 | test::low-level | analizzatore del traffico di rete (console) |
tcptrace
|
V:0, I:2 | 401 | test::low-level | produce un riassunto delle connessioni dall'output di
tcpdump |
snort
|
V:0, I:0 | 2203 | test::low-level | sistema flessibile di rilevazione delle intrusioni di rete (Snort) |
ntopng
|
V:0, I:1 | 15904 | test::low-level | mostra l'uso della rete nel browser web |
dnsutils
|
V:16, I:280 | 276 | test::low-level | client di rete forniti con BIND:
nslookup (8), nsupdate (8),
dig |
dlint
|
V:0, I:3 | 53 | test::low-level | controlla l'informazione DNS di zona usando interrogazioni del server di nomi |
dnstracer
|
V:0, I:1 | 59 | test::low-level | traccia una catena di server DNS fino alla sorgente |
La risoluzione del nome host è attualmente supportata dal meccanismo NSS (Name Service Switch). Il flusso di eventi nella risoluzione è il seguente.
Il file "/etc/nsswitch.conf
" con blocchi tipo
"hosts: files dns
" detta l'ordine di risoluzione dei nomi
di host. (Questo rimpiazza la vecchia funzionalità del blocco
"order
in "/etc/host.conf
".)
Il metodo files
è invocato per primo. Se il nome host
viene trovato nel file "/etc/hosts
", vengono restituiti
tutti gli indirizzi validi per esso e il programma termina. (Il file
"/etc/host.conf
" contiene "multi on
".)
Viene invocato il metodo dns
. Se il nome host viene
trovato dalla interrogazione al DNS (Internet Domain Name System,
sistema dei nomi di dominio Internet), identificato dal file
"/etc/resolv.conf
", vengono restituiti tutti gli
indirizzi validi per esso e il programma termina.
Una postazione di lavoro tipica può essere installata con il nome host
impostato, ad esempio, come "host_name" e il suo nome
di dominio opzionale impostato come stringa vuota. Poi,
/etc/hosts
" avrà l'aspetto seguente.
127.0.0.1 localhost
127.0.1.1 host_name
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Ogni riga inizia con un indirizzo IP e prosegue con l'hostname associato.
L'indirizzo IP 127.0.1.1
nella seconda riga dell'esempio
può non essere presente in altri sistemi simil-Unix. L'Installatore Debian crea questa voce per i
sistemi senza un indirizzo IP permanente come soluzione per alcuni software
(es., GNOME) come documentato nel bug#719621.
Il nome_host corrisponde al nome host definito in
"/etc/hostname
" (vedere Sezione 3.7.1, «Il nome host»).
Per un sistema con un indirizzo IP permanente, si dovrebbe usare qui tale
indirizzo invece di 127.0.1.1
.
Per un sistema con un indirizzo IP permanente e un FQDN (Fully Qualified Domain Name, nome di dominio pienamente qualificato) fornito dal DNS (Domain Name System), dovrebbe essere usato qui il canonico nome_host.nome_dominio, invece del semplice nome_host.
Il file "/etc/resolv.conf
" è un file statico se non è
installato il pacchetto resolvconf
. Se invece
quest'ultimo è installato il file è un collegamento simbolico. In ogni caso
contiene le informazioni che inizializzano le routine del risolutore. Se il
DNS si trova all'IP="192.168.11.1
", il file conterrà la
riga seguente.
nameserver 192.168.11.1
Il pacchetto resolvconf
rendo questo file
"/etc/resolv.conf
" un collegamento simbolico e gestisce
il suo contenuto con script eseguiti in automatico.
Per le postazioni PC nei tipici ambienti LAN ad hoc, il nome host può essere
risolto usando il Multicast DNS (mDNS)
in aggiunta ai metodi di base con file
e
dns
.
Avahi fornisce un'infrastruttura per il Multicast DNS Service Discovery in Debian.
È equivalente a Apple Bonjour / Apple Rendezvous.
Il pacchetto plugin libnss-mdns
fornisce la risoluzione
dei nomi host attraverso mDNS per la funzionalità GNU Name Service Switch
(NSS) della libreria C GNU (glibc).
Il file "/etc/nsswitch.conf
" dovrebbe contenere una
sezione simile a "hosts: files mdns4_minimal [NOTFOUND=return]
dns
" (vedere
/usr/share/doc/libnss-mdns/README.Debian
per altre
configurazioni).
I nomi host che terminano con lo pseudo-dominio di livello più alto
".local" vengono risolti inviando un messaggio
di interrogazione mDNS in un pacchetto UDP multicast usando l'indirizzo IPv4
"224.0.0.251
" o l'indirizzo IPv6
"FF02::FB
".
Nota | |
---|---|
L'espansione dei gTLD (generic Top-Level Domain, domini di più alto livello generici) nel Domain Name System (Sistema di nomi di dominio) è in corso d'opera. Fare attenzione a possibili collisioni di nomi quando si sceglie un nome di dominio usato solamente all'interno di una LAN. |
Nota | |
---|---|
L'uso di pacchetti come |
systemd usa "nomi di interfacce di rete
prevedibili (Predictable Network Interface Name)", come
"enp0s25
".
Ecco un ripasso degli intervalli di indirizzi IPv4 a 32 bit in ciascuna classe, riservati per l'uso in reti locali (LAN) dalla rfc1918. È garantito che questi indirizzi non creino conflitti con altri indirizzi della vera e propria rete Internet.
Nota | |
---|---|
Indirizzi IP scritti con i due punti sono indirizzi IPv6, es. " |
Tabella 5.2. Elenco di intervalli di indirizzi di rete
Classe | indirizzi di rete | maschera di rete | maschera rete /bit | numero di sottoreti |
---|---|---|---|---|
A | 10.x.x.x | 255.0.0.0 | /8 | 1 |
B | 172.16.x.x — 172.31.x.x | 255.255.0.0 | /16 | 16 |
C | 192.168.0.x — 192.168.255.x | 255.255.255.0 | /24 | 256 |
Nota | |
---|---|
Se uno di questi indirizzi viene assegnato ad un host, allora l'host non deve accedere ad Internet direttamente, ma deve accedervi attraverso un gateway che agisca da proxy per i singoli servizi o che, in alternativa, faccia da NAT (Network Address Translation, traduzione degli indirizzi di rete). I router a banda larga di solito agiscono da NAT per l'ambiente LAN dell'utente finale. |
Nonostante la maggior parte dei dispositivi hardware sia supportata dal sistema Debian, ci sono alcuni dispositivi di rete che necessitano, per essere supportati, firmware non libero secondo la definizione nelle DFSG. Vedere Sezione 9.10.5, «Driver per hardware e firmware».
Le interfacce di rete sono tipicamente inizializzate in
"networking.service
" per l'interfaccia
lo
e "NetworkManager.service
" per le
altre interfacce nei moderni sistemi desktop Debian che usano
systemd
.
Debian può gestire la connessione di rete attraverso software per demoni di gestione come NetworkManager (NM) (network-manager e pacchetti associati).
Questi sono forniti con propri programmi per l'interfaccia utente con GUI o a riga di comando.
Sono forniti con un proprio demone come sistema di backend.
Permettono al proprio sistema di connettersi facilmente ad Internet.
Permettono una facile gestione della configurazione delle reti cablate e wireless.
Permettono di configurare la rete in modo indipendente dal datato pacchetto
ifupdown
.
Nota | |
---|---|
Non usare questi strumenti di configurazione automatica della rete per server. Sono pensati principalmente per utenti con desktop mobili su portatili. |
Questi strumenti moderni di configurazione della rete devono essere
configurati in modo corretto per evitare conflitti con il datato pacchetto
ifupdown
e con il suo file di configurazione
"/etc/network/interfaces
".
La documentazione ufficiale per NM in Debian è fornita in
"/usr/share/doc/network-manager/README.Debian
".
Fondamentalmente, la configurazione di rete per il desktop viene fatta nel modo seguente.
Aggiungere l'utente desktop, ad esempio pippo
, al gruppo
"netdev
" con il comando seguente. (In alternativa farlo
automaticamente attraverso D-bus nei moderni
ambienti desktop come GNOME e KDE).
$ sudo usermod -a -G foo netdev
Mantenere la configurazione di "/etc/network/interfaces
"
semplice come la seguente.
auto lo iface lo inet loopback
Riavviare NM con il comando seguente.
$ sudo systemctl restart network-manager
Configurare la propria rete attraverso l'interfaccia grafica.
Nota | |
---|---|
Solo le interfacce che non sono elencate
in " |
Suggerimento | |
---|---|
Se si desiderano estendere le capacità di configurazione della rete di NM,
cercare i moduli plugin appropriati e i pacchetti supplementari, quali
|
Con systemd, la rete può essere configurata
invece in /etc/systemd/network/
. Vedere
systemd-resolved
(8), resolved.conf
(5)
e systemd-networkd
(8).
Ciò permette la configurazione moderna della rete senza GUI.
Una configurazione di client DHCP può essere impostata creando
"/etc/systemd/network/dhcp.network
". Es.:
[Match] Name=en* [Network] DHCP=yes
Una configurazione di rete statica può essere impostata creando
"/etc/systemd/network/static.network
". Es.:
[Match] Name=en* [Network] Address=192.168.0.15/24 Gateway=192.168.0.1
La configurazione moderna della rete per il cloud può usare i pacchetti
cloud-init
e netplan.io
(vedere Sezione 3.7.4, «Inizializzazione del sistema cloud»).
Il pacchetto netplan.io
supporta
systemd-networkd
e NetworkManager
come
suoi backend di configurazione della rete, e permette la configurazione
dichiarativa della rete usando dati YAML. Quando
si cambia YAML:
eseguire il comando "netplan generate
" per generare tutta
la necessaria configurazione del backend da YAML.
Eseguire il comando "netplan apply
" per applicare la
configurazione generata ai backend.
Vedere la "documentazione di
Netplan", netplan
(5),
netplan-generate
(8) e
netplan-apply
(8).
Vedere anche la "documentazione di
Cloud-init" (in particolare relativamente alle "fonti di configurazione" e "Netplan Passthrough") per come
cloud-init
può integrare la configurazione di
netplan.io
con fonti alternative di dati.
Una configurazione di client DHCP può essere impostata creando un file di
sorgente di dati "/etc/netplan/50-dhcp.yaml
":
network: version: 2 ethernets: all-en: match: name: "en*" dhcp4: true dhcp6: true
Una configurazione di rete statica può essere impostata creando un file di
sorgente di dati "/etc/netplan/50-static.yaml
":
network: version: 2 ethernets: eth0: addresses: - 192.168.0.15/24 routes: - to: default via: 192.168.0.1
Per la configurazione di rete a basso livello in Linux usare i programmi
iproute2 (ip
(8), …) .
I comandi Iproute2 offrono funzionalità complete di configurazione della rete a basso livello. Quella che segue è una tabella di traduzione dai comandi obsoleti di net-tools ai nuovi comandi iproute2 ecc.
Tabella 5.3. Tabella di traduzione dai comandi obsoleti net-tools
ai
nuovi comandi iproute2
net-tools obsoleti | nuovi iproute2, ecc. | manipolazione |
---|---|---|
ifconfig (8) |
ip addr |
indirizzo di protocollo (IP o IPv6) di un device |
route (8) |
ip route |
voce nella tabella di instradamento |
arp (8) |
ip neigh |
voce nella cache ARP o NDISC |
ipmaddr |
ip maddr |
indirizzo multicast |
iptunnel |
ip tunnel |
tunnel over IP |
nameif (8) |
ifrename (8) |
nomina le interfacce di rete in base all'indirizzo MAC |
mii-tool (8) |
ethtool (8) |
impostazioni del device Ethernet |
Vedere ip
(8) e Linux Advanced Routing &
Traffic Control.
Si possono usare i comandi a basso livello per la rete seguenti in modo sicuro dato che non cambiano la configurazione della rete.
Tabella 5.4. Elenco di comandi di rete a basso livello
comando | descrizione |
---|---|
ip addr show |
mostra lo stato del collegamento e l'indirizzo delle interfacce attive |
route -n |
mostra tutta la tabella di instradamento in indirizzi numerici |
ip route show |
mostra tutta la tabella di instradamento in indirizzi numerici |
arp |
mostra l'attuale contenuto delle tabelle cache ARP |
ip neigh |
mostra l'attuale contenuto delle tabelle cache ARP |
plog |
mostra il registro del demone ppp |
ping yahoo.com |
controlla la connessione Internet verso "yahoo.com " |
whois yahoo.com |
controlla chi ha registrato "yahoo.com " nel database dei
domini |
traceroute yahoo.com |
traccia la connessione Internet verso "yahoo.com " |
tracepath yahoo.com |
traccia la connessione Internet verso "yahoo.com " |
mtr yahoo.com |
traccia la connessione Internet verso "yahoo.com "
(ripetutamente) |
dig [@dns-server.com] esempio.com [{a|mx|any}] |
controlla i record DNS di
"esempio.com " con "dns-server.com "
alla ricerca di un record "a ", "mx " o
"any " |
iptables -L -n |
controlla il filtraggio dei pacchetti |
netstat -a |
trova tutte le porte aperte |
netstat -l --inet |
trova le porte in ascolto |
netstat -ln --tcp |
trova le porte (numeriche) TCP in ascolto |
dlint esempio.com |
controlla le informazioni DNS di zona per "esempio.com " |
Suggerimento | |
---|---|
Alcuni di questi strumenti di configurazione di basso livello della rete
sono contenuti in " |
L'ottimizzazione generale della rete va oltre gli scopi che questo documento si prefigge. Vengono trattati solo quegli argomenti che interessano le connessioni dei computer personali.
Tabella 5.5. Elenco degli strumenti di ottimizzazione della rete
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
iftop
|
V:7, I:100 | 93 | mostra informazioni sull'uso della banda su di un'interfaccia di rete |
iperf
|
V:3, I:43 | 360 | strumento di misurazione della banda del protocollo Internet |
ifstat
|
V:0, I:7 | 60 | Monitoraggio delle STATistiche sulle InterFacce |
bmon
|
V:1, I:18 | 144 | strumento portabile per monitoraggio della banda e stime della velocità |
ethstatus
|
V:0, I:3 | 40 | script che misura velocemente la quantità di dati passanti per un device di rete |
bing
|
V:0, I:0 | 80 | tester empirico stocastico della banda |
bwm-ng
|
V:1, I:13 | 95 | strumento piccolo e semplice basato sulla console per il monitoraggio della banda |
ethstats
|
V:0, I:0 | 23 | strumento basato su console per il monitoraggio delle statistiche Ethernet |
ipfm
|
V:0, I:0 | 82 | strumento di analisi della banda |
NM di solito imposta automaticamente la Maximum Transmission Unit (MTU) ottimale.
In alcune occasioni si può volere impostare l'MTU manualmente dopo
esperimenti con ping
(8) con l'opzione "-M
do
" per inviare un pacchetto ICMP con varie dimensioni di
pacchetti di dati. MTU è la dimensione massima di pacchetti dati con
successo senza frammentazione IP più 28 byte per IPv4 e 48 byte per
IPv6. Per esempio, quanto segue scopre che l'MTU per la connessione IPv4 è
1460 e l'MTU per la connessione IPv6 è 1500.
$ ping -4 -c 1 -s $((1500-28)) -M do www.debian.org PING (149.20.4.15) 1472(1500) bytes of data. ping: local error: message too long, mtu=1460 --- ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms $ ping -4 -c 1 -s $((1460-28)) -M do www.debian.org PING (130.89.148.77) 1432(1460) bytes of data. 1440 bytes from klecker-misc.debian.org (130.89.148.77): icmp_seq=1 ttl=50 time=325 ms --- ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 325.318/325.318/325.318/0.000 ms $ ping -6 -c 1 -s $((1500-48)) -M do www.debian.org PING www.debian.org(mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e)) 1452 data bytes 1460 bytes from mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e): icmp_seq=1 ttl=47 time=191 ms --- www.debian.org ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 191.332/191.332/191.332/0.000 ms
Questo processo si chiama "Path MTU
(PMTU) discovery (RFC1191) e il
comado tracepath
(8) può automatizzarlo.
Tabella 5.6. Linee guida di base per il valore di MTU ottimale
ambiente di rete | MTU | motivo |
---|---|---|
collegamento dial-up (IP: PPP) | 576 | standard |
collegamento Ethernet (IP: DHCP o statico) | 1500 | standard e predefinito |
In aggiunta a queste linee guida di base si dovrebbe sapere quanto segue.
Qualsiasi uso di metodi di tunnelling (VPN, ecc.) può ridurre ulteriormente l'MTU ottimale per il loro carico.
Il valore di MTU non dovrebbe superare il valore di PMTU determinato sperimentalmente.
A patto di seguire le indicazioni precedenti un valore maggiore di MTU è meglio.
Il valore di MSS (Maximum Segment Size, dimensione massima di segmento)MSS è usato come misura alternativa della dimensione dei pacchetti. Le relazioni tra MSS e MTU sono le seguenti.
MSS = MTU - 40 per IPv4
MSS = MTU - 60 per IPv6
Nota | |
---|---|
L'ottimizzazione basata su |
Il flusso TCP può essere massimizzato regolando i parametri di dimensione del buffer TCP come descritto in "TCP tuning" per le moderne WAN a larga banda e alta latenza. Per adesso, le attuali impostazioni predefinite di Debian funzionano bene persino per la mia LAN connessa con un servizio FTTP veloce a 1G bps.
Netfilter fornisce un'infrastruttura per firewall con stati e traduzione di indirizzi di rete (NAT) con moduli del kernel Linux (vedere Sezione 3.9, «L'inizializzazione dei moduli del kernel»).
Tabella 5.7. Elenco di strumenti per firewall
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
nftables
|
V:106, I:701 | 182 | strumenti amministrativi per filtraggio di pacchetti di rete e NAT (Netfilter) (successore di {ip,ip6,arp,eb}tables) |
iptables
|
V:319, I:718 | 2414 | strumenti di amministrazione per netfilter
(iptables (8) per IPv4, ip6tables (8)
per IPv6) |
arptables
|
V:0, I:1 | 100 | strumenti di amministrazione per netfilter
(arptables (8) per ARP) |
ebtables
|
V:14, I:29 | 276 | strumenti di amministrazione per netfilter
(ebtables (8) per bridge Ethernet) |
iptstate
|
V:0, I:2 | 119 | monitora continuamente lo stato di netfilter (in modo simile a
top (1)) |
ufw
|
V:55, I:77 | 859 | Uncomplicated Firewall (UFW) è un programma per gestire un firewall netfilter |
gufw
|
V:5, I:10 | 3660 | interfaccia utente grafica per Uncomplicated Firewall (UFW) |
firewalld
|
V:11, I:16 | 2613 | firewalld è un programma per firewall gestito dinamicamente con supporto per le zone di rete |
firewall-config
|
V:0, I:3 | 1163 | interfaccia utente grafica per firewalld |
shorewall-init
|
V:0, I:0 | 88 | inizializzazione di Shoreline Firewall |
shorewall
|
V:3, I:8 | 3090 | generatore di file di configurazione per Shoreline Firewall, netfilter |
shorewall-lite
|
V:0, I:0 | 71 | generatore di file di configurazione per Shoreline Firewall, netfilter (versione leggera) |
shorewall6
|
V:0, I:1 | 1334 | generatore di file di configurazione per Shoreline Firewall, netfilter (versione IPv6) |
shorewall6-lite
|
V:0, I:0 | 71 | generatore di file di configurazione per Shoreline Firewall, netfilter (versione IPv6 leggera) |
Il principale programma in spazio utente di netfilter è iptables
(8). Si può
configurare manualmente netfilter in modo
interattivo dalla shell, salvare il suo stato con
iptables-save
(8) e ripristinarlo attraverso uno script di
init con iptables-restore
(8) al riavvio del sistema.
Script di aiuto per la configurazione come shorewall facilitano questo processo.
Vedere la documentazione in Netfilter
Documentation (o in
"/usr/share/doc/iptables/html/
").
Suggerimento | |
---|---|
Anche se questi documenti sono stati scritti per Linux 2.4, sia il comando |