他の良い答えに加えて、最近、マングルテーブルを使用して、PPPoE、PPP、およびATMを介してもたらされるトラフィックに起因するMTU(最大伝送ユニット)の不一致を調整する必要がありました。通常の1500バイトのイーサネットフレームから。
通常のように、パイプの両端のシステムは、MTUが通常のデフォルトの1500であるため、そのサイズのIPフレームを送信しようとします。実際の利用可能なペイロードサイズが小さかったので、これはパケットの断片化を引き起こしますが、送信者がパケットを断片化しないように要求することが多く、そのため最終的に完全にドロップされます。
理想的な世界では、パスMTUディスカバリーにより、エンドポイントは必要に応じてMTUを調整できますが、このディスカバリーはICMPに依存しており、私の制御外のネットワークは多くの場合、セキュリティ上の理由でICMPをドロップするように構成されていました。
唯一の選択肢は、TCP SYNパケットを変更してトランスポート層の最大セグメントサイズを小さくするために、ルーターでパケットマングリングを使用することでした。
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452
この種のことは厄介であり、理想的には避けるべきですが、他の選択肢はなく、これで問題は解決しました。
これらの例がマニュアルページと同様に役立つことを願っています。
iptables(8)
manページには、マングルテーブルの使用方法のいくつかの素敵な例を含め、必要な情報のすべてを持っています。