nftablesへの冗長ルールの挿入を防ぐ方法

nftablesへの冗長ルールの挿入を防ぐ方法

nftablesにはこれがあります

table inet my_table {

    chain badips {

        ip saddr 185.165.190.17 counter packets 0 bytes 0 drop

    }
        type filter hook input priority filter; policy drop;
        # Block badips
        counter packets 0 bytes 0 jump badips
}

計画は長いIPリストをbadipsチェーンに入れることです。一意のIPだけを追加するには?同じIPを追加しないようにする方法はありますか?

今私は走る

nft add rule inet my_table badips "ip saddr <IP> counter packets 0 bytes 0 drop"

nftルールでは、チェーンnft create ruleには他に何もありません。

答え1

各IPのルールを追加しないでください。ルールを作成して使用してください。置く。たとえば、

table inet my_table {
        set badips_v4 {
                type ipv4_addr
        }

        set badips_v6 {
                type ipv6_addr
        }

        chain badips {
                type filter hook input priority filter; policy accept;
                counter ip saddr @badips_v4 drop
                counter ip6 saddr @badips_v6 drop
        }
}

これらのルールを使用すると、IP を適切なコレクションに追加してブロックすることができます。

nft add element inet my_table badips_v4 { 185.165.190.17 }

ステートメントを複数回実行すると、複数のエントリは追加されませんset。 aはset一意のアイテムのコレクションなので、アイテムがすでにaにある場合はset再追加することは何もしません。

関連情報