Network configuration (Italiano)
Questo articolo descrive come configurare le connessioni di rete su strato OSI 3 e versioni successive. Le specifiche del supporto sono gestite nelle sottopagine /Ethernet e /Wireless.
Controllare la connessione
Per risolvere i problemi relativi a una connessione di rete, attenersi alle seguenti condizioni e assicurarsi di soddisfarle:
- La vostra interfaccia di rete è elencata e abilitata. Altrimenti, controllate il driver del dispositivo – vedasi /Ethernet#Driver del dispositivo o /Wireless#Driver del dispositivo.
- Siete connessi alla rete. Il cavo è collegato o siete connessi alla LAN wireless.
- La vostra interfaccia di rete ha un indirizzo IP.
- La vostra tabella di instradamento è configurata correttamente.
- Potete effettuare il ping di un indirizzo IP locale (es. il vostro gateway predefinito).
- Potete effettuare il ping di un indirizzo IP pubblico (es.
9.9.9.9
, che è un server DNS appartenente alla Fondazione Quad9 ed è un indirizzo conveniente con cui eseguire prove). - Controllate se potete risolvere i nomi di dominio (es.
archlinux.org
).
Ping
ping viene usata per verificare di poter raggiungere un host.
$ ping www.example.com
PING www.example.com (93.184.216.34): 56(84) data bytes 64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.632 ms 64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.726 ms 64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=10.683 ms ...
Per ogni risposta ricevuta, l'utilità ping scriverà una riga come quella sopra finchè non la interrompete (Ctrl+c
) in modo interattivo. Per maggiori informazioni vedere il manuale . Si noti che i computer possono essere configurati per non rispondere alle richieste echo ICMP.
Se vi viene mostrato un messaggio di errore (vedasi indicazioni di errore di ping) oppure non ricevete risposta, ciò potrebbe essere correlato ad una configurazione incompleta, ma anche al vostro gateway predefinito o al vostro Provider di Servizi Internet (ISP). Potete eseguire un traceroute per diagnosticare ulteriormente il percorso verso l'host.
Gestione della rete
Per configurare una connessione di rete, seguire i passaggi seguenti:
- Assicuratevi che la vostra interfaccia di rete sia elencata e abilitata.
- Connettetevi alla rete. Collegate il cavo Ethernet o connettetevi alla LAN wireless.
- Configurate la vostra connessione di rete:
- indirizzo IP statico
- indirizzo IP dinamico: utilizzate DHCP
net-tools
Arch Linux ha deprecato in favore di .
Comando deprecato | comandi di rimpiazzo |
---|---|
arp | ip neighbor |
ifconfig | ip address, ip link |
netstat | ss |
route | ip route |
Per una panoramica più completa, vedere Comandi di Linux deprecati per la gestione di una rete e loro sostituzioni.
iproute2
iproute2 è una dipendenza del metacontenuto base e fornisce l'interfaccia a riga di comando ip(8), utilizzata per gestire interfacce di rete, indirizzi IP e la tabella di instradamento. Tenete presente che la configurazione eseguita utilizzando andrà perduta dopo un riavvio. Per una configurazione persistente, potete utilizzare un gestore di rete o automatizzare i comandi ip utilizzando script e unità di systemd. Si noti inoltre che i comandi possono essere generalmente abbreviati, per chiarezza sono comunque scritti per intero in questo articolo.
Interfacce di rete
Per impostazione predefinita udev assegna dei nomi ai vostri controller dell'interfaccia di rete utilizzando Nomi dell'Interfaccia di Rete Prevedibili, che antepone i nomi delle interfacce con (cablata/Ethernet), (wireless/WLAN), o (WWAN). Vedasi .
Elencare le interfacce di rete
I nomi delle interfacce sia cablate che wireless possono essere trovati tramite o . Si noti che lo
è l'interfaccia virtuale di loopback e non viene utilizzata per effettuare connessioni di rete.
I nomi dei dispositivi wireless possono essere recuperati anche utilizzando iw dev
. Vedere anche /Wireless#Ottenere il nome dell'interfaccia.
Se la vostra interfaccia di rete non è elencata, assicuratevi che il driver del dispositivo sia stato caricato correttamente. Vedasi /Ethernet#Driver del dispositivo o /Wireless#Driver del dispositivo.
Abilitare e disabilitare le interfacce di rete
Le interfacce di rete possono essere abilitate o disabilitate mediante , vedere .
Per controllare lo stato dell'interfaccia :
La parola in è l'effettiva indicazione che l'interfaccia è attiva, non la successiva .
Indirizzo IP statico o dinamico?
Se utilizzate un Wi-FI o un router, ad esempio, a casa, starete molto probabilmente utilizzando un indirizzo IP dinamico. L'indirizzo IP viene assegnato dal Wi-Fi o dal router ed è ciò che la configurazione del vostro computer dovrebbe utilizzare. Oppure, se siete a casa e il vostro computer è connesso al modem del vostro ISP, ad esempio un modem via cavo, anch'esso utilizzerà un indirizzo IP dinamico. Gli indirizzi IP dinamici possono cambiare ogni volta che accendete il vostro computer. In un ambiente di lavoro, potreste avere un indirizzo IP statico o un indirizzo IP dinamico. A casa, potete configurare il vostro router in modo che assegni sempre al vostro computer lo stesso indirizzo IP, dunque starete utilizzando un indirizzo IP statico. Quando state utilizzando un indirizzo IP dinamico, dovrete utilizzare DHCP, così esso potrà configurare la vostra interfaccia di rete con l'indirizzo IP corretto. Oltre a configurare il vostro ìndirizzo IP, DHCP può anche configurare il vostro instradamento (come arrivare da dove ci si trova a un qualsiasi punto della rete si stia andando) così come i vostri name servers, che convertono il nome host, ad esempio, example.com, nel suo indirizzo IP, quel numero con dei punti inseriti.
Indirizzo IP statico
Un indirizzo IP statico può essere configurato con la maggior parte dei gestori di rete predefiniti e anche con dhcpcd.
Per configurare manualmente un indirizzo IP statico, aggiungete un indirizzo IP come descritto in #Indirizzi IP, impostate la vostra Tabella di instradamento e configurate i vostri server DNS.
Indirizzi IP
Gli indirizzi IP sono gestiti mediante .
Elencare gli indirizzi IP:
$ ip address show
Aggiungere un indirizzo IP a una interfaccia:
# ip address add indirizzo/lunghezza_prefisso broadcast + dev interfaccia
- Notate che:
- l'indirizzo è dato in notazione CIDR per fornire anche una maschera della sottorete
+
è un simbolo speciale che, mediante , deriva l'indirizzo di trasmissione dall'indirizzo IP e dalla maschera della sottorete
Eliminare un indirizzo IP da un'interfaccia:
# ip address del indirizzo/lunghezza_prefisso dev interfaccia
Eliminare tutti gli indirizzi che corrispondono a un criterio, ad es. di una specifica interfaccia:
# ip address flush dev interfaccia
Tabella di instradamento
La tabella di instradamento è utilizzata per determinare se potete raggiungere direttamente un indirizzo IP o quale gateway (router) dovreste usare. Se nessun'altro perscorso corrisponde all'indirizzo IP, viene utilizzato il gateway predefinito.
La tabella di instradamento è gestita utilizzando .
PREFISSO è una notazione CIDR o per il gateway predefinito.
Elencare percorsi IPv4:
$ ip route show
Elencare percorsi IPv6:
$ ip -6 route
Aggiungere un percorso:
# ip route add PREFISSO via indirizzo dev interfaccia
Cancellare un percorso:
# ip route del PREFISSO via indirizzo dev interfaccia
DHCP
Un server Protocollo Dinamico di Configurazione Host (DHCP) fornisce ai client un indirizzo IP dinamico, la maschera della sottorete, l'indirizzo IP del gateway predefinito e, facoltativamente, anche i name server del DNS.
Per utilizzare DHCP è necessario un server DHCP nella vostra rete e un client DHCP:
Client | Contenuto | Archiso (Italiano) | Nota | Unità di systemd |
---|---|---|---|---|
dhcpcd | DHCP, DHCPv6, ZeroConf, IP statico | , | ||
ISC dhclient | dhclient | DHCP, DHCPv6, BOOTP, IP statico |
Server
Server | Contenuto | IPv4 | IPv6 | GUI | Interfacce | Backend(s) di memorizzazione | Nota |
---|---|---|---|---|---|---|---|
dhcpd | Glass-ISC-DHCP | ? | File | ||||
dnsmasq | No | ? | File | anche DNS, PXE e TFTP | |||
Kea | Stork | REST, RADIUS e NETCONF | File, MySQL, PostgreSQL e Cassandra | anche DNS |
Gestori di rete
Un gestore di rete consente di gestire le impostazioni della connessione di rete in dei cosiddetti profili di rete per facilitare il cambio di rete.
Gestore di rete | GUI | Archiso | Strumenti CLI | Supporto per PPP (es. modem 3G) | Client DHCP | Unità di systemd |
---|---|---|---|---|---|---|
ConnMan | No | connmanctl(1) | (con ) | interno | ||
netctl | No | netctl(1), wifi-menu | dhcpcd o dhclient | , | ||
NetworkManager | No | , | interno o dhclient | |||
systemd-networkd | No | (base) | No | interno | , |
Set the hostname
A hostname is a unique name created to identify a machine on a network, configured in /etc/hostname
—see and for details. The file can contain the system's domain name, if any. To set the hostname, edit /etc/hostname
to include a single line with :
Alternatively, using hostnamectl(1):
# hostnamectl set-hostname myhostname
To temporarily set the hostname (until reboot), use from :
# hostname myhostname
To set the "pretty" hostname and other machine metadata, see .
Local hostname resolution
(an NSS module provided by systemd) provides local hostname resolution without having to edit . It is enabled by default.
Some software may however still read directly, see for examples. To prevent them from potentially breaking, hanging or otherwise delaying operation, make sure they can resolve the local hostname and by configuring the hosts(5) file:
For a system with a permanent IP address, replace 127.0.1.1
with that permanent IP address. For a system with a fully qualified domain name, insert the fully qualified domain name before the hostname (see the following link for the reasoning). For example:
As a result the system resolves to both entries:
Local network hostname resolution
To make your machine accessible in your LAN via its hostname you can:
- edit the file for every device in your LAN, see hosts(5)
- set up a DNS server to resolve your hostname and make the LAN devices use it (e.g. via #DHCP)
- or the easy way: use a Zero-configuration networking service:
- Hostname resolution via Microsoft's NetBIOS. Provided by Samba on Linux. It only requires the . Computers running Windows, macOS, or Linux with running, will be able to find your machine.
- Hostname resolution via mDNS. Provided by either with Avahi (see Avahi#Hostname resolution for setup details) or systemd-resolved. Computers running macOS, or Linux with Avahi or systemd-resolved running, will be able to find your machine. The older Win32 API does not support mDNS, which may prevent some older Windows applications from accessing your device.
Suggerimenti e trucchetti
Cambiare il nome dell'interfaccia
Potete modificare il nome del dispositivo definendo il nome manualmente con una regola udev. Per esempio:
Queste regole verranno applicate automaticamente all'avvio.
Un paio di cose da notare:
- Per ottenere l'indirizzo MAC di ogni scheda, utilizzare questo comando:
cat /sys/class/net/nome_del_dispositivo/address
- Assicuratevi di utilizzare i valori esadecimali in carattere minuscolo nelle vostre regole udev. Non gli piace il maiuscolo.
Se la scheda di rete ha un MAC dinamico, potete utilizzare , ad esempio:
Per ottenere il di tutti i dispositivi attualmente connessi, osservate dove conducono i collegamenti simbolici in . Per esempio:
file /sys/class/net/*
/sys/class/net/enp0s20f0u4u1: symbolic link to ../../devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4.1/2-4.1:1.0/net/enp0s20f0u4u1 /sys/class/net/enp0s31f6: symbolic link to ../../devices/pci0000:00/0000:00:1f.6/net/enp0s31f6 /sys/class/net/lo: symbolic link to ../../devices/virtual/net/lo /sys/class/net/wlp4s0: symbolic link to ../../devices/pci0000:00/0000:00:1c.6/0000:04:00.0/net/wlp4s0
Il percorso del dispositivo dovrebbe corrispondere sia al nuovo che al vecchio nome del dispositivo, poiché la regola potrebbe venir eseguita più di una volta all'avvio. Ad esempio, nella seconda regola, sarebbe sbagliato, poiché smetterebbe di corrispondere una volta che il nome dovesse cambiare in . Solo la regola predefinita del sistema si attiverà la seconda volta, causando il ritorno del nome a, ad es., .
Se state utilizzando un dispositivo di rete USB (ad es. il tethering di un telefono Android) che ha un indirizzo MAC dinamico e volete essere in grado di utilizzare delle porte USB diverse, potreste invece utilizzare una regola che corrisponda a seconda del fornitore e dell'ID di un prodotto:
Per provare le vostre regole esse possono essere verificare direttamente dallo spazio utente, ad es. con . Ricordatevi di disabilitare prima l'interfaccia che state cercando di rinominare (es. ip link set enp1s0 down
).
Ritornare ai nomi dell'interfaccia tradizionali
Se preferiste mantenere i nomi dell'interfaccia tradizionali come eth0, , i Nomi dell'Interfaccia di Rete Prevedibili possono essere disabilitati mascherando la regola udev:
# ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
In alternativa, aggiungere ai parametri del kernel.
Impostare l'MTU del dispositivo e la lunghezza della coda
Potete modificare l'MTU del dispositivo e la lunghezza della coda definendo manualmente con una regola udev. Per esempio:
: l'utilizzo di un valore superiore a 1500 (i cosiddetti jumbo frames) può accelerare notevolmente i trasferimenti di rete. Si noti che tutte le interfacce di rete, inclusi gli switche nella rete locale, devono supportare la stessa MTU per poter utilizzare i jumbo frames. Per PPPoE, l'MTU non deve essere superiore a 1492. Potete anche impostare l'MTU tramite .
tx_queue_len
: valore ridotto per dispositivi più lenti con una latenza elevata come collegamenti modem e ISDN. Un valore alto è consigliato per server connessi tramite le connessioni Internet ad alta velocità che eseguono grandi trasferimenti di dati.
Incollaggio o LAG
Vedere netctl o systemd-networkd, oppure Incollaggio wireless.
Aliasing dell'indirizzo IP
L'aliasing dell'IP è il processo di aggiunta di più di un indirizzo IP a un'interfaccia di rete. Con ciò, un nodo su una rete può avere più connessioni a una rete, ognuna con uno scopo diverso. È tipicamente utile per l'hosting virtuale di server Web e FTP o la riorganizzazione dei server senza dover aggiornare altre macchine (questo è particolarmente utile per i server dei nomi).
Esempio
Per impostare manualmente un alias, per alcune NIC, utilizzare per eseguire
# ip addr add 192.168.2.101/24 dev enp2s0 label enp2s0:1
Per rimuovere un certo alias eseguire
# ip addr del 192.168.2.101/24 dev enp2s0:1
I pacchetti destinati a una sottorete utilizzeranno l'alias primario per impostazione predefinita. Se l'IP di destinazione si trova all'interno di una sottorete appartenente a un alias secondario, l'IP di origine verrà impostato rispettivamente. Considerate il caso in cui sia presente più di una NIC, i percorsi predefiniti possono essere elencati con .
Modalità promiscua
L'attivazione della modalità promiscua farà sì che una NIC (wireless) inoltri tutto il traffico ricevuto al sistema operativo per un'ulteriore elaborazione. Questo è l'opposto della "modalità normale", in cui una NIC scarterà i frame che non è destinata a ricevere. Viene spesso utilizzata per la risoluzione dei problemi di rete avanzata e lo sniffing dei pacchetti.
/etc/systemd/system/promiscuous@.service
[Unit] Description=Set %i interface in promiscuous mode After=network.target [Service] Type=oneshot ExecStart=/usr/bin/ip link set dev %i promisc on RemainAfterExit=yes [Install] WantedBy=multi-user.target
Se volete abilitare la modalità promiscua sull'interfaccia , eseguite enable .
Interrogare i socket
ss è un'utilità per esaminare le porte di rete e fa parte del contenuto . Ha una funzionalità simile all'utilità netstat deprecata.
L'utilizzo comune include:
Visualizzare tutti i Socket TCP con i nomi dei servizi:
$ ss -at
Visualizzare tutti i Socket TCP con i numeri di porta:
$ ss -atn
Visualizzare tutti i Socket UDP:
$ ss -au
Per maggiori informazioni, vedere .
Risoluzione dei problemi
Il problema del ridimensionamento window di TCP
I pacchetti TCP contengono un valore "window" nei loro header che indica la quantità di dati che debba restituire l'altro host. Questo valore è rappresentato con solo 16 bit, infatti la dimensione della finestra è al massimo 64KiB. I pacchetti TCP vengono mantenuti in cache per un periodo di tempo (devono essere riordinati), e dato che la memoria è (o era) limitata, uno host potrebbe finirla facilmente.
Nel 1992, man mano che più memoria diveniva disponibile, fu scritta la RFC:1323 per migliorare la situazione: il Ridimensionamento della Finestra. Il valore "window", fornito in tutti i pacchetti, verrà modificato in base ad un Fattore di Ridimensionamento, definito una sola volta proprio all'inizio della connessione. Quel Fattore di Ridimensionamento di 8 bit permette alla finestra di essere fino a 32 volte superiore ai 64KiB iniziali.
Sembrerebbe che alcuni router e firewall difettosi su Internet stiano riscrivendo il Fattore di Ridimensionamento a 0, causando incomprensioni tra gli hosts.
Il kernel di Linux 2.6.17 ha introdotto un nuovo schema di calcolo che genera Fattori di Ridimensionamento più alti, rendendo il disastro di questi router e firewall virtualmente più visibile.
La connessione in questi casi è al massimo molto lenta oppure viene interrotta.
Come diagnosticare il problema?
Prima di tutto chiariamo: questo problema è strano. In alcuni casi, non vi sarà affatto possibile effettuare connessioni TCP (HTTP, FTP, ...), in altri sarete in grado di comunicare con alcuni host (molto pochi).
Quando siete affetti da questo problema, il risultato da dmesg va bene, i log sono puliti e riporta uno status normale... ed effettivamente sembra tutto normale.
Se non vi è possibile navigare su nessun sito Web, ma riuscite a eseguire il ping degli host a caso, probabilmente siete incappati in questo problema: ping utilizza il protocollo ICMP e non è affetta da problemi di TCP.
Potete provare tramite Wireshark. Potreste osservare comunicazioni UDP e ICMP avvenute con successo, ma comunicazioni TCP non riuscite (solo verso host esterni).
Male
Per risolverlo nel modo sbagliato, potete cambiare il valore , su cui si basa il calcolo del Fattore di Ridimensionamento. Sebbene dovrebbe funzionare per la maggior parte degli hosts, non è garantito, specialmente per quelli molto distanti.
# echo "4096 87380 174760" > /proc/sys/net/ipv4/tcp_rmem
Bene
Disabilitate semplicemente il Ridimensionamento della Finestra. Poichè essa rappresenta una buona caratteristica di TCP, disabilitarla può rivelarsi scomodo, specialmente se non potete sistemare il router malfunzionante. Ci sono diversi metodi per disabiltare il Ridimensionamento della Finestra, e sembra che il più sicuro (che funzionerà con la maggior parte dei kernel) sia di aggiungere la seguente riga a (vedasi anche sysctl):
net.ipv4.tcp_window_scaling = 0
Migliore
Questo problema è causato da router/firewall malfunzionanti, dunque cambiamoli. Alcuni utenti hanno riportato che il router difettoso era proprio il loro router DSL.
Ulteriori informazioni
Questa sezione si basa sull'articolo LWN Ridimensionamento della finestra di TCP e router difettosi e su un articolo archiviato di Kernel Trap: Ridimensionamento della Finestra su Internet.
Ci sono anche diverse discussioni pertinenti sul LKML.
Il secondo PC connesso non è in grado di utilizzare la LAN in parallelo
Il primo PC ha due LAN. Il secondo PC ha una LAN ed è connesso al primo PC. Andare al secondo PC per fornire tutto l'accesso alla LAN dopo l'interfaccia in parallelo:
# sysctl net.bridge.bridge-nf-filter-pppoe-tagged=0 # sysctl net.bridge.bridge-nf-filter-vlan-tagged=0 # sysctl net.bridge.bridge-nf-call-ip6tables=0 # sysctl net.bridge.bridge-nf-call-iptables=0 # sysctl net.bridge.bridge-nf-call-arptables=0
Fonti esterne
- Guida per gli Amministratori di Rete Linux
- Consultazione di Debian: Configurazione di rete
- RHEL7: Guida per l'Amministrazione di Rete
- Monitorare e Sintonizzare lo Stack per l'Amministrazione di Rete di Linux: Ricevere dei dati
- Monitorare e Sintonizzare lo Stack per l'Amministrazione di Rete di Linux: Inviare dei dati
- Tracciamento del viaggio di un pacchetto mediante punti tracciamento, perf ed eBPF