
로컬 네트워크의 장치 대역폭을 관리자 권한 없이 모니터링, 분석 및 제한하는 도구

이 프로젝트는 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로 실행하세요(원시 소켓, iptables/tc는 루트 권한 필요). 루트 권한이 필요한 것은 설치가 아니라 실행입니다:
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 제외) 어떤 것이든 ~/.config/evillimiter/config.ini(또는 $XDG_CONFIG_HOME/evillimiter/config.ini)의 선택적 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, 포크별 변경 사항에 대한 저작권(c) 2026 DavidsonRafaelK. 일부 권리 보유.
Evil Limiter는 LICENSE 파일에 명시된 대로 MIT 라이선스에 따라 라이선스가 부여됩니다.
| 인수 | 설명 |
|---|
-h | 모든 명령줄 인수를 나열하는 도움말 메시지 표시 |
-i [인터페이스 이름] | 네트워크 인터페이스 지정(지정하지 않으면 자동 해석) |
-g [게이트웨이 IP 주소] | 게이트웨이 IP 주소 지정(지정하지 않으면 자동 해석) |
-m [게이트웨이 MAC 주소] | 게이트웨이 MAC 주소 지정(지정하지 않으면 자동 해석) |
-n [넷마스크 주소] | 넷마스크 지정(지정하지 않으면 자동 해석) |
-f | 현재 iptables 및 tc 구성을 플러시합니다. 패킷이 올바르게 처리되도록 보장합니다. |
--colorless | 색상 출력 비활성화 |
-l [파일 경로], --log-file [파일 경로] | 모든 ok/error 메시지를 이 파일에도 추가 기록(일반 텍스트, 색상 코드 없음). |
--version | 설치된 버전을 출력하고 종료합니다. |
| 명령어 | 설명 |
|---|
scan (--range [IP 범위]) (--intensity [1,2,3]) | 네트워크에서 온라인 호스트를 스캔합니다. 시작 후 가장 먼저 해야 할 작업 중 하나입니다.--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 [시간 ms]) | 제한/차단된 호스트뿐만 아니라 발견된 모든 호스트의 대역폭 사용량을 모니터링합니다(현재 사용량, 총 사용 대역폭 등).--interval은 대역폭 정보가 새로고침되는 간격을 밀리초 단위로 설정합니다(기본값 500ms).예: monitor --interval 1000 |
analyze [ID1,ID2,...] (--duration [시간 s]) | 누가 얼마나 많은 대역폭을 사용하는지 확인하기 위해 제한 없이 호스트의 트래픽을 분석합니다.--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이 한 번의 호출로 독립적인 업로드/다운로드 제한을 위해 up/down 속도(예: 200kbit/1mbit)를 허용합니다netem [ID] --delay [ms] --loss [%](제거하려면 --clear)