(Copiato da Unix Stack Exchange)
Hai i sintomi di un MTU problema:alcune connessioni TCP si bloccano, in modo più o meno riproducibile per un dato comando o URL ma senza uno schema complessivo facilmente distinguibile. Un sintomo rivelatore è che le sessioni ssh interattive funzionano bene ma i trasferimenti di file quasi sempre falliscono. Inoltre pppoe è il portatore numero uno del problema MTU per gli utenti domestici. Quindi prescrivo un controllo MTU.
Che cos'è? La m massimo t trasmissione u nit è la dimensione massima di un pacchetto su un collegamento di rete. L'MTU varia da mezzo di trasporto a mezzo di trasporto, ad es. Ethernet cablata e Wi-Fi (802.11) hanno MTU diversi e i collegamenti ATM (che costituiscono la maggior parte dell'infrastruttura a lunga distanza) hanno ciascuno il proprio MTU. PPPOE è un protocollo incapsulato, il che significa che ogni pacchetto è costituito da pochi byte di intestazione seguito dal pacchetto sottostante, quindi riduce la dimensione massima del pacchetto della dimensione dell'intestazione. L'IP consente ai router di frammentare i pacchetti se rilevano che sono troppo grandi per l'hop successivo, ma questo non sempre funziona. In teoria l'MTU corretto dovrebbe essere scoperto automaticamente, ma anche questo non sempre funziona. In particolare, l'uso di Google suggerisce che Network Manager non agisce sempre correttamente sulle informazioni MTU ottenute dalla scoperta MTU, ma non so quali versioni siano interessate o quali siano i casi d'uso problematici.
Come misurarlo. Prova a inviare pacchetti ping di una determinata dimensione a un host esterno che risponde a loro, ad es. ping -c 1 -s 42 8.8.8.8
(su Linux; su altri sistemi, cerca la documentazione del tuo ping
comando). I tuoi pacchetti dovrebbero passare per valori abbastanza piccoli di 42 (se 42 non funziona, qualcosa sta bloccando i ping). Per valori maggiori, il pacchetto non passerà. 1464 è un valore massimo tipico se l'elemento limitante dell'infrastruttura è la rete Ethernet locale. Se sei fortunato, quando invii un pacchetto troppo grande, vedrai un messaggio come Frag needed and DF set (mtu = 1492)
. Se non sei fortunato, continua a sperimentare con il valore finché non trovi qual è il massimo, quindi aggiungi 28 (-s
specifica la dimensione del payload e ci sono 28 byte di intestazioni in aggiunta). Vedi anche Come ottimizzare la tua connessione Internet usando MTU e RWIN sui forum di Ubuntu.
Come impostarlo (sostituisci 1454 con l'MTU che hai determinato e eth0
con il nome della tua interfaccia di rete)
- Una volta sola (Linux):esegui
ifconfig eth0 mtu 1454
- Permanentemente (Debian e derivate come Ubuntu, se non si usa Network Manager):Modifica
/etc/network/interfaces
. Subito dopo la voce per la tua interfaccia di rete (dopoiface eth0 …
direttiva), aggiungi una riga conpre-up ifconfig $IFACE mtu 1454
. In alternativa, se il tuo indirizzo IP è statico, puoi aggiungeremtu 1454
parametro aliface eth0 inet static
direttiva. -
Permanentemente (Debian e derivate come Ubuntu, con o senza Network Manager):crea uno script chiamato
/etc/network/if-pre-up.d/mtu
con i seguenti contenuti e renderlo eseguibile a livello mondiale (chmod a+rx
):#!/bin/sh ifconfig $IFACE mtu 1454