
ローカルネットワーク上のデバイスの帯域幅を、管理者権限なしで監視・分析・制限するツール

このプロジェクトは bitbrute/evillimiter のメンテナンスフォークです。上流リポジトリはもはやメンテナンスされていないため、このフォークが開発(バグ修正、新機能、互換性アップデート)を継続しています。下記のフォーク固有の変更を参照してください。
ローカルネットワーク上のデバイスの帯域幅(アップロード/ダウンロード)を、物理的または管理アクセスなしで監視・分析・制限するツールです。
evillimiter は ARPスプーフィング と トラフィックシェーピング を利用して、ネットワーク上のホストの帯域幅を制限します。IPv6対応ネットワークでは、NDPスプーフィング がARPスプーフィングと併用され、ホストのIPv6トラフィックも遮断します。これを行わないと、IPv4のみの制限/ブロックを迂回されてしまいます。
Windows対応版をお探しですか?
オープンソースの代替品 EvilLimiter for Windows をチェックしてください。
所有しているネットワーク、またはテストの書面による許可を得たネットワークに対してのみ実行してください。ARPおよびNDPスプーフィングは設計上、他人のトラフィックを妨害します。制御していないネットワークに対してこれを行うことは、ほとんどの地域で違法です。
不足している可能性のあるPythonパッケージは、インストールプロセス中にインストールされます。
evillimiter は起動時に PATH 経由で tc、iptables、sysctl を探し、いずれかが欠けている場合は明確にエラーを出します。具体的には iptables バイナリをシェルアウトします。iptables が iptables-nft 互換シムであるディストリビューションでは通常これで動作しますが、iptables シムがインストールされておらず、純粋にネイティブな nft ルールで管理されているファイアウォールは、このツールが対応する対象ではありません。
git clone https://github.com/DavidsonRafaelK/evillimiter.git
cd evillimiter
python3 -m venv .venv
source .venv/bin/activate
pip install .
sudo で実行します(rawソケット、iptables/tc にはroot権限が必要です)。root権限が必要なのはインストールではなく実行です:
sudo .venv/bin/evillimiter
注意:sudo python3 setup.py install(旧来の手順)は現代のsetuptoolsでは非推奨であり、ModuleNotFoundError: No module named 'setuptools' で完全に失敗することがよくあります。sudo はシステムPythonを実行するため、通常はvenv自身のPython(pip が管理)とは異なり、setuptoolsがインストールされていません。PEP 668 を強制するディストリビューション(Arch、Debian 12+など)では、この理由からvenv外へのインストールは完全にブロックされます。
あるいは、リリースページ から希望のバージョンをダウンロードすることもできます。
ツールを実行するには evillimiter または python3 bin/evillimiter と入力します。
evillimiter は必要な情報(ネットワークインターフェース、ネットマスク、ゲートウェイアドレスなど)を自動的に解決しようとします。
上記のフラグのいずれも(ワンショットアクションであり永続的な設定ではない -f/--flush を除く)に、オプションのiniファイル ~/.config/evillimiter/config.ini(または $XDG_CONFIG_HOME/evillimiter/config.ini)でデフォルト値を設定できます。コマンドラインのフラグは常に設定ファイルより優先されます。
[general]
interface = wlan0
colorless = true
auto_scan = true
log_file = /var/log/evillimiter.log
[watch]
interval = 30
range = 192.168.1.1-192.168.1.50
[watch] は通常、実行時に watch set interval/watch set range(下記参照)で設定される初期値を設定するため、毎セッション再入力する必要がありません。
auto_scan(オプトイン、デフォルトではオフ)は、起動直後に scan と hosts を自動的に実行するため、毎セッション入力する必要がありません。
evillimiter コマンドtc/iptables ルールはIPv4専用だからです。watch(MACで照合)は追跡できません。古い制限は誰も使用しなくなったMAC/IPにバインドされたままになります。そのようなアドレスは hosts テーブルで (random) としてフラグ付けされ(ローカル管理ビットが設定されている)、新しいIDで再出現する可能性のあるデバイスを特定できます。以下はすべて、上流の最終リリース(v1.5.0)に加えてこのフォークで追加されたものです:
limit/block がIPv4だけでなくホストのIPv6トラフィックもカバーします~/.config/evillimiter/config.ini)-l/--log-file--version フラグblock が FORWARD だけでなく INPUT/OUTPUT チェーン(このマシン自体との間のトラフィック)もブロックするようになりましたwatch が各ウォッチ対象ホストのオンライン/オフライン状態を表示し、limit/block 時にホストを自動ウォッチするようになりましたlimit/ が / の失敗を報告し、黙って成功を主張しないようになりました完全なバージョン履歴(上流のものも含む)については CHANGELOG を参照してください。
バグを報告したい、機能をリクエストしたい、またはプルリクエストを送信したいですか? 問題の報告とPRの開始に関するルールについては CONTRIBUTING.md を参照してください。行動規範 もお読みください。
Evil Limiter - 元々は bitbrute によって作成され、現在は DavidsonRafaelK によってメンテナンスされています - は「現状のまま」かつ「すべての欠陥を伴って」提供されます。原作者も現在のメンテナーも、このソフトウェアの安全性、適合性、ウイルスがないこと、不正確さ、誤字、その他の有害なコンポーネントに関していかなる種類の表明または保証も行いません。ソフトウェアの使用には固有の危険が伴い、Evil Limiterがお使いの機器および機器にインストールされている他のソフトウェアと互換性があるかどうかを判断する責任は完全にあなたにあります。また、機器の保護とデータのバックアップについても完全にあなたの責任であり、いずれの当事者も、このソフトウェアの使用、変更、または配布に関連して被る可能性のある損害について責任を負いません。
Copyright (c) 2019-2026 bitbrute、フォーク固有の変更について copyright (c) 2026 DavidsonRafaelK。一部の権利は留保されています。
Evil Limiter は、LICENSEファイル に記載されている通り、MITライセンスの下でライセンスされています。
| 引数 | 説明 |
|---|
-h | すべてのコマンドライン引数を一覧表示するヘルプメッセージを表示します |
-i [インターフェース名] | ネットワークインターフェースを指定します(未指定の場合は自動解決) |
-g [ゲートウェイIPアドレス] | ゲートウェイIPアドレスを指定します(未指定の場合は自動解決) |
-m [ゲートウェイMACアドレス] | ゲートウェイMACアドレスを指定します(未指定の場合は自動解決) |
-n [ネットマスクアドレス] | ネットマスクを指定します(未指定の場合は自動解決) |
-f | 現在のiptablesおよびtc設定をフラッシュします。パケットが正しく処理されることを保証します。 |
--colorless | カラー出力を無効にします |
-l [ファイルパス]、--log-file [ファイルパス] | すべてのok/エラーメッセージをこのファイルにも追記します(プレーンテキスト、カラーコードなし)。 |
--version | インストールされているバージョンを表示して終了します。 |
| コマンド | 説明 |
|---|
scan (--range [IPレンジ]) (--intensity [1,2,3]) | ネットワーク上のオンラインホストをスキャンします。起動後に行う最初の操作の1つです。--range でカスタムIPレンジを指定できます。--intensity は速度と徹底性をトレードオフします:1 は高速、2 は通常(デフォルト)、3 は集中的(より多くの再試行/より長いタイムアウト、パケット損失の多いネットワークに有用)。再度変更するまで維持され、watch のバックグラウンド再接続スキャンにも適用されます。例: scan --range 192.168.178.1-192.168.178.40 またはサブネット全体をスキャンするには単に scan |
hosts (--force) | 以前にスキャンしたすべてのホスト/デバイスと基本情報を表示します。操作に必要な各ホストのIDを表示します。--force はターミナルに収まらない場合でもテーブルを強制的に表示します。 |
limit [ID1,ID2,...] [レート] (--upload) (--download) | 指定されたIDに関連付けられたホストの帯域幅を制限します。レートがインターネット速度を決定します。ホストは自動的にウォッチリストに追加されます。--upload は送信トラフィックのみを制限します。--download は受信トラフィックのみを制限します。有効なレート: bit、kbit、mbit、gbitレートは独立したアップロード/ダウンロードレートのために up/down(例:200kbit/1mbit)も指定可能 - 両方向でのみ有効(--upload/--download なし)。例: limit 4,5,6 200kbit または limit all 1gbit または limit 4 200kbit/1mbit |
block [ID1,ID2,...] (--upload) (--download) | 指定されたIDに関連付けられたホストのインターネット接続をブロックします。ホストは自動的にウォッチリストに追加されます。--upload は送信トラフィックのみを制限します--download は受信トラフィックのみを制限します。 |
netem [ID1,ID2,...] (--delay [ms]) (--loss [%]) (--clear) | ホストにパケット遅延/損失をエミュレートします - ホストが既に limit されている必要があります。既存のレート制限tcクラスにアタッチするためです。ホストが制限されている方向(複数可)にアタッチします。個別の方向フラグはありません。--clear はレート制限を残したままnetemを削除します。例: netem 4 --delay 200ms --loss 10% または netem 4 --clear |
free [ID1,ID2,...] | 指定されたIDに関連付けられたホストの制限/ブロックを解除します。すべての追加の制限を削除します。 |
add [IP] (--mac [MAC]) | カスタムホストをホストリストに追加します。MACアドレスは自動的に解決されるか、手動で指定できます。 例: add 192.168.178.24 または add 192.168.1.50 --mac 1c:fc:bc:2d:a6:37 |
monitor (--interval [ミリ秒]) | 制限/ブロックされたホストだけでなく、発見されたすべてのホストの帯域幅使用量を監視します(現在の使用量、総使用帯域幅など)。--interval は帯域幅情報が更新される間隔をミリ秒で設定します(デフォルト500ms)。例: monitor --interval 1000 |
analyze [ID1,ID2,...] (--duration [秒]) | 誰がどれだけの帯域幅を使用しているかを判断するために、制限せずにホストのトラフィックを分析します。--duration は分析の時間を秒で指定します(デフォルト30秒)。例: analyze 2,3 --duration 120 |
watch | 現在のウォッチステータスを表示します。各ウォッチ対象ホストの最後のスキャン時点でのオンライン/オフライン状態を含みます。ウォッチ機能はホストが異なるIPアドレスで再接続したことを検出します。 ホストは limit または block 時に自動的にウォッチリストに追加されます。 |
watch add [ID1,ID2,...] | 指定されたホストをウォッチリストに追加します。 例: watch add 6,7,8 |
watch remove [ID1,ID2,...] | 指定されたホストをウォッチリストから削除します。 例: watch remove all |
watch set [属性] [値] | 現在のウォッチ設定を変更します。以下の属性を変更できます:range は再接続をスキャンするIPレンジです。interval は各ネットワークスキャン間の待機時間(秒)です。例: watch set interval 120 |
clear | ターミナルウィンドウをクリアします。 |
quit | アプリケーションを終了します。 |
?、help | これと同様のコマンド情報を表示します。 |
blocktciptablesByteValue フォーマットを修正~/.config/evillimiter/history)、↑/↓でナビゲート可能hosts テーブルが制限/ブロックされたホストに割り当てられたレート/方向を表示(単なる「Limited」/「Blocked」ではなく)scan --intensity [1,2,3](高速/通常/集中的)scan と hosts を自動実行する auto_scan 設定オプションmonitor が制限/ブロックされたホストだけでなく、発見されたすべてのホストを追跡limit が1回の呼び出しで独立したアップロード/ダウンロード制限のために up/down レート(例:200kbit/1mbit)を受け付けnetem [ID] --delay [ms] --loss [%](削除するには --clear)