La regola MSS funziona sul router, ma manca Squid
Applicate la logica MTU alle connessioni TCP separate aperte da un proxy, invece di presupporre che ogni pacchetto attraversi FORWARD.
Un amministratore aggiunge il clamping TCPMSS a FORWARD. Il traffico instradato direttamente migliora, ma i download attraverso l'istanza locale di Squid restano bloccati. La connessione del proxy al sito non è semplicemente la connessione TCP del client che attraversa quella catena.
In un normale proxy forward che termina la connessione, la connessione verso il client termina localmente. Il proxy crea una seconda connessione TCP verso l'origine o il parent. Su Linux, i pacchetti generati per quella connessione seguono il percorso di uscita locale.
Una regola solo per FORWARD può quindi essere perfettamente funzionante e comunque mancare l'handshake che doveva regolare. Mappate la connessione reale e la direzione del SYN prima di scegliere un punto di aggancio. Container o namespace separati possono aggiungere un altro segmento instradato, quindi la posizione corretta dipende da dove gira il processo.
Non mettete il numero PMTU direttamente in MSS
L'MTU di percorso è una dimensione di pacchetto IP. L'MSS TCP descrive il carico utile TCP e deve tenere conto delle intestazioni pertinenti. Allo stesso modo, la lunghezza del carico di un ping non è la lunghezza completa del pacchetto IP. La nota aggiunta di 28 byte è legata a una disposizione IPv4 ICMP echo di base, non a ogni famiglia di indirizzi o incapsulamento.
Il target TCPMSS documenta valori espliciti e clamping PMTU. Il clamping si basa comunque sulle informazioni MTU della rotta; non è prova che la scoperta del percorso sia sana, né sostituisce il permesso dei messaggi ICMP necessari.
Abbinate anche il sintomo alla teoria. Un handshake completato seguito da blocchi sui trasferimenti più grandi può giustificare l'analisi della dimensione dei pacchetti. SYN ripetuti senza risposta o un reset immediato richiedono una spiegazione più ampia; il fallimento di pacchetti piccoli non dimostra un segmento dati troppo grande.
Tenete separati nel resoconto una connessione diretta funzionante e una connessione proxy che fallisce. Possono usare sorgenti, rotte e incapsulamenti diversi, anche dalla stessa macchina.