Hace unos años que trabajo con m0n0wall. Este Firewall, es muy ligero, construido sobre Free BSD. No tiene que envidiar a cualquier firewall moderno, incluyendo características tan buenas como, VPN, Captive Portal, NAT, soporte de interfaces VLAN (especialmente útil en virtual), soporte para IPv4 e IPv6 y lo que vamos a tratar hoy, Traffic Shaper.
Traffic Shaper es poder limitar el ancho de banda de un Host o Red hacía el exterior y hacía el interior. El tráfico se controla mediante “pipes” o tuberías. Para hacernos una mejor ídea, os dejo aquí con un breve diseño y os explico que es cada elemento de la ilustración, de izquierda a derecha:
El pipe azul más grueso es la velocidad que nos da nuestro ISP, WAN.- Nuestro Firewall m0n0wall
- Tenemos dos pipe más pequeños de 1Mbps de salida y otro de entrada, color rojo y violeta respectivamente.
- Tenemos tres servidores, pero podrían ser segmento de red con usuarios, una sola IP de un usuario, etc.
Pulsa en el enlace inferior para leer más
Una vez hemos visto la Topología global, vamos a diseñar la que nos interesa, restricción por IP, y que cada IP tenga 1Mbps, aunque podría tener cada Server el ancho de banda que deseemos, veamos la siguiente ilustración:
Así es como queremos que nos quede la Infraestructura, que cada Servidor tenga 1Mbps de entrada y de salida, dedicado para él, sin compartir ni competir con el resto.
Configuración en m0n0wall
Llega el momento de ver como se hace esta interesante opción, haremos Login en nuestro m0n0wall e iremos hasta la opción Firewall > Traffic Shaper > Pipes en ella crearemos los dos pipe de la siguiente manera:
Indicaremos en Bandwith el ancho de banda que queremos asignar, en este caso esta regla la aplicaremos desde el origen hacía fuera, tendremos que crear una similar pero en Mask seleccionaremos destination. Para que nos quede de la siguiente manera:
El siguiente paso es crear las reglas que aplican estos pipe que hemos creado a nuestros servidores, para ello iremos a la pestaña Rules, aquí os dejo el ejemplo de la regla de IN hacía fuera:
Vamos a explicar los puntos que debemos modificar:
- Target: Seleccionaremos el pipe que corresponda, en este caso el de IN.
- Interface: Es la interfaz donde se encuentran los servidores, puede ser LAN, una DMZ, o una WAN.
- Protocol: Podríamos seleccionar algún protocolo en concreto, nosotros seleccionaremos any, lo que viene a ser todos.
- Source: Entre las opciones que podemos seleccionar, rango, IP, subnet, etc, seleccionaremos Single host or alias, y escribiremos la IP de origen del servidor.
Escribiremos un Description abajo descriptivo y pulsaremos Save, haremos lo mismo con la regla desde fuera hacía dentro:
Vamos a explicar los puntos que debemos modificar:
- Target: Seleccionaremos el pipe que corresponda, en este caso el de OUT.
- Interface: Es la interfaz donde se encuentran los servidores, puede ser LAN, una DMZ, o una WAN.
- Protocol: Podríamos seleccionar algún protocolo en concreto, nosotros seleccionaremos any, lo que viene a ser todos.
- Destination: Entre las opciones que podemos seleccionar, rango, IP, subnet, etc, seleccionaremos Single host or alias, y escribiremos la IP de destino del servidor.
Pruebas de rendimiento
Lo que todos estamos esperando es el momento de lanzar ese test de velocidad que nos muestre si hemos realizado todo bien, o por el contrario hemos cometido algún fallo.
En este caso, voy a probar el test de velocidad desde la interfaz de Linux, para lanzar un test de velocidad desde linux, deberemos introducir el siguiente comando:
curl -o /dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip
Lo que nos muestra al lanzarlo será algo similar a esto:
Y si nos fueramos a nuestro m0n0wall, exactamente a Status > Traffic Graph, seleccionaremos la Interfaz a la que hemos aplicado el Filtrado de ancho de banda, y veremos que el tráfico se mantiene constante.
¡Enhorabuena! Ya tenemos el Control de Ancho de banda funcionando. Espero que este post os resulte muy útil y deis uso algún día a este potente firewall opensource.
Me he basado en este fantástico tutorial para enseñaros como hacerlo.




No conocía este m0n0wall, me ha parecido muy interesante. Está curiosa la integración que tiene con PHP (por lo que he leído en su web)..
PD: Superfan de que uses tecnologías libres! 🙂
Buenos días MdeMoUcH, m0n0wall es increíble, es una distribución que puedes instalar de forma virtual, como virtual appliance, o físico, tengo muchos físicos también. Permite un sin fin de posibilidades, mira esta del post que interesante por ejemplo, filtrar ancho de banda para usuarios o servers, o equipos. Captive Portal también bastante interesante, ya iré publicando mas How To de este maravilloso software libre 🙂
Estimado jorge, un gusto saludarte, quisiera saber si puedes ayudarme, quisiera limitar el ancho de banda por usuario en el portal cautivo, ya que tengo usuarios normales e invitados, y los invitados quiero restringir mas el ancho de banda, el tema es que como el server monowall lo tengo con dhcp, no puedo filtrar el ancho de banda por ip. alguna idea de como puedo hacerlo. gracias.
saludos.
existe la manera de trabajar esto pero con las VLANs?
Saludos Sergio, que producto usas, supongo que no m0n0wall que ya se quedo sin soporte hace mucho
Hola, estaba haciendo unos ejercicios y me pareció la herramienta muy sencilla, conocerás de un sistema que me ayude a controlar ancho de banda con vlans?
saludos