# Flapping Detect

Banned Clients機能に基づき、EMQXは頻繁にログインするクライアントを自動的にバンして、他のクライアントに影響を与える可能性のあるサーバーリソースの消費を防ぎます。これらのクライアントは一定期間バンされます。

なお、自動バンはクライアントIDによってのみバンを行い、ユーザー名やIPアドレスによるバンは行いません。そのため、悪意のあるクライアントが試行ごとにクライアントIDを変更すると攻撃を続ける可能性があります。

この機能はデフォルトで無効になっており、EMQX Dashboardまたは設定ファイルから有効化できます。

## DashboardでFlapping Detectを有効化する

Dashboardにアクセスし、左側のナビゲーションメニューから **Access Control** -> **Flapping Detect** をクリックして **Flapping Detect** ページに入ります。トグルスイッチをクリックしてフラッピング検出機能を有効にします。

- **Detection Time Window**: クライアントのフラッピング挙動を監視する期間を指定できます。デフォルト値は `1` 分です。
- **Max Disconnection Count**: 検出期間内にMQTTクライアントが許容される最大切断回数を指定できます。フラッピング挙動を示すクライアントを正確に識別し対応するための基準を設定できます。デフォルトは `15` 回です。
- **Ban Duration**: クライアントをバンする期間を指定できます。デフォルト値は `5` 分です。

設定が完了したら **Save Changes** をクリックします。

<img src="./assets/flapping-detect.png" alt="フラッピング検出" style="zoom:67%;" />

## 設定ファイルでFlapping Detectを有効化する

以下の設定を追加することで、フラッピング検出機能を有効化できます。

```bash
flapping_detect {

  enable = true

  ## 検出期間内にMQTTクライアントが許容される最大切断回数
  max_count = 15

  ## クライアントのフラッピング挙動を監視する期間
  window_time = 1m

  ## クライアントIDがバンされる期間
  ban_time = 5m

}
```

これらの設定はゾーンごとに個別に指定することも可能です。
