Network configuration (Italiano)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Questo articolo descrive come configurare le connessioni di rete su OSI layer 3 e versioni successive. Le specifiche del supporto sono gestite nelle sottopagine Ethernet e Wireless.

Una semplice guida per la configurazione di rete e risoluzione di problemi annessi.

Controllare la connessione

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

  1. La tua interfaccia di rete è elencata e abilitata. Altrimenti, controlla il driver del dispositivo – vedi Ethernet#Device driver o Wireless#Device driver.
  2. Sei connesso alla rete. Il cavo è collegato o sei connesso alla LAN wireless.
  3. La tua interfaccia di rete ha un indirizzo IP.
  4. Puoi effettuare il ping di un indirizzo IP locale (ad esempio il tuo gateway predefinito).
  5. Puoi effettuare il ping di un indirizzo IP pubblico (ad es. 8.8.8.8, che è un server DNS di Google ed è un indirizzo conveniente con cui testare).
  6. Controlla se puoi risolvere i nomi di dominio (es. archlinux.org).

Ping

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Aggiungi o collega la spiegazione di errori di ping comuni come Host sconosciuti/La rete non è raggiungibile. (Discuss in Talk:Network configuration (Italiano))
$ 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 che ricevi, l'utility ping stamperà una riga come quella sopra. Per maggiori informazioni vedere il manuale ping(8). Si noti che i computer possono essere configurati per non rispondere alle richieste echo ICMP.

Se non ricevi risposta, ciò potrebbe essere correlato al tuo gateway predefinito o al tuo provider di servizi Internet (ISP). Puoi eseguire un traceroute per diagnosticare ulteriormente il percorso verso l'host.

Nota: Se ricevi un errore come ping: icmp open socket: Operazione non consentita durante l'esecuzione di ping, prova a reinstallare il pacchetto iputils.

Gestione della rete

Per configurare una connessione di rete, seguire i seguenti passaggi:

  1. Assicurati che la tua interfaccia di rete sia elencata e abilitata.
  2. Connettiti alla rete. Collega il cavo Ethernet o connettiti alla LAN wireless.
  3. Configura la tua connessione di rete:
Nota: L'immagine di installazione utilizza systemd-resolved e systemd-networkd, che è configurato come client DHCP per Ethernet, WLAN e WWAN interfacce di rete.

net-tools

Arch Linux ha deprecato net-tools in favore di iproute2.[1]

Comando deprecato Nuovo comando
arp ip neighbor
ifconfig ip address, ip link
netstat ss
route ip route

Per una panoramica più completa, vedere Comandi di rete Linux deprecati e loro sostituzioni.

iproute2

iproute2 è una dipendenza del meta pacchetto base e fornisce l'interfaccia a riga di comando ip(8), utilizzata per gestire le interfacce di rete, indirizzi IP e la tabella di instradamento. Tieni presente che la configurazione eseguita utilizzando ip andrà persa dopo un riavvio. Per una configurazione persistente, puoi utilizzare un gestore di rete o automatizzare i comandi ip utilizzando script e systemd units. Si noti che i comandi ip possono essere generalmente abbreviati, per chiarezza sono comunque spiegati in questo articolo.

Interfacce di rete

Per impostazione predefinita udev assegna i nomi alle interfacce di rete utilizzando Predictable Network Interface Names, che antepone i nomi alle interfacce con en (wired/Ethernet), wl (wireless/WLAN) o ww (WWAN). Vedi systemd.net-naming-scheme(7).

Suggerimento: Per modificare i nomi delle interfacce, vedere #Cambiare nome interfaccia e #Ripristina i nomi delle interfacce tradizionali.

Elenco delle interfacce di rete

a indicarea indicare I nomi delle interfacce cablate e wireless possono essere trovati tramite ls /sys/class/net o ip link. Nota che lo è l'virtual loopback interface e non viene utilizzata per effettuare connessioni di rete.

I nomi dei dispositivi wireless possono essere recuperati anche utilizzando iw dev. Vedi anche Wireless#Ottieni il nome dell'interfaccia.

Se la tua interfaccia di rete non è elencata, assicurati che il driver del dispositivo sia stato caricato correttamente. Vedere Ethernet#Device driver o [[Wireless#Device driver]

Indirizzo==== Abilitazione e disabilitazione delle interfacce di rete ====

Le interfacce di rete possono essere abilitate o disabilitate usando ip link set interface up|down, si veda ip-link(8).

Per controllare lo stato dell'interfaccia enp2s0:

$ ip link show dev enp2s0
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN mode DEFAULT qlen 1000
...

La parola UP in <BROADCAST,MULTICAST,UP,LOWER_UP> sta a indicare che l'interfaccia è attiva, non si considera la successiva state DOWN.

Nota: Se il tuo percorso predefinito è attraverso l'interfaccia enp2s0, rimuoverlo rimuoverà anche il percorso e ripristinarlo non ristabilirà automaticamente il percorso predefinito. Vedere #Tabella di routing per ristabilirlo.

Indirizzo IP statico o dinamico?

Se utilizzate un Wi-FI o un router, ad esempio, a casa, molto probabilmente utilizzerete un indirizzo IP dinamico. L'indirizzo IP viene assegnato dal Wi-Fi o dal router ed è il modo in cui il vostro computer dovrebbe essere configurato. Oppure, se si e a casa e il vostro computer è connesso al modem del vostro ISP, ad esempio un modem via cavo, anche questo utilizzerà un indirizzo IP dinamico. Gli indirizzi IP dinamici possono cambiare ogni volta che accendi il computer. In un ambiente di lavoro si potrebbe avere un indirizzo IP statico o un indirizzo IP dinamico. Si può configurare il proprio router in modo che assegni sempre al proprio computer lo stesso indirizzo IP, in questo casi si sta utilizzando un indirizzo IP statico. Quando si utilizza un indirizzo IP dinamico, sarà necessario utilizzare DHCP in modo che possa configurare l'interfaccia di rete con l'indirizzo IP corretto. Oltre a configurare l'ìndirizzo IP, DHCP può anche configurare il routing (come arrivare da dove ti trovi a qualsiasi punto della rete sta andando) così come i name server, che convertono il nome host, ad esempio, google.com, nel suo indirizzo IP, un numero con dei punti.

Indirizzo IP statico

Un indirizzo IP statico può essere configurato con la maggior parte dei gestori di rete e anche con dhcpcd.

Per configurare manualmente un indirizzo IP statico, aggiungi un indirizzo IP come descritto in #Indirizzi IP, imposta la tua Tabella di routing e configura i tuoi server DNS.

Indirizzi IP

Gli indirizzi IP sono gestiti usando ip-address(8).

Per un elenco d'indirizzi IP

$ ip address show

Per aggiungere un indirizzo IP a una interfaccia

# ip address add address/prefix_len broadcast + dev interface
Nota che :
Nota: Assicurati che gli indirizzi IP assegnati manualmente non siano in conflitto con quelli assegnati da DHCP.

Eliminare un indirizzo IP da una interfaccia:

# ip address del address/prefix_len dev interface

Eliminare tutti gli indirizzi che corrispondono a un criterio, ad es. di una specifica interfaccia:

# ip address flush dev interface
Suggerimento: Gli indirizzi IP possono essere calcolati con ipcalc (ipcalc).

Tabella di routing

La routing table è usata per determinare se puoi raggiungere direttamente un indirizzo IP o quale gateway (router) dovresti usare. Se nessun'altra route corrisponde all'indirizzo IP, viene utilizzato il gateway predefinito.

La tabella di routing è gestita utilizzando ip-route(8).

PREFIX è una notazione CIDR o default per il gateway predefinito.

Elenco percorsi IPv4

$ ip route show

Elenco percorsi IPv6

$ ip -6 route

Aggiungere un percorso

# ip route add PREFIX via address dev interface

Cancellare un percorso

# ip route del PREFIX via address dev interface

DHCP

Un server Dynamic Host Configuration Protocol (DHCP) fornisce ai client un indirizzo IP dinamico, la subnet mask, l'indirizzo IP del gateway predefinito e, facoltativamente, anche i server dei nomi DNS.

Per utilizzare DHCP è necessario un server DHCP nella rete e un client DHCP:

Client Package Archiso Note Systemd units
dhcpcd dhcpcd Yes DHCP, DHCPv6, ZeroConf, static IP dhcpcd.service, dhcpcd@interface.service
ISC dhclient dhclient Yes DHCP, DHCPv6, BOOTP, static IP dhclient@interface.service
Nota:
  • Non dovresti eseguire due client DHCP contemporaneamente.
  • Invece di utilizzare direttamente un client DHCP autonomo, puoi anche utilizzare un gestore di rete, alcuni dei quali hanno un client DHCP integrato.
Suggerimento:
  • Puoi controllare se un server DHCP è in esecuzione con dhcping.
  • Mentre aspetti che venga assegnato un IP puoi eseguire qualcosa come watch -n 1 ping -c 1 archlinux.org per confermare che la rete è connessa.

Servers

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: systemd-networkd has DHCP server support. (Discuss in Talk:Network configuration (Italiano))
Server Package IPv4 IPv6 GUI Interfaces Storage backend(s) Note
dhcpd dhcp Yes Yes Glass-ISC-DHCP ? File
dnsmasq dnsmasq Yes Yes No ? File come DNS, PXE e TFTP
Kea kea Yes Yes Kea-Anterius (Experimental) REST, RADIUS e NETCONF File, MySQL, PostgreSQL e Cassandra come DNS

Gestori di rete

Un gestore di rete consente di gestire le impostazioni della connessione di rete nei cosiddetti profili di rete per facilitare il cambio di rete.

Nota: Ci sono molte soluzioni tra cui scegliere, ma ricorda che tutte si escludono a vicenda; non dovresti eseguire due gestori di rete contemporaneamente.
Network manager GUI Archiso [2] CLI tools PPP support
(e.g. 3G modem)
DHCP client systemd units
ConnMan 8 unofficial No connmanctl(1) Yes (with ofonoAUR) internal connman.service
netctl 2 unofficial No netctl(1), wifi-menu Yes dhcpcd or dhclient netctl-ifplugd@interface.service, netctl-auto@interface.service
NetworkManager Yes No nmcli(1), nmtui(1) Yes internal or dhclient NetworkManager.service
systemd-networkd No Yes (base) networkctl(1) No internal systemd-networkd.service, systemd-resolved.service
Wicd Yes No wicd-cli(8), wicd-curses(8) No dhcpcd or dhclient wicd.service

Impostare l'host name

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: The myhostname pseudo-variable may cause confusion since that name is also used by nss-myhostname(8). (Discuss in Talk:Network configuration (Italiano))

Un hostname è un nome univoco creato per identificare un pc in rete, configurato in /etc/hostname-per ulteriori dettagli vedere hostname(5) e hostname(7). Il file può contenere il nome di dominio del sistema, se presente. Per impostare il nome host, editare /etc/hostname per includere una singola riga con myhostname:

/etc/hostname
myhostname
Suggerimento: Per consigli sulla scelta di un nome host, vedere RFC 1178.

In alternativa, usando hostnamectl(1):

# hostnamectl set-hostname myhostname

Per impostare temporaneamente il nome host (fino al riavvio), usa hostname(1) da inetutils:

# hostname myhostname

Per impostare il nome host 'pretty' e altri metadati della macchina, vedere machine-info(5).

Risoluzione del nome host locale

nss-myhostname(8) (un modulo NSS fornito da systemd) fornisce la risoluzione del nome host locale senza dover modificare /etc/hosts. Si è abilitata di default.

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: localhost entries should be in /etc/hosts by default; see FS#56684. After the bug is fixed, this section should be rewritten as a troubleshooting section and moved to #Troubleshooting. (Discuss in Talk:Network configuration (Italiano)#Local hostname resolution as troubleshooting)

Alcuni software possono comunque leggere direttamente /etc/hosts, vedere [3] [4] per esempi. Per evitare che possano potenzialmente interrompere, bloccare o ritardare in altro modo l'operazione, assicurati che possano risolvere il nome host locale e localhost configurando il file hosts(5):

/etc/hosts
127.0.0.1        localhost
::1              localhost
127.0.1.1        myhostname

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Why 127.0.1.1 is used (and why a static IP address should be preferred over it). (Discuss in Talk:Network configuration (Italiano)#Why should a static IP be preferred over 127.0.1.1 in /etc/hosts?)

Per un sistema con un indirizzo IP permanente, sostituire 127.0.1.1 con quell'indirizzo IP permanente. Per un sistema con un nome di dominio completo, inserire il nome di dominio completo prima del nome host. Per esempio:

/etc/hosts
127.0.0.1        localhost
::1              localhost
203.0.113.45     host1.fqdomain.example host1
Nota: L'ordine dei nomi host/alias che seguono l'indirizzo IP in /etc/hosts è significativo. La prima stringa è considerata il nome host canonico e può essere aggiunta ai domini padre, dove i componenti del dominio sono separati da un punto. Tutte le stringhe successive sulla stessa riga sono considerate alias. Vedi hosts(5) per maggiori informazioni.

Di conseguenza il sistema risolve entrambe le voci:

$ getent hosts
127.0.0.1       localhost
127.0.0.1       localhost
127.0.1.1       myhostname

Risoluzione del nome host della rete locale

Per rendere la tua macchina accessibile nella tua LAN tramite il suo nome host puoi:

  • modifica il file /etc/hosts per ogni dispositivo nella tua LAN, vedi hosts(5)
  • configura un DNS server per risolvere il tuo nome host e fare in modo che i dispositivi LAN lo utilizzino (ad es. tramite #DHCP)
  • o nel modo più semplice: usa un servizio Rete a configurazione zero:
    • Risoluzione del nome host tramite NetBIOS di Microsoft. Fornito da Samba su Linux. Richiede solo nmb.service. I computer che eseguono Windows, macOS o Linux con nmb in esecuzione potranno trovare la tua macchina.
    • Risoluzione del nome host tramite mDNS. Fornito da nss_mdns con Avahi (vedi Avahi#Hostname resolution per i dettagli di configurazione) o systemd-resolved. I computer che eseguono macOS, o Linux con Avahi o sistema risolto in esecuzione, saranno in grado di trovare la tua macchina. L'API Win32 precedente non supporta mDNS, il che potrebbe impedire ad alcune applicazioni Windows meno recenti di accedere al dispositivo.

Tips and tricks

Cambia il nome dell'interfaccia

Nota: Quando si modifica lo schema di denominazione, non dimenticare di aggiornare tutti i file di configurazione relativi alla rete e i file di unità systemd personalizzati per riflettere la modifica.

È possibile modificare il nome del dispositivo definendo il nome manualmente con una regola udev. Per esempio:

/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="net0"

Queste regole verranno applicate automaticamente all'avvio.

Un paio di cose da notare:

  • Per ottenere l'indirizzo MAC di ogni scheda, usa questo comando: cat /sys/class/net/device_name/address
  • Assicurati di utilizzare i valori esadecimali minuscoli nelle regole udev. Non gli piacciono le maiuscole.

Se la scheda di rete ha un MAC dinamico, puoi utilizzare DEVPATH, ad esempio:

/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", DEVPATH=="/devices/platform/wemac.*", NAME="int"
SUBSYSTEM=="net", DEVPATH=="/devices/pci*/*1c.0/*/net/*", NAME="en"

Per ottenere il DEVPATH di tutti i dispositivi attualmente connessi, guarda dove portano i collegamenti simbolici in /sys/class/net/. 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
d'interfaccia

Il percorso del dispositivo deve corrispondere sia al nuovo che al vecchio nome del dispositivo, poiché la regola può essere eseguita più di una volta all'avvio. Ad esempio, nella seconda regola, '/devices/pci*/*1c.0/*/net/enp*' sarebbe sbagliato poiché smetterà di corrispondere una volta cambiato il nome in it. Solo la regola predefinita del sistema si attiverà la seconda volta, causando la modifica del nome ad es. enp1s0.

Se stai utilizzando un dispositivo di rete USB (ad es. Tethering del telefono Android) che ha un indirizzo MAC dinamico e desideri essere in grado di utilizzare diverse porte USB, puoi invece utilizzare una regola che corrisponda a seconda del fornitore e dell'ID prodotto:

/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="12ab", ATTRS{idProduct}=="3cd4", NAME="net2"

Per testare le regole, si possono essere verificare direttamente dallo spazio utente, ad es. con udevadm --debug test /sys/class/net/*. Ricordati di rimuovere prima l'interfaccia che stai cercando di rinominare (es. ip link set enp1s0 down).

Nota: Quando si scelgono i nomi statici dovrebbe essere evitato di usare nomi nel formato 'ethX' e 'wlanX', perché questo potrebbe portare a una competizione tra il kernel e udev durante l'avvio. Invece, è meglio usare nomi d'interfaccia che non sono usati dal kernel come default, ad esempio: net0, net1, wifi0, wifi1 . Per ulteriori dettagli, consultare la documentazione [5].

Ripristina i nomi delle interfacce tradizionali

Se si preferisce mantenere i nomi delle interfacce tradizionali come eth0, Predictable Network Interface Names si può disabilitare mascherando la regola udev:

  1. ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules


In alternativa, aggiungere net.ifnames=0 ai kernel parameters.

Imposta l'MTU del dispositivo e la lunghezza della coda

Puoi modificare il dispositivo MTU e la lunghezza della coda definendo manualmente con una regola udev. Per esempio:

/etc/udev/rules.d/10-network.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wl*", ATTR{mtu}="1500", ATTR{tx_queue_len}="2000"

mtu: l'utilizzo di un valore maggiore di 1500 (i cosiddetti jumbo frames) può accelerare notevolmente i trasferimenti di rete. Si noti che tutte le interfacce di rete, inclusi gli switch nella rete locale, devono supportare la stessa MTU per utilizzare i frame jumbo. Per PPPoE, l'MTU non deve essere maggiore di 1492. Puoi anche impostare l'MTU tramite systemd.netdev(5).

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 connessioni Internet ad alta velocità che eseguono grandi trasferimenti di dati.

Incollaggio o LAG

Vedere netctl o systemd-networkd, o Wireless bonding.

Aliasing dell'indirizzo IP

L'aliasing IP è il processo di aggiunta di più di un indirizzo IP a un'interfaccia di rete. Con questo, un nodo su una rete può avere più connessioni a una rete, ognuna con uno scopo diverso. Gli usi tipici sono 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 iproute2 per eseguire

  1. ip addr add 192.168.2.101/24 dev enp2s0 label enp2s0:1

Per rimuovere un dato alias eseguire

  1. ip addr del 192.168.2.101/24 dev enp2s0:1

I pacchetti destinati a una sotto rete utilizzeranno l'alias primario per impostazione predefinita. Se l'IP di destinazione si trova all'interno di una sotto rete di un alias secondario, viene impostato rispettivamente l'IP di origine. Considera il caso in cui ci sia più di una NIC, le route predefinite possono essere elencate con ip route.

Modalità promiscua

L'attivazione della modalità promiscua farà sì che una NIC (wireless) inoltri tutto il traffico che riceve al sistema operativo per un'ulteriore elaborazione. Questo è l'opposto della 'modalità normale' in cui una NIC eliminerà i frame che non è destinata a ricevere. Viene spesso utilizzato per la risoluzione dei problemi di rete avanzata e packet sniffing.

/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 vuoi abilitare la modalità promiscua sull'interfaccia enp2s0 esegui enable promiscuous@enp2s0.service.

Interrogare i socket

ss è un'utilità per esaminare le porte di rete e fa parte del pacchetto iproute2. Ha una funzionalità simile all'utilità netstat [6].

L'uso comune include:

Visualizza tutti i socket TCP con i nomi dei servizi:

$ ss -at

Visualizza tutti i socket TCP con i numeri di porta:

$ ss -atn

Visualizza tutti i socket UDP:

$ ss-au

Per maggiori informazioni vedi ss(8).

Risoluzione dei problemi

Scambio computer/modem via cavo

La maggior parte degli ISP (videotron for example) ha il modem via cavo configurato per riconoscere un solo PC client, attraverso il MAC Address della sua interfaccia di rete. Una volta che il modem via cavo ha acquisito il MAC Address del primo PC, o della relativa periferica, non risponderà in alcun modo ad un altro MAC Address. Pertanto, se si cambia un PC con un altro (o router), il nuovo PC (o router) non funzionerà con il modem via cavo, in quanto ha un MAC Address diverso dal precedente. Per effettuare il reset del modem via cavo in modo che riconosca il nuovo PC, è necessario spegnerlo e riaccenderlo. Una volta che il modem via cavo si è riavviato ed è ritornato completamente in linea (le spie luminose sono stabili), riavviare il nuovo computer in modo da effettuare una nuova richiesta DHCP, o effettuarla manualmente.

Se questo metodo non funziona, è necessario clonare il MAC Address del pc originario. Vedere quindi #Cambiare MAC/hardware address.

Il problema del TCP Window Scaling

I pacchetti TCP contengono nell'header un campo "window" che indica la quantità di dati che deve restituire l'altro host. Questo campo è di 16 bit, dato che la dimensione della finestra è al massimo 64kb. I pacchetti TCP vengono mantenuti in cache per un certo tempo e, se la memoria è (o era) limitata, è probabile che l'host la finisca rapidamente.

Nel 1992, quando cominciò ad essere disponibile molta memoria, per migliorare la situazione, fu scritta la RFC 1323: fu introdotto in "Window Scaling". Il valore "window", presente in tutti i pacchetti, viene modificato da uno "Scale Factor" definito una sola volta all'inizio della connessione. Questo campo, di 8 bit, permette alla finestra di essere fino a 32 volte più grande dei 64Kb iniziali.

Sembra che alcuni router e firewall riscrivano lo Scale Factor a 0 che causa "incomprensioni" tra gli host.

Il kernel 2.6.17 ha introdotto un nuovo algoritmo che genera Scale Factors più alti, in modo tale da rendere il problema di questi router e firewall virtualmente più visibile.

La connessione, in questi casi, si interrompe o è, al più, molto lenta.

Come diagnosticare questo problema?

Prima di tutto chiariamo: è molto difficile. In alcuni casi, non sarà possibile effettuare connessioni TCP (HTTP, FTP, ...), in altri sarà possibile comunicare solo con alcuni host (molto pochi).

Quando si ha questo problema, l'output di dmesg è ok, i log sono puliti e ip addr riporta una configurazione corretta... quindi sembra tutto normale.

Se non è possibile raggiungere nessun sito Web, ma è possibile pingare alcuni host, probabilmente si è incappati in questo problema: il ping utilizza il protocollo ICMP e non è affetto da problemi TCP.

Si può provare ad utilizzare Wireshark. Si possono vedere comunicazioni UDP e ICMP che avvengono correttamente e le connessioni TCP che non vanno a buon fine (solo verso host 'esterni').

Come risolverlo?

La strada sbagliata

Per risolvere il problema, si può cambiare il valore tcp_rmem, su cui si basa il calcolo dello Scale Factor. Sebbene dovrebbe funzionare per la maggior parte degli host, non è sicuro che funzioni in tutti i casi, specialmente per host molto distanti.

echo "4096 87380 174760" > /proc/sys/net/ipv4/tcp_rmem
Il metodo corretto)

Semplicemente, disabilitare il Window Scaling. Anche se è una caratteristica carina, può rivelarsi scomoda se non si può sistemare il router malfunzionante. Ci sono diversi metodi per disabiltare il Window Scaling, e sembra che il più sicuro (che funziona sui kernel più recenti) sia aggiungere la seguente linea in /etc/sysctl.d/99-disable_window_scaling.conf: (vedere anche sysctl)

net.ipv4.tcp_window_scaling = 0
Il metodo migliore

Questo problema è causato da router/firewall malfunzionanti, quindi vanno cambiati.

Ulteriori informazioni

Questa sezione si basa sull'articolo LWN TCP window scaling and broken routers e sull’articolo di Kernel Trap : Window Scaling on the Internet.

Altre discussioni pertinenti sono presenti su 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. Andiamo al secondo PC per dare tutto l'accesso alla LAN dopo l'interfaccia a ponte:

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Explain what the settings actually do. (Discuss in Talk:Network configuration (Italiano))
# 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