Oltre alle altre buone risposte, di recente ho dovuto utilizzare la tabella mangle per correggere le discrepanze MTU (unità di trasmissione massima) causate dal traffico trasportato attraverso PPPoE, PPP e ATM, ognuna delle quali aggiunge un overhead che riduce il payload disponibile per IP dai soliti 1500 byte di un frame Ethernet.
I sistemi su ciascuna estremità del tubo, come è normale, avrebbero il loro MTU al valore predefinito predefinito di 1500 e quindi avrebbero cercato di inviare frame IP così grandi. Poiché la dimensione effettiva del payload disponibile era inferiore, ciò avrebbe causato la frammentazione dei pacchetti, tranne per il fatto che spesso il mittente richiede che i pacchetti non vengano frammentati e, di conseguenza, finiscono per essere eliminati completamente.
In un mondo ideale, il rilevamento MTU del percorso avrebbe consentito agli endpoint di adeguare il loro MTU in base alle esigenze, ma questa scoperta dipende dall'ICMP e le reti al di fuori del mio controllo erano spesso configurate per eliminare l'ICMP per motivi di sicurezza.
L'unica scelta era quella di utilizzare la manipolazione dei pacchetti nel mio router al fine di modificare i pacchetti TCP SYN per ridurre la dimensione massima del segmento a livello di trasporto:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452
Questo genere di cose è disordinato e idealmente dovrebbe essere evitato, ma non avevo altre opzioni e questo ha risolto il problema.
Spero che questi esempi aiutino, così come la pagina man.
iptables(8)
pagina man contiene tutte le informazioni che desideri, inclusi alcuni esempi di utilizzo della tabella mangle.