VPNSmith
Strumento gratuito - MTU WireGuard

Calcolatore MTU WireGuard

Il tunnel si connette e risponde al ping, ma le pagine si bloccano? Inserisci il payload di ping senza frammentazione più grande che passa, oppure scegli il tipo di collegamento, e ottieni l'MTU da mettere in wg0.conf, i comandi per applicarlo e la scala di ping per verificarlo. Tutto gira nel tuo browser.

Gira interamente nel tuo browser. Nulla di ciò che digiti lascia la pagina.

Cosa sai del tuo collegamento?

Esempio: ping -M do -s 1472 IP_PUBBLICO_SERVER risponde, quindi scrivi 1472. Se fallisce, segui la scala nei comandi di test qui sotto e inserisci la dimensione più grande che passa.

Connessione verso il server (fuori dal tunnel)
Comandi per

Risultato

1500
MTU del percorso
-80
Overhead WireGuard
1420
MTU da impostare

Il tuo percorso trasporta pacchetti completi da 1500 byte: il 1420 predefinito va bene. Se i trasferimenti grandi si bloccano ancora, la causa è altrove (forwarding, masquerade, AllowedIPs). Puoi comunque scrivere MTU = 1420 in modo esplicito.

wg0.conf
[Interface]
PrivateKey = <client private key>
Address = 10.66.66.2/32
MTU = 1420

[Peer]
PublicKey = <server public key>
Endpoint = SERVER_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
apply-mtu.sh
# 1. Aggiungi la riga MTU in [Interface] di /etc/wireguard/wg0.conf, poi riavvia il tunnel
sudo wg-quick down wg0 && sudo wg-quick up wg0

# 2. Oppure cambialo a caldo senza riavviare (perso al prossimo wg-quick down)
sudo ip link set dev wg0 mtu 1420
ip link show wg0 | grep -o 'mtu [0-9]*'
test-mtu.sh
# Scala di ping verso l'IP PUBBLICO del server, fuori dal tunnel: parti dall'alto, la prima dimensione che risponde è il tuo payload
# Una dimensione che fallisce mostra 'message too long', 'needs to be fragmented' o nessuna risposta
ping -M do -s 1472 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1464 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1452 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1444 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1400 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1372 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1300 -c 3 SERVER_PUBLIC_IP
ping -M do -s 1252 -c 3 SERVER_PUBLIC_IP

# Verifica attraverso il tunnel, verso l'IP di tunnel del server: deve rispondere con il nuovo MTU
ping -M do -s 1392 -c 3 10.66.66.1
# payload = MTU meno 28; se fallisce, abbassa ancora l'MTU

Metà dei problemi di MTU è il percorso, non la configurazione

Doppio NAT, router di casa e un tunnel impilato su un altro tunnel tolgono tutti byte al tuo percorso. Un VPS con un IPv4 pubblico pulito è un unico salto su un collegamento da 1500 byte, dove il 1420 predefinito funziona e basta. Il VPS base di Contabo include un indirizzo IPv4 pubblico e accesso root completo.

Link di affiliazione: potremmo ricevere una commissione, senza costi aggiuntivi per te. Il calcolatore resta gratuito e non dipende da questo.

Vedi il VPS Contabo

Da dove vengono i numeri

WireGuard incapsula ogni tuo pacchetto in un datagramma UDP. L'involucro ha una dimensione fissa, quindi l'MTU del tunnel è semplicemente l'MTU del percorso meno quell'involucro. È esattamente ciò che fa wg-quick quando non è indicato alcun MTU: prende l'MTU della rotta verso l'endpoint e sottrae 80, da cui il noto 1420 su un collegamento da 1500 byte.

IntestazioneByte
Intestazione IPv4 esterna20
Intestazione IPv6 esterna40
Intestazione UDP8
Intestazione dati WireGuard (tipo, indice, contatore)16
Tag di autenticazione Poly130516
Totale su IPv4 / su IPv660 / 80
Ping: intestazioni IPv4 + ICMP attorno al payload28

Un payload di ping di 1472 byte viaggia quindi in un pacchetto da 1500 byte. Se 1472 passa con il flag non frammentare, l'MTU del percorso è 1500 e il 1420 predefinito va bene. Se passa solo 1400, l'MTU del percorso è 1428 e WireGuard non deve inviare più di 1348 su IPv6. Il calcolatore sottrae 80, a meno che tu non indichi che la connessione esterna è solo IPv4: in quel caso bastano 60.

Valori tipici quando non puoi misurare

Un valore misurato batte sempre una tabella. Questi riferimenti servono quando non puoi eseguire il ping, per esempio su un telefono o su una rete che non controlli.

Tipo di collegamentoMTU del percorsoMTU WireGuard
Ethernet, fibra, cavo15001420 (predefinito)
ADSL/VDSL con PPPoE14921412
Mobile, 5G, CGNATvariabile1280 (ripiego)
Tunnel dentro un'altra VPNridotto due volte1280 (ripiego)
Minimo garantito IPv612801280

Domande frequenti

Qual è l'MTU predefinito di WireGuard e perché 1420?
Quando la configurazione non ha la riga MTU, wg-quick imposta l'MTU dell'interfaccia a quello della rotta verso l'endpoint meno 80 byte. Su un collegamento standard da 1500 byte si ottiene 1420. Gli 80 byte sono il caso peggiore: 40 di intestazione IPv6, 8 di UDP e 32 di framing WireGuard. Su IPv4 l'overhead reale è di 60 byte, quindi anche 1440 ci starebbe, ma 1420 è sicuro in entrambi i casi.
Come misuro l'MTU giusto?
Invia un ping all'IP pubblico del server con il flag non frammentare e un payload grande, poi riducilo finché arrivano risposte: ping -M do -s 1472 su Linux, ping -f -l 1472 su Windows, ping -D -s 1472 su macOS. Prendi il payload più grande che passa, aggiungi 28 byte di intestazioni IP e ICMP per ottenere l'MTU del percorso e sottrai 80 per WireGuard. Il calcolatore fa l'aritmetica e scrive i comandi per il tuo sistema.
WireGuard si connette ma nessuna pagina carica: è l'MTU?
Molto probabilmente, quando il traffico piccolo funziona e quello grande no. Handshake, richiesta DNS e ping sono piccoli, quindi riescono. Una pagina web completa è un pacchetto a dimensione piena; se supera l'MTU del percorso e il messaggio ICMP di frammentazione necessaria viene filtrato da qualche parte, viene scartato in silenzio. Abbassare l'MTU di WireGuard sotto l'MTU reale del percorso risolve. Se non passa nulla, controlla prima l'IP forwarding, la regola di masquerade e AllowedIPs.
Perché 1280 è il ripiego sicuro?
La RFC 8200 impone a ogni collegamento IPv6 di trasportare pacchetti da 1280 byte, e in pratica lo fa anche ogni percorso IPv4. Un MTU WireGuard di 1280 funziona quindi su PPPoE, mobile, CGNAT e tunnel annidati senza misurare, al prezzo di qualche punto di efficienza su un collegamento pulito da 1500. Se il tunnel stesso trasporta IPv6, l'MTU dell'interfaccia non deve scendere sotto 1280.
Client o server: dove imposto l'MTU?
Sul lato il cui collegamento è limitato, cioè quasi sempre il client (ADSL di casa, mobile, ufficio). L'MTU di un'interfaccia limita solo ciò che quell'interfaccia invia: abbassarlo sul client sistema upload e richieste, e le risposte del server seguono l'MSS TCP che ne deriva. Se il server stesso sta dietro un uplink inferiore a 1500, impostalo anche lì.
La riga MTU= funziona su Windows, macOS, Android e iOS?
Sì. Le app ufficiali di WireGuard leggono la chiave MTU= della sezione [Interface] e la applicano all'attivazione del tunnel. Su Linux la applica wg-quick, e puoi anche cambiarla a caldo con ip link set dev wg0 mtu, modifica che non sopravvive a un riavvio del tunnel.