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.
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.
Risultato
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.
[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
# 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]*'
# 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.
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.
| Intestazione | Byte |
|---|---|
| Intestazione IPv4 esterna | 20 |
| Intestazione IPv6 esterna | 40 |
| Intestazione UDP | 8 |
| Intestazione dati WireGuard (tipo, indice, contatore) | 16 |
| Tag di autenticazione Poly1305 | 16 |
| Totale su IPv4 / su IPv6 | 60 / 80 |
| Ping: intestazioni IPv4 + ICMP attorno al payload | 28 |
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 collegamento | MTU del percorso | MTU WireGuard |
|---|---|---|
| Ethernet, fibra, cavo | 1500 | 1420 (predefinito) |
| ADSL/VDSL con PPPoE | 1492 | 1412 |
| Mobile, 5G, CGNAT | variabile | 1280 (ripiego) |
| Tunnel dentro un'altra VPN | ridotto due volte | 1280 (ripiego) |
| Minimo garantito IPv6 | 1280 | 1280 |