今日はnftablesおすすめたとえば、動的IP固有のブラックリストを作成するときは、メーターの代わりにコレクションを使用します。マニュアルページv0.98:
set blackhole {
type ipv4_addr
flags dynamic
timeout 30m
}
set flood {
type ipv4_addr
flags dynamic
timeout 1m
}
ip saddr @blacklist drop
ct state new \
add @flood { ip saddr limit rate over 10/minute } \
add @blacklist { ip saddr } \
drop
ここでステートメントの実行フローは何ですか
add
? 2番目は、add
最初に指定されたIPごとの制限に達した場合にのみ実行されますが、なぜですか?最初の項目が実際に何をするのか(つまり、まだテーブルに項目がないか)に関連していますかadd
?add
それとも、これまでに作成された接続のセットと数を見て、どのような役割を果たしているのでしょうか。常に実行されますか
drop
?それともadd
2番目のものを評価した後?なぜ?ルックアップテーブルは、制限を追跡するのにどのように役立ちますか?実際のコレクションの内容を見ると、最後の新規接続などの数値はまったく見えません。タイムスタンプを保存し、実際の計算をカーネルに委任しますか?
なぜ洪水制限間隔を2回指定するのですか(set
timeout
やlimit
ステートメントのように)? 2つの異なる値を使用するのに適したユースケースはありますか?これRed Hat 7 ドキュメントIP固有の接続リミッタの例は次のとおりです。
nft add rule ip filter input ip protocol tcp ct state new, untracked limit rate over 10/minute add @denylist { ip saddr }
為替レートがこのため、私の考えには正確ではないようです。今後つまり、add
1分あたり10個の新しい接続に到達すると、IPをテーブルに追加することを意味します。どの知的財産権?
言語の実際の意味に関する文書へのポインタを提供していただきありがとうございます。