Ultimamente ho perso un macello di tempo cercando di debuggare il mancato funzionamento del Path MTU Discovery (PMTUD) quando mi connettevo a una VPN openvpn (scoprendo anche una Denial of Service con proposed CVSS score 5.9 nel tentativo di aggirare il problema). In soldoni quando mi connetto a una vpn il mio computer tenta di inviare pacchetti piu' grandi di quando sia possibile far passare attraverso il tunnel perche' il Path MTU Discovery (che si dovrebbe occupare di calculare la dimensione massima dei pacchetti) non funziona.
Un bel giorno sono inciampato su questo post: https://openvpn-users.narkive.com/B4yfpIM8/mtu-link-mtu-and-tun-mtu#post10
Another situation that cannot be detected or worked around by PMTU are underlying L2TP tunnels, typically found in the DSL world. If DSL is done over FastE or gigE (without jumbo frames) between the ISP and telco, each full sized packet will get fragmented as the max packet can only be 1460 bytes. In this situation, PMTU wont help you as the endpoints dont know that behind the scenes all sorts of fragmentation and reassembly are being done. ISPs typically add a TCP MSS-Fixup on outbound tcp connections, but with UDP as the transport for OpenVPN, this wont work.
L'overhead di una connessione PPP e' di 8 bytes, quindi in una normale connessione FTTC mi aspetterei un MTU pari a 1492. Mi sono messo a calcolare il mio (FTTC 200/20 con provider Tiscali):
[tiscali ~]$ ping -M do -s 1432 -c 1 8.8.8.8
PING PUBLIC_SERVER_IP (8.8.8.8) 1432(1460) bytes of data.
1440 bytes from 8.8.8.8: icmp_seq=1 ttl=56 time=38.7 ms
Questo e' il payload massimo che riesco a inviare verso qualsiasi IP e corrisponde ad un MTU pari a 1432+28=1460. Sospettosamente simile alla casistica riportata nel precedente link.
Come se non bastasse i traceroute non funzionano con il mio provider Tiscali:
# traceroute --mtu 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 65000 byte packets
1 _gateway (192.168.1.1) 1.219 ms F=1500 0.876 ms 0.986 ms
2 * F=1492 * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
Ho cercato di approfondire la questione dei presunti tunnel L2TP utilizzati da alcuni provider e sono incappato in questo articolo: http://web.tiscali.it/xadsl/adsl2.htm
Il traffico potrapervenire nella forma di sessioni PPP su ATM, sulle quali il SP operera
autenticazione diretta o in modalitaProxy per conto del Service Owner. Ovvero, le sessioni PPP potranno essere semplicemente multiplate dal SP in tunnel L2TP verso la destinazione finale; oppure ancora il traffico potra
arrivare da bridge o router remoti connessi tramite ATM al SP.
A quanto pare il tunnel L2TP viene utilizzato per multiplexare le sessioni PPP. Come prova del nove ho provato a connettermi allo stesso server openvpn utilizzando la connessione fornita dal provider Dimensione che uso in azienda e i problemi di MTU sono spariti: sia PMTU che traceroute funzionano alla perfezione.
Visto che a questo punto probabilmente abbandonero' Tiscali mi piacerebbe capire quanto sia diffusa questa pratica da parte degli altri operatori ADSL/FTTC.
Provate a fare un ping -M do -s 1464 -c 1 8.8.8.8
e vedete se vi passa.
Provate anche a fare un traceroute --mtu 8.8.8.8
e vedete se dopo il primo host vi compaiono solo asterischi.
A questo punto postate il tipo di connessione (ADSL o FTTC), il nome del provider e scrivete se i traceroute funzionano e se siete in grado di inviare un ping con payload pari a 1464 bytes.
Grazie.