Risoluzione dei problemi · 1 min di lettura

MTU, frammentazione e perché il tuo WireGuard è lento

Se il tuo tunnel WireGuard si connette ma è lento, si blocca durante trasferimenti grandi o si impunta su determinati siti, il colpevole abituale è l'MTU. Questa guida spiega cosa sono MTU e frammentazione, perché i tunnel rompono le dimensioni dei pacchetti e l'impostazione esatta da cambiare.

Cos'è l'MTU e perché i tunnel lo rompono

MTU (Unità Massima di Trasmissione) è il pacchetto più grande, in byte, che un collegamento di rete può trasportare in un'unica parte. L'MTU standard di Ethernet è 1500. Quando un pacchetto è troppo grande per un collegamento, deve essere frammentato in pezzi più piccoli o scartato.

Un tunnel WireGuard avvolge ciascuno dei tuoi pacchetti all'interno di un pacchetto UDP crittografato, e quel rivestimento aggiunge un sovraccarico — circa 60 byte per IPv4 e 80 per IPv6. Quindi un pacchetto di dimensioni complete di 1500 byte dalla tua app diventa più grande di 1500 una volta che WireGuard lo incapsula, e il collegamento sottostante non può trasportarlo intero. Questo è il motivo per cui WireGuard imposta di default l'MTU dell'interfaccia a 1420: lascia spazio per il sovraccarico della crittografia in modo che il pacchetto incapsulato si adatti ancora a un percorso di 1500 byte.

Perché il MTU sbagliato ti rallenta

Normalmente, quando un pacchetto è troppo grande per essere inoltrato senza frammentazione, un router restituisce un ICMP "Frammentazione Necessaria" e il mittente riduce la dimensione del pacchetto — questo è il Path MTU Discovery (PMTUD). Il problema è che molte reti e firewall scartano silenziosamente quei messaggi ICMP. Quando ciò accade, si verifica un buco nero PMTU: pacchetti piccoli (come l'inizio di una pagina) passano, ma i pacchetti grandi vengono scartati silenziosamente senza alcun errore. Il sintomo è inconfondibile: le connessioni iniziano, poi si bloccano; SSH si connette ma si blocca nell'output; alcuni siti si caricano e altri si fermano; i download grandi si bloccano allo 0%.

Se il tuo percorso ha un MTU inferiore a quello previsto — comune su DSL/PPPoE (che aggiunge 8 byte), alcune reti mobili e collegamenti a doppio incapsulamento — anche il 1420 di WireGuard può essere troppo alto, e si verifica il buco nero. La soluzione è ridurre l'MTU del tunnel in modo che i pacchetti incapsulati si adattino al percorso reale.

Trova e imposta il giusto MTU

Prova il pacchetto più grande che attraversa il tuo percorso senza frammentazione, quindi imposta l'MTU dell'interfaccia WireGuard al di sotto di esso. I valori sono esempi; testa i tuoi.

bash
# 1) Probe path MTU with don't-fragment pings (Linux/macOS).
#    Lower the size until it succeeds; that size + 28 = path MTU.
ping -M do -s 1472 8.8.8.8    # 1472 + 28 (ICMP/IP headers) = 1500
ping -M do -s 1392 8.8.8.8    # if 1472 fails, try smaller (=> 1420)
ping -M do -s 1252 8.8.8.8    # a safe fallback (=> 1280)

# 2) Set the tunnel MTU in your WireGuard config, under [Interface]:
#    [Interface]
#    MTU = 1280        # widely-compatible fallback; try 1412/1420 first

# 3) Apply and test a large transfer:
wg-quick down wg0 && wg-quick up wg0
curl -o /dev/null https://speed.example/largefile

# Rule of thumb: if small requests work but big ones hang, LOWER the MTU.
# 1420 -> 1412 -> 1280 are common steps. 1280 is the IPv6 minimum and
# almost always passes, at a small efficiency cost.
Share this page
FAQ

Domande, risposte

Quale MTU dovrei usare per WireGuard?

Inizia con il valore predefinito di WireGuard di 1420. Se i trasferimenti grandi si bloccano mentre le richieste piccole funzionano, abbassalo — i passaggi comuni sono 1412, poi 1280. 1280 è il MTU minimo IPv6 e funziona quasi sempre, a un leggero costo di efficienza. Prova il tuo percorso con ping senza frammentazione per trovare il valore più alto che passa.

Perché WireGuard si connette ma poi si blocca su file di grandi dimensioni?

Quasi sempre un buco nero PMTU. I tuoi pacchetti sono troppo grandi per il percorso, e i messaggi ICMP che lo segnalerebbero vengono scartati, quindi i pacchetti grandi scompaiono silenziosamente mentre quelli piccoli riescono. Abbassare l'MTU del tunnel fa sì che i pacchetti si adattino e risolve il problema.

Perché il MTU predefinito di WireGuard è 1420 e non 1500?

Poiché WireGuard incapsula ogni pacchetto in UDP crittografato, aggiungendo circa 60 byte (IPv4) di sovraccarico. Impostare l'MTU dell'interfaccia a 1420 lascia spazio per quel sovraccarico in modo che il pacchetto incapsulato rientri ancora in un percorso standard di 1500 byte senza frammentazione.

Un tunnel sintonizzato per funzionare

s4m esegue WireGuard e OpenVPN con impostazioni sensate e un design senza log, incentrato sulla RAM. Se una rete ha bisogno di un MTU più basso, basta modificare una riga e sei a posto. Account anonimi, crypto accettata.

Le persone hanno trovato questa pagina cercando

Frasi di ricerca reali a cui questa pagina risponde — i collegamenti aprono la pagina che le tratta in dettaglio.