
Herramienta que monitorea, analiza y limita el ancho de banda de los dispositivos en la red local sin acceso administrativo.

Este proyecto es un fork mantenido de bitbrute/evillimiter. El repositorio original ya no se mantiene, por lo que este fork continúa su desarrollo: corrección de errores, nuevas funciones y actualizaciones de compatibilidad. Consulta Cambios específicos del fork más abajo.
Una herramienta para monitorear, analizar y limitar el ancho de banda (subida/descarga) de los dispositivos de tu red local sin acceso físico ni administrativo.
evillimiter emplea suplantación ARP y modelado de tráfico para limitar el ancho de banda de los hosts de la red. En redes con IPv6 habilitado, se utiliza la suplantación NDP junto con la suplantación ARP para cortar también el tráfico IPv6 de un host, que de otro modo eludiría el límite/bloqueo solo-IPv4.
¿Buscas una versión compatible con Windows?
Consulta la alternativa de código abierto EvilLimiter para Windows.
Ejecuta esto únicamente contra una red que sea tuya o sobre la que tengas permiso por escrito para realizar pruebas. La suplantación ARP y NDP interrumpe el tráfico de otras personas por diseño, y hacerlo en una red que no controlas es ilegal en la mayoría de los lugares.
Los paquetes de Python que posiblemente falten se instalarán durante el proceso de instalación.
evillimiter localiza tc, iptables y sysctl mediante PATH al iniciar y muestra errores claros si falta alguno. Ejecuta específicamente el binario iptables; en distribuciones donde iptables es un shim de compatibilidad iptables-nft esto generalmente funciona, pero un firewall gestionado puramente mediante reglas nft nativas sin shim iptables instalado no es algo con lo que esta herramienta interactúe.
git clone https://github.com/DavidsonRafaelK/evillimiter.git
cd evillimiter
python3 -m venv .venv
source .venv/bin/activate
pip install .
Ejecútalo con sudo (los sockets crudos, iptables/tc requieren root): es la ejecución la que necesita root, no la instalación:
sudo .venv/bin/evillimiter
Nota: sudo python3 setup.py install (las instrucciones antiguas) está obsoleto en setuptools modernos y a menudo falla directamente con ModuleNotFoundError: No module named 'setuptools': sudo ejecuta el Python del sistema, que normalmente no tiene setuptools instalado, a diferencia del Python propio del venv que pip gestiona por ti. En distribuciones que aplican PEP 668 (Arch, Debian 12+, ...), instalar fuera de un venv está bloqueado por completo por esta razón.
Alternativamente, puedes descargar una versión deseada desde la página de Releases.
Escribe evillimiter o python3 bin/evillimiter para ejecutar la herramienta.
evillimiter intentará resolver automáticamente la información requerida (interfaz de red, máscara de red, dirección de puerta de enlace, ...) por sí mismo.
Cualquiera de las opciones anteriores (excepto -f/--flush, que es una acción de una sola ejecución, no una preferencia persistente) puede tener un valor predeterminado en un archivo ini opcional en ~/.config/evillimiter/config.ini (o $XDG_CONFIG_HOME/evillimiter/config.ini). Una opción de línea de comandos siempre tiene prioridad sobre el archivo de configuración.
[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] establece los valores iniciales que normalmente se configuran en tiempo de ejecución mediante watch set interval/watch set range (ver más abajo), para que no sea necesario volver a introducirlos en cada sesión.
auto_scan (opt-in, desactivado por defecto) ejecuta scan y luego hosts automáticamente justo después del inicio, para que no tengas que escribirlos en cada sesión.
evillimitertc/iptables que modelan el tráfico son solo-IPv4.watch (que empareja por MAC) no puede seguirlos; la restricción antigua queda vinculada a una MAC/IP que ya nadie usa. Dichas direcciones se marcan como (random) en la tabla hosts (su bit de administración local está activado) para que puedas detectar un dispositivo que probablemente reaparezca con una identidad nueva.Todo lo siguiente se añadió en este fork, sobre la última versión del upstream (v1.5.0):
limit/block también cubran el tráfico IPv6 de un host en lugar de solo IPv4~/.config/evillimiter/config.ini) para opciones predeterminadas y configuración de vigilancia-l/--log-file para persistir mensajes ok/error en un archivo--versionblock ahora también bloquea las cadenas INPUT/OUTPUT (tráfico hacia/desde esta misma máquina), no solo FORWARDwatch ahora muestra el estado En línea/Desconectado de cada host vigilado y vigila automáticamente los hosts al ejecutar limit/blockConsulta CHANGELOG para el historial completo de versiones, incluido el del upstream.
¿Quieres informar de un error, solicitar una función o enviar un pull request? Consulta CONTRIBUTING.md para conocer las reglas sobre cómo presentar issues y abrir PRs. Lee también el Código de Conducta.
Evil Limiter, creado originalmente por bitbrute y ahora mantenido por DavidsonRafaelK, se proporciona "tal cual" y "con todos sus defectos". Ni el autor original ni el mantenedor actual hacen declaraciones ni garantías de ningún tipo sobre la seguridad, idoneidad, ausencia de virus, inexactitudes, errores tipográficos u otros componentes dañinos de este software. Existen peligros inherentes en el uso de cualquier software, y eres el único responsable de determinar si Evil Limiter es compatible con tu equipo y con el resto del software instalado en él. También eres el único responsable de la protección de tu equipo y de la copia de seguridad de tus datos, y ninguna de las partes será responsable de los daños que puedas sufrir en relación con el uso, modificación o distribución de este software.
Copyright (c) 2019-2026 por bitbrute, copyright (c) 2026 por DavidsonRafaelK por los cambios específicos del fork. Algunos derechos reservados.
Evil Limiter está licenciado bajo la Licencia MIT tal como se indica en el archivo LICENSE.
| Argumento | Explicación |
|---|
-h | Muestra el mensaje de ayuda con todos los argumentos de línea de comandos |
-i [Nombre de interfaz] | Especifica la interfaz de red (se resuelve si no se especifica) |
-g [Dirección IP de puerta de enlace] | Especifica la dirección IP de la puerta de enlace (se resuelve si no se especifica) |
-m [Dirección MAC de puerta de enlace] | Especifica la dirección MAC de la puerta de enlace (se resuelve si no se especifica) |
-n [Dirección de máscara de red] | Especifica la máscara de red (se resuelve si no se especifica) |
-f | Vacía la configuración actual de iptables y tc. Garantiza que los paquetes se gestionen correctamente. |
--colorless | Desactiva la salida con colores |
-l [Ruta de archivo], --log-file [Ruta de archivo] | También añade cada mensaje ok/error a este archivo (texto plano, sin códigos de color). |
--version | Imprime la versión instalada y sale. |
| Comando | Explicación |
|---|
scan (--range [Rango IP]) (--intensity [1,2,3]) | Escanea tu red en busca de hosts en línea. Una de las primeras cosas que hacer tras el inicio.--range permite especificar un rango IP personalizado.--intensity intercambia velocidad por exhaustividad: 1 rápido, 2 normal (predeterminado), 3 intenso (más reintentos/tiempo de espera más largo, útil en redes con pérdidas). Se mantiene hasta que se cambie de nuevo; también se aplica a los escaneos de reconexión en segundo plano de watch.Por ejemplo: scan --range 192.168.178.1-192.168.178.40 o simplemente scan para escanear toda la subred. |
hosts (--force) | Muestra todos los hosts/dispositivos previamente escaneados e información básica. Muestra un ID para cada host que es necesario para la interacción.--force fuerza la visualización de la tabla, incluso cuando no cabe en la terminal. |
limit [ID1,ID2,...] [Velocidad] (--upload) (--download) | Limita el ancho de banda del/los host(s) asociados al ID especificado. La velocidad determina la velocidad de internet. El/los host(s) se añaden automáticamente a la lista de vigilancia.--upload limita solo el tráfico saliente.--download limita solo el tráfico entrante.Velocidades válidas: bit, kbit, mbit, gbitLa velocidad también puede ser subida/bajada (p. ej. 200kbit/1mbit) para velocidades de subida/descarga independientes: solo válida con ambas direcciones (sin --upload/--download).Por ejemplo: limit 4,5,6 200kbit o limit all 1gbit o limit 4 200kbit/1mbit |
block [ID1,ID2,...] (--upload) (--download) | Bloquea la conexión a internet del/los host(s) asociados al ID especificado. El/los host(s) se añaden automáticamente a la lista de vigilancia.--upload limita solo el tráfico saliente --download limita solo el tráfico entrante. |
netem [ID1,ID2,...] (--delay [ms]) (--loss [%]) (--clear) | Emula retardo/pérdida de paquetes en el/los host(s): requiere que el host ya esté limited, ya que se adjunta a la clase tc de limitación de velocidad existente. Se adjunta a la(s) dirección(es) en la(s) que el host esté limitado; no hay una opción de dirección separada.--clear elimina netem dejando la limitación de velocidad en su lugar.Por ejemplo: netem 4 --delay 200ms --loss 10% o netem 4 --clear |
free [ID1,ID2,...] | Quita el límite/bloqueo del/los host(s) asociados al ID especificado. Elimina todas las restricciones adicionales. |
add [IP] (--mac [MAC]) | Añade un host personalizado a la lista de hosts. La dirección MAC se resolverá automáticamente o se puede especificar manualmente. Por ejemplo: add 192.168.178.24 o add 192.168.1.50 --mac 1c:fc:bc:2d:a6:37 |
monitor (--interval [tiempo en ms]) | Monitorea el uso de ancho de banda de cada host descubierto, no solo de los limitados/bloqueados (uso actual, ancho de banda total utilizado, ...).--interval establece el intervalo tras el cual se actualiza la información de ancho de banda en milisegundos (500ms por defecto).Por ejemplo: monitor --interval 1000 |
analyze [ID1,ID2,...] (--duration [tiempo en s]) | Analiza el tráfico del/los host(s) sin limitar para determinar quién usa cuánto ancho de banda.--duration especifica la duración del análisis en segundos (30s por defecto).Por ejemplo: analyze 2,3 --duration 120 |
watch | Muestra el estado actual de vigilancia, incluido el estado En línea/Desconectado de cada host vigilado según el último barrido de escaneo. La función de vigilancia detecta cuando un host se reconecta con una dirección IP diferente. Los hosts se añaden a la lista de vigilancia automáticamente al ejecutar limit o block. |
watch add [ID1,ID2,...] | Añade el/los host(s) especificado(s) a la lista de vigilancia. Por ejemplo: watch add 6,7,8 |
watch remove [ID1,ID2,...] | Elimina el/los host(s) especificado(s) de la lista de vigilancia. Por ejemplo: watch remove all |
watch set [Atributo] [Valor] | Cambia la configuración de vigilancia actual. Se pueden cambiar los siguientes atributos:range es el rango IP a escanear para reconexiones.interval es el tiempo de espera entre cada escaneo de red (en segundos).Por ejemplo: watch set interval 120 |
clear | Limpia la ventana de la terminal. |
quit | Sale de la aplicación. |
?, help | Muestra información de comandos similar a esta. |
limit/block informan de fallos de tc/iptables en lugar de afirmar silenciosamente el éxitoByteValue para totales en el rango de terabytes~/.config/evillimiter/history), navegable con ↑/↓hosts muestra la velocidad/dirección asignada para hosts limitados/bloqueados, en lugar de solo "Limited"/"Blocked"scan --intensity [1,2,3] para intercambiar velocidad de escaneo por exhaustividad (rápido/normal/intenso)auto_scan para ejecutar scan y luego hosts automáticamente al iniciomonitor rastrea cada host descubierto, no solo los limitados/bloqueadoslimit acepta velocidades subida/bajada (p. ej. 200kbit/1mbit) para límites de subida/descarga independientes en una sola llamadanetem [ID] --delay [ms] --loss [%] para emular retardo/pérdida de paquetes en un host ya limitado (--clear para eliminarlo)