目的:送信元IPおよび宛先ポート速度が1秒あたり200パケットを超える超過パケットを処理します。例:
1s, 2s, 3s...: IP 1.1.1.1 to MyServer:80
[1秒に201回発生]
送信元IPポートと宛先ポートの1秒あたり200以上のパケット転送速度でパケットを計算したいと思います。デフォルトでは、http(下のチェーン)に対してのみこれを行いますが、機能しません。
ip saddr 191.185.17.156 counter packets 100 bytes 4920
meter http size 65535 { ip saddr . tcp dport limit rate over 200/second } add @blocklist { ip saddr } counter packets 73 bytes 3576
1.) 登録パケットが 100 個だけあるのに対し 2.) 73 個の登録パケットがあるが、そのうち 100 が 200 より小さいので 2 のカウンタは 200 の速度を超えるパケットがないので 0 でなければなりません。 per Saddr:dport 1秒あたりのパケット数。
table netdev filter {
set whitelist {
type ipv4_addr
elements = { 186.248.79.100 }
}
set blocklist {
type ipv4_addr
size 65535
flags dynamic,timeout
timeout 30s
}
chain ingress {
type filter hook ingress device "eth0" priority -450; policy accept;
ip saddr @whitelist accept
ip daddr 10.0.0.192 jump input
ip daddr != 10.0.0.192 jump forward
}
chain http {
ip saddr 191.185.17.156 counter
meter http size 65535 { ip saddr . tcp dport limit rate over 200/second } add @blocklist { ip saddr } counter
}
chain forward { }
chain input {
tcp dport vmap { 8000 : jump portainer, 9443 : jump portainer }
tcp dport vmap { 80 : jump http }
}
}
私も次のことを試しました。
ip saddr 191.185.17.156 meter http size 65535 { ip saddr . tcp dport limit rate over 200/second } add @blocklist { ip saddr } counter
他のIPからパケットを受信していると思いましたが、残念ながらそうではありませんでした。