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

Addons y binarios para IPCop 1.4.x

IPCop Logo

IPCop Logo

Pues parece que algunos addons y binarios para las versión 1.4.x de IPCop las están descontinuando y ya no están en línea. Lamentablemente los binarios (y supongo que algunos addons) no son compatibles entre las versiones 1 y 2.

A solicitud del amigo Carlos Illes que me dejó varios comentarios en este sitio tuve que desenterrar mi antiguo servidor para recuperar los addons y binarios que tenía instalados.

Lista de addons y binarios para descargar

No son todos los que estaban disponibles, pero si son los de batalla. Si todavía tienen un servidor IPCop viejito y necesitas algunos de estos addons los puedes descargar sin problemas y retrasar un poco la actualización.

Como configurar un bypass al proxy transparente de IPCop

Bypass al proxy transparente de ipcop

En esta ocasión les voy a intentar explicar como configurar un bypass al proxy transparente de IPCop 2 para que las peticiones a ciertos dominios salgan directamente a Internet sin pasar por Squid.

El problema

Como les había comentado en días anteriores cambié mi servidor de de IPCop a IPCop 2. El cambio ocurrió prácticamente sin problemas, pero al poco tiempo me encontré con uno que no fue sencillo de solucionar.

Con el rollo de la facturación electrónica tuve un problema con mi PAC[^1], al momento de intentar timbrar una factura con el programa Microsip me arroja el siguiente error:

Ocurrió la siguiente excepción: Connection lost (error code is 10058)

Durante varios días le estuve dando varias vueltas al asunto. A manera de solución rápida desactivé el proxy y se pudo timbrar sin problemas, primera pista Squid.

Llevo usando Squid durante más de 8 años y es la primera vez que tengo un problema de este tipo, vamos, ni con los horripilantes sistemas del gobierno mexicano desarrollados en Java he tenido tantos problemas por algo tan sencillo.

Investigué en varios foros el origen del problema, al parecer existe una mala combinación entre SOAP,IIS7 y Squid en sus ultimas versiones (actualmente IPCop usa la versión 3.4.4), simplemente no se llevan bien y eso provoca el error de conexión.

En un principio quise agregar una opción a Squid para que se llevaran bien, me refiero a ignore_expect_100 on pero no funcionó, siguió apareciendo exactamente el mismo problema.

Como de momento no se iban a llevar bien mi proxy y el servidor de timbrado y apagar el proxy cada vez que se iba a timbrar una factura no era para nada una solución práctica decidí cambiar el enfoque.

Bypass al proxy.

Sabía lo que tenía que hacer. De alguna forma tenía que configurar IPCop para que al momento de que llegara una petición al dominio del servidor de timbrado, en lugar de que se fuera por la ruta normal (Squid como proxy transparente) saliera directamente a internet sin la intermediación del proxy. Creo que ni yo me entendí… en fin, la idea es esa.

Bypass al proxy transparente de ipcop

Decirlo es más fácil que hacerlo, al igual que en otras ocasiones supuse que la solución la iba a encontrar con iptables y así fue.

Encontré un artículo que explicaba como hacer esto en IPCop 1.4.12 así que sólo lo tuve que adaptar ligeramente para que funcionara en IPCop 2.

Para lograrlo hay que editar el archivo /etc/rc.d/rc.firewall.local y agregar algunas reglas de iptables.

El archivo esta dividido en 3 secciones, start, stop y reload. Sólo vamos a modificar las dos primeras.

A manera de ejemplo, si el dominio problemático es xyz.com entonces en la sección de start agrego la siguiente línea:

/sbin/iptables -t nat -A CUSTOMPREROUTING -p tcp --dport 80 -d xyz.com -j ACCEPT

En la sección de stop:

/sbin/iptables -t nat -F CUSTOMPREROUTING

Y la sección reload la dejo tal y como esta.

Al final el archivo completo queda muy similar a este:

Guarden el archivo. Para aplicar los cambios, pueden reiniciar el servidor o mediante una conexión ssh ejecutar el script con /etc/rc.d/rc.firewall.local reload

La comprobación

Para averiguar que todo esta funcionando pueden activar los registros del proxy Menú Servicios – Proxy – Configuración de Registros – Registro Activado y luego revisar los registros en el menú LogsRegistros del proxy.

Visite unas tres o cuatro veces el sitio, no deben de aparecer en el registro porque en teoría nunca pasaron por ahí.

Este consejo se puede aplicar tanto en IPCop 1.x como en IPCop 2.x .Espero que este artículo les sea de utilidad.

Referencias