web-dev-qa-db-ja.com

このiptablesルールの意味:tcp flags:0x06 / 0x02 TCPMSSはPMTUにクランプしますか?

この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です。これは何を意味するのでしょうか?

2
quickbooks

これは、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

2
LawrenceC