Guida MikroTik
VPN e tunnelAvanzato

MTU e MSS sui tunnel: niente più siti lenti o a metà

Ogni VPN aggiunge overhead: se non gestisci MTU e MSS, ottieni pagine che non caricano, download bloccati e VoIP a scatti, soprattutto su link radio. Guida pratica con overhead per protocollo e MSS clamping.

È il problema VPN più frequente e più sottovalutato: il tunnel "si connette" ma alcuni siti non caricano, gli upload si bloccano a metà, la VoIP gracchia. Quasi sempre è un problema di MTU: ogni protocollo di tunneling incapsula i pacchetti aggiungendo header, riducendo la dimensione utile del payload. Se un pacchetto pieno (1500 byte) entra in un tunnel che ne può portare 1420, va frammentato o scartato.

Perché succede (Path MTU Discovery rotto)

I sistemi usano PMTUD per scoprire la MTU del percorso: inviano pacchetti con flag "Don't Fragment" e si aspettano un messaggio ICMP "Fragmentation Needed" quando sono troppo grandi. Se un firewall lungo il percorso blocca l'ICMP (succede spesso), PMTUD fallisce in silenzio: il pacchetto grande viene scartato e basta. Risultato: l'handshake TCP passa (pacchetti piccoli) ma i trasferimenti grandi si bloccano ("black hole").

Overhead indicativo per protocollo

TunnelOverhead ~MTU interfaccia consigliataMSS consigliata (IPv4)
WireGuard60 byte14201380
GRE (no IPsec)24 byte14761436
GRE + IPsec~70-90 byte1400-14201360-1380
IPIP20 byte14801440
IPsec ESP (tunnel)~56-73 byte~1420-1440~1380-1400
EoIP42 byte1458 (L2)clamp lato L3
VXLAN50 byte14501410
Overhead approssimativo e MTU utile su un underlay a 1500 byte
I valori sono indicativi: AES-GCM, NAT-T (UDP 4500), IPv6 cambiano l'overhead. La regola pratica robusta: imposta la MTU dell'interfaccia tunnel al valore in tabella e applica MSS clamping = MTU − 40 per il TCP.

La soluzione regina: MSS clamping

Il MSS clamping riscrive l'opzione TCP MSS nei pacchetti SYN che attraversano il tunnel, forzando i due estremi a usare segmenti più piccoli — così non si genera mai un pacchetto troppo grande da frammentare. È la cura definitiva al "sito che non carica" perché agisce sul TCP a prescindere dal PMTUD.

MSS clamping automatico (consigliato)
# 'clamp-to-pmtu' calcola da solo l'MSS corretto in base alla MTU del tunnel.
# Applicalo al traffico che ENTRA o ESCE dalle interfacce tunnel.
/ip/firewall/mangle/add \
  chain=forward \
  protocol=tcp tcp-flags=syn \
  out-interface=wg-siteB \
  action=change-mss new-mss=clamp-to-pmtu \
  comment="MSS clamp uscita tunnel"

/ip/firewall/mangle/add \
  chain=forward \
  protocol=tcp tcp-flags=syn \
  in-interface=wg-siteB \
  action=change-mss new-mss=clamp-to-pmtu \
  comment="MSS clamp ingresso tunnel"
MSS clamping con valore fisso (se clamp-to-pmtu non basta)
# Alternativa: forza un MSS preciso (es. WireGuard a 1380)
/ip/firewall/mangle/add \
  chain=forward \
  protocol=tcp tcp-flags=syn \
  tcp-mss=!0-1380 \
  out-interface=wg-siteB \
  action=change-mss new-mss=1380 \
  comment="MSS fisso 1380 sul tunnel WireGuard"
Impostare la MTU sull'interfaccia tunnel
# Esempio: MTU coerente per WireGuard
/interface/wireguard/set wg-siteB mtu=1420

# Per GRE
/interface/gre/set gre-siteB mtu=1476

Diagnosi rapida

Trova la MTU reale del percorso con ping a dimensione crescente
# Ping 'do-not-fragment' verso l'altro capo del tunnel.
# Riduci size finché non passa: quella + 28 (header IP+ICMP) = MTU utile.
/ping 10.255.255.2 size=1472 do-not-fragment count=3
/ping 10.255.255.2 size=1400 do-not-fragment count=3
/ping 10.255.255.2 size=1380 do-not-fragment count=3
Sintomi tipici da MTU: SSH/HTTPS che si aprono ma poi si bloccano; alcuni siti sì e altri no; trasferimenti che partono e si fermano; videoconferenze a scatti. Se attivando l'MSS clamping il problema sparisce, era MTU. Applica il clamping in chain=forward su TUTTE le interfacce tunnel della rete.
Su link radio (vedi articolo dedicato) la MTU effettiva può essere già ridotta dalla catena Ethernet/wireless: somma quell'overhead a quello della VPN. In dubbio, parti conservativo (MTU tunnel 1400, MSS 1360) e poi alza misurando.
mtumssmss clampingtcp mssoverheadframmentazionepmtudpath mtu discoverytunnel lentolink radiowireguard mtuipsec mtugre mtuchange-msstcp-mss

Configura senza fatica con l'AI

In WispOS l'agente AI genera la configurazione RouterOS dalle tue parole e un tutor ti guida passo passo.

Prova WispOS