iptablesは複数の-dフラグを受け入れません。

iptablesは複数の-dフラグを受け入れません。

iptablesを使用してファイルへのすべてのアウトバウンド接続を記録しようとしています。

私のルールは次のとおりです。

-A OUTPUT ! -o lo ! --destination 127.0.0.1  -m state --state NEW -j LOG --log-prefix "new_connection " --log-level 7

しかし、別のIPターゲット(マルチキャスト)を追加した場合、私のルールは次のようになります。

-A OUTPUT ! -o lo ! --destination 127.0.0.1 ! --destination 239.192.0.0 -m state --state NEW -j LOG --log-prefix "new_connection " --log-level 7

次のエラーが発生します。

multiple -d flags not allowed

私の質問はこのエラーが意味するものではありませんが、私のルールから複数のIPアドレスをどのように除外しますか? 2つの条件

! --destination 127.0.0.1

そして

! --destination 239.192.0.0

相互に排他的であるため、2つのルールがあるのは実際にはルールがまったくないようです(もっと悪いことは、ほぼ2倍も多くのログを得ることになるからです)。

それでは、「AND」演算子はありますか?

ベストアンサー1

このような問題の場合は、新しいチェーンを定義してチェーン間を移動できます。たとえば、次の操作を使用して、チェーンを追加して記録したくないLOGGINGチェーンの先頭にパケットを一致させることができますRETURN

$ iptables -N LOGGING
$ iptables -A LOGGING -d 127.0.0.0/8 -j RETURN
$ iptables -A LOGGING -d 239.192.0.0/16 -j RETURN
$ iptables -A LOGGING -j LOG 
$ iptables -A OUTPUT -j LOGGING

これにより、OUTPUTチェーンを通過するすべてのパケットが最初にチェーンを通過し、LOGGING一致しないパケット127.0.0.0/8はすべて239.192.0.0/16記録され、次に制御権が返されますOUTPUT

おすすめ記事