Controlar el ancho de banda por dirección IP en Linux

El problema

Se me planteó el de problema de intentar controlar el ancho de banda de cada uno de mis clientes de la red. De preferencia por dirección IP y me llevó algo de tiempo encontrar una solución.

El propósito es evitar que un cliente acapare de todo el ancho de banda disponible y anule o limite a los demás.

A lo mejor puede sonar algo trivial, considerando que actualmente existen proveedores de internet que pueden llegar a ofrecer 100 Mbps de descarga o cantidades así, pero en donde estoy solo disponemos de 3 Mbps que tengo que hacer rendir.

Lamentablemente por nuestra ubicación no tenemos otras opciones y si las hay son inestables o costosas, así que no queda más que leer para ver que se puede hacer.

IPCop como tal no ofrece ninguna opción similar, de hecho he considerado varias veces en cambiarme a pFsense, pero le tengo aprecio a esta herramienta, nunca me ha fallado y me parece un poco ingrato cambiarlo por otro software.

Read moreControlar el ancho de banda por dirección IP en Linux

Bloquear facebook con las reglas del firewall de ipcop

bloquear facebook con una regla de firewall de ipcop

Bloquear facebook con las reglas del firewall de ipcop no es complicado, si acaso será un poco laborioso dar de alta las direcciones IP y las direcciones mac de los futuros desterrados.

A los administradores de redes no es que nos guste bloquear facebook, muchas veces nos piden que lo hagamos porque hay que reconocer que existen personas que invierten más tiempo en la red social que haciendo sus labores.  Es el eterno distractor en el que muchas veces no esta justificado su uso.

Read moreBloquear facebook con las reglas del firewall de ipcop

Control de tráfico en IPCop 2

semáforo en valencia

Es común que nuestros usuarios con su infinita “habilidad” saturen el ancho de banda de nuestra instalación, a veces basta con la descarga de un archivo mediante bittorrent o un Ares mal configurado para dejar fuera de servicio al resto de los usuarios pero ya no más, no señor (o eso espero).

He pasado una semana haciendo algunos experimentos con el script rc.trafficlimit con buenos resultados.

Es un script muy simple, solo hay que especificar algunos límites, la tarjeta de red en la que que va a aplicar las reglas, ejecutar el script y monitorear los resultados.

Les advierto que les comparto mis mejores resultados, supongo que en sus propias instalaciones la configuración puede variar o se puede ajustar para lograr un rendimiento óptimo. Se aceptan sugerencias y comentarios para mejorarlos.

Descargar el script.

Lo primero es descargar el script, lo pueden hacer desde los foros de IPCop en esta dirección:

Descargar script

http://www.ban-solms.de/downloads/trafficlimit-ipcop-2.0.tar.gz

MD5SUM 719bbbc7a6cbda7349ecf86bcc8b36eb

Este es mi archivo personalizado:

Configurar y ejecutar el script.

Antes de ejecutar el script primero hay que personalizarlo respondiendo 3 preguntas.

¿Cual zona voy a controlar?

Los que manejamos IPCop sabemos que esta divido por zonas de colores, RED para el tráfico externo, GREEN para el tráfico interno, BLUE para el inalámbrico y ORANGE para la zona desmilitarizada.

En mi caso aplique el script a la zona roja

#which device to shape
DEV=$RED_1_DEV

Pero si quieren controlar otras zonas solo tienen que cambiar el valor de DEV a:

  • $GREEN_1_DEV
  • $BLUE_1_DEV

¿Cuales direcciones ip internas voy a controlar?

Esto se ajusta en las siguientes líneas:

# limit IP 192.168.1.2, IPrange 192.168.1.0/24 or complete device 0.0.0.0/0
IP=192.168.0.0/24

Como ven, puede aplicar los límites a una sola tirección IP, a todo un rango de direcciones o a todo el dispostivo, en mi caso aplique el control a todas las direcciones internas de mi red.

Establecer los limites

Esto es lo realmente interesante, establecer algunos límites:

# from IPCop to IP/network
DOWN_MAX=100mbit
DOWN_LIMIT=2mbit
 # from IP/network to IPCop
UP_MAX=100mbit
UP_LIMIT=2mbit

Como pueden ver hay un máximo de subida y de bajada y también sus limites correspondientes.

En este caso establecí como máximo el tope de transmisión de la tarjeta de red y un limite de 2mbit que es a fin de cuentas un valor cercano al final de mi ancho de banda de internet, digamos por ejemplo que tengo 3mbit, luego entonces tendré 1mbit extra libre para cualquier contingencia (o eso quiero pensar).

Para ejecutar el script primero hay que darle los permisos necesarios con:

chmod 755 /etc/rc.d/rc.trafficlimit

y luego para ejecutarlo:

/etc/rc.d/rc.trafficlimit restart

Para monitorear el comportamiento de la red utilizo nload que me permite revisar en tiempo real el comportamiento de las tarjetas de red de IPCop.

nload
nload monitoreando el comportamiento de las tarjetas de red.

Ejecutar el script desde el arranque.

Si todo funciona bien y están contentos con los resultados pueden hacer que el script se ejecute durante el arranque, para eso necesitan agregar al archivo /etc/rc.d/rc.event.local las siguientes líneas.

if [ ${1} == "network" -a ${2} == "up" ]; then
    [ -e /etc/rc.d/rc.trafficlimit ] && /etc/rc.d/rc.trafficlimit restart
fi

Espero que este consejo les sirva, pero no esta demás orar poque Dios nos libre de los usuarios con iniciativa. 😛

Referencias