このiptablesルールの意味:tcp flags:0x06/0x02 TCPMSS clamp to PMTU
?
iptables -vnL
私のDD-WRTルーターでは、FORWARD
チェーンに次のルールが表示されます。TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
。
ACCEPT
またはDROP
の一般的なアクションの代わりに、TCPMSS
です。これは何を意味するのでしょうか?
これは、PMTU検出の問題を防ぐためのかなり標準的なiptables
ルールです。
から this :
...パスMTUディスカバリーは、正常に機能しなくなりました。ネットワーク内のどこかのホップのMTUが制限されている(<1500)という事実を知っている場合、PMTUディスカバリーがこれを見つけることに頼ることはできません。
MTUの他に、最大パケットサイズを設定する別の方法、いわゆる最大セグメントサイズがあります。これは、SYNパケットのTCP Options部分のフィールドです。
最近のLinuxカーネルといくつかのPPPoEドライバー(特に優れたRoaring Penguinドライバー)は、「MSSをクランプする」可能性を備えています。
これの良い点は、MSS値を設定することにより、リモート側に「この値より大きいパケットを送信しようとしないでください」と明確に伝えていることです。これを機能させるためにICMPトラフィックは必要ありません。
悪い点は、それが明らかなハッキングであるということです-パケットを変更することによって「エンドツーエンド」を壊します。そうは言っても、私たちはこのトリックを多くの場所で使用しており、それは魅力のように機能します。
これが機能するためには、少なくともiptables-1.2.1aとLinux2.4.3以降が必要です。基本的なコマンドラインは次のとおりです。
# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu