iptables は、最初の応答パケットを送信した後、次の ICMP 要求パケットを ESTABLISHED 状態に一致させます。

iptables は、最初の応答パケットを送信した後、次の ICMP 要求パケットを ESTABLISHED 状態に一致させます。

テスト環境: CentOS 6.3 - カーネル 2.6.32-279.el6.i686, iptables v1.4.7 Win7 ⇔ CentOS Windows は 10pkt/sec の速度で ICMP エコー要求を CentOS に再生します。

iptablesでは、着信icmp要求パケットレートを制限するために、次のルールを追加しました。しかし、それはうまくいきませんでした。最初のルールが最初の着信icmp要求を受け入れ、ホストが応答した後、2番目の規則はすべての後続のicmp要求を受け入れ、2番目の規則は着信icmp要求をESTABLISHEDステータスパケットとして受け入れます。私はこれが言葉にならないと思います。

ここに画像の説明を入力してください。

「Iptables Tutorial 1.2.2」を確認し、次の文を見つけました。

Iptables チュートリアル► ステートマシン

既に説明したように、応答パケットは確立されたと見なされる。しかし、私たちが確信できるのは、ICMP応答後に同じ接続で正当なトラフィックが発生しなくなることです。したがって、応答が Netfilter 構造を完全に通過すると、接続トレース項目は削除されます。上記の各ケースでは、要求はNEWとみなされ、応答はESTABLISHEDと見なされます。

/proc/net/nf_conntrackしかし、最初の応答が送信された後もconntrackエントリが常に存在することがわかりました。

ipv4     2 icmp     1 24 src=192.168.56.1 dst=192.168.56.101 type=8 code=0 id=1 src=192.168.56.101 dst=192.168.56.1 type=0 code=0 id=1 mark=0 secmark=0 use=2

ICMP接続がすでに確立されていても、すべての着信ICMP要求はESTABLISHEDの代わりに新しい状態で処理される必要があると思います。

状態マッチングを正しく理解していない場合は訂正してください。

ベストアンサー1

提案されているように、接続追跡は明らかにICMP「セッション」を記録するので、卓球往復が行われると、パケットはESTABLISHED状態にあると見なされます。

ICMP要求を制限する目的を達成するには、「他のすべてのICMPを削除する」ルール(スクリーンショットの3番目のルール)をレート制限エコー要求を許可するルールの下に移動します。このように、ICMP パケットは ESTABLISHED ルールを考慮しません。

ただし、ICMPパケットはさまざまな問題を転送するためにも使用されるため、特定の種類のすべてのICMPパケットを許可するルールを追加することをお勧めします。その他TCP接続などの問題が発生しないようにするには、「echo-r​​equest」の代わりに使用します(「接続拒否」はICMPを使用して渡されます)。私が提案するルールは次のとおりです。

iptables -A INPUT -p icmp ! --icmp-type echo-request -j ACCEPT

そして、ECHO要求を許可するレート制限ルールのすぐ下に、「他のすべてのICMPを削除」ルールのすぐ上に配置します。

おすすめ記事