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.

Translation Status: This article is a localized version of Network configuration. Last translation date: 2022-09-14. You can help to synchronize the translation, if there were changes in the English version.

Controllare la connessione

Per risolvere i problemi relativi a una connessione di rete, attenersi alle seguenti condizioni e assicurarsi di soddisfarle:

  1. La vostra interfaccia di rete è elencata e abilitata. Altrimenti, controllate il driver del dispositivo – vedasi /Ethernet#Driver del dispositivo o /Wireless#Driver del dispositivo.
  2. Siete connessi alla rete. Il cavo è collegato o siete connessi alla LAN wireless.
  3. La vostra interfaccia di rete ha un indirizzo IP.
  4. La vostra tabella di instradamento è configurata correttamente.
  5. Potete effettuare il ping di un indirizzo IP locale (es. il vostro gateway predefinito).
  6. 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).
  7. 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:

  1. Assicuratevi che la vostra interfaccia di rete sia elencata e abilitata.
  2. Connettetevi alla rete. Collegate il cavo Ethernet o connettetevi alla LAN wireless.
  3. Configurate la vostra connessione di rete:

net-tools

Arch Linux ha deprecato in favore di .

Comando deprecatocomandi di rimpiazzo
arpip neighbor
ifconfigip address, ip link
netstatss
routeip 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:

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:

ClientContenutoArchiso (Italiano)NotaUnità di systemd
dhcpcdDHCP, DHCPv6, ZeroConf, IP statico,
ISC dhclientdhclientDHCP, DHCPv6, BOOTP, IP statico

Server

ServerContenutoIPv4IPv6GUIInterfacceBackend(s) di memorizzazioneNota
dhcpdGlass-ISC-DHCP?File
dnsmasqNo?Fileanche DNS, PXE e TFTP
KeaStorkREST, RADIUS e NETCONFFile, MySQL, PostgreSQL e Cassandraanche 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 reteGUIArchiso Strumenti CLISupporto per PPP
(es. modem 3G)
Client DHCPUnità di systemd
ConnMan Noconnmanctl(1) (con )interno
netctl Nonetctl(1), wifi-menudhcpcd o dhclient,
NetworkManager No, interno o dhclient
systemd-networkd No (base)Nointerno,

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

gollark: I probably ought to update the server heavpoot has access on given the recent sudo vulnerability.
gollark: This is very unpythonic.
gollark: Why is Python `socket` essentially just directly binding to libc?
gollark: Or that.
gollark: I can disable comma-based pingination detection.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.