Uno de los recursos mas importantes cuando se tiene un servicio de Internet es el consumo de ancho de banda, para ello es necesario tomar ciertas politicas que nos llevara a la administracion de las QoS. En un servidor GNU/Linux podemos limitar el ancho de banda de las descargas o del trafico entrante y de como administrar la conexion a internet para que sea mas eficiente.
Aqui proporcionaremos de manera sencilla como limitar el trafico entrante evitando asà que los usuarios de nuestra LAN consuman todo el ancho de banda de nuestra conexión a Internet.
Esto resulta útil cuando nuestra conexión es lenta o nuestros usuarios suelen descargar toneladas de mp3s, archivos en formato iso, inclusive las últimas distribuciones de Linux.
Supongamos que tenemos un enlace sea cual sea (Ds0,E1 o 2 E1's) y que asu vez una serie de redes privadas con 60 AP's. Nuestro GW es un GNU/Linux y por ende debemos de tener un buen plan de "distribucion" y/o "prioridad" para distribuir el ancho de banda.
Aqui se explicara como usar el script CBQ que Linux lo incluye por default por lo tanto no se hace ningún cambio adicional al kernel como es en el caso del traffic shaper (Que solo podra ayudarnos a configurar una interface a limitar, no por IP como es el caso de CBQ).
CBQ es mas poderoso de lo que creemos, con este podemos controlar puertos, determinar el horario especifico para usar el ancho de banda a ser utilizado, compartirlo y controlar programas que consumen demasiado ancho de banda por ejemplo (iMesh, Edonkey, Morpheous, Audiogalaxy, etc).
Se sabe que CBQ trabaja con archivos de configuración que se localizan en el directorio /etc/sysconfig/cbq. Los archivos de configuración se tienen que llamar cbq-X.nombre donde x es un numero en hexadecimal de 4 digitos que indica el orden de arranque respecto a los demás archivos de configuración (hay uno por servicio normalmente).
Los archivos de configuración deberan de tener un formato definido, por ejemplo:
- cbq-0001.ftp-sedecap, download
- cbq-0002.http-cobaep, download
- cbq-0128.campus.backbone-client, download
- cbq-0129.client-backbone, upload
donde cada archivo de configuración debe tener las siguientes reglas obligatorias:
DEVICE=Interfaz,Velocidad-Interfaz,Peso RATE=velocidad WEITH=peso/10 PRIO=prioridad RULE=ip o red a ser controlada
En el caso de que tengamos 20 redes privadas en un solo gateway y queremos darle solo 40 Kbps de upload, armamos la configuracion, el rate, el weight, etc y colocaremos 192.168.0.0/24
Parámetro DEVICE DEVICE=Interfaz,Velocidad-Interfaz,Peso Ejemplo: DEVICE=eth0,10Mbit,1Mbit
Interfaz: Nombre de la Interfaz eth0, eth1, ppp0, wvlan0... Velocidad: Es la velocidad del dispositivo Ejemplo: Ethernet 10Mbit o 100 Mbit...
Peso: Es un parámetro de ajuste que debera ser proporcional a la Velocidad-Interfaz, siempre vamos a darle el 10%.
Parametro RATE Velocidad
Ejemplo: RATE=5Mbit
Velocidad-Interfaz, podemos usar Kbit, Mbit o Mbps.
Parametro WEIGHT WEIGHT=(peso/10) Ejemplo: WEIGHT=500Kbit
Otro parámetro que debe ser proporcional a la Velocidad-Interfaz. Peso = (Velocidad-Interfaz) / 8 Parametro PRIO PRIO=(1-8) Ejemplo: PRIO=5
Prioridad del tráfico para la clase, cuando mayor sea el número, menor es la prioridad, la prioridad 5 es un valor excelente, de hecho, la última versión de CBQ.INIT viene con prioridad 5 por defecto.
Parámetro RULE RULE=[[saddr[/prefix]][:port],][daddr[/prefix]][:port]
Los parámetros anteriores hacen un filtro para el trafico de cada una de las clases, podemos usar múltiplos compuestos de reglas de archivos de configuración.
Por ejemplo
- RULE=10.1.1.0/24:80 selecciona el trafico que va al puerto 80 de la red 10.1.1.0
- RULE=10.2.2.5 selecciona todo el trafico del host 10.2.2.5
- RULE=10.2.2.5:20/0xfffe selecciona el trafico que va a los puertos 20 y 21 en el host 10.2.2.5 (¿alguien lo entiende?)
- RULE=:25,10.2.2.128/26:5000 selecciona el trafico que viene desde cualquier ip en el puerto 25 al puerto 5000 de la red 10.2.2.128.
- RULE=10.5.5.5:80 Selecciona el trafico que viene del puerto 80 del host 10.5.5.5
Parámetro TIME Este parámetro limita el acceso en horarios predeterminados: TIME=(hora inicial)-(hora final);(velocidad)/(velocidad/10)
Por ejemplo: TIME=18:00-06:00;256Kbit/25Kbit
Otros parámetros: BOUNDED: Si esta definido como 'yes' el shaper, sera mantenido siempre que haya ancho de banda disponible.
ISOLATED: Si esta definido como 'yes' el shaper NO tomara ancho de banda compartido.
EJEMPLOS:
DEVICE=eth0,10Mbit,1Mbit RATE=128Kbit WEIGHT=10Kbit PRIO=5 RULE=192.128.1.0/24
En este ejemplo, dice que el tráfico de la interface eth0 es de 10 Mbit, a través de la red 192.168.1.0, que a su vez, será procesado con prioridad 5 a través de un shaping de 128 Kbit.
Nótese que con este archivo de configuración SOLO estamos limitando el ancho de banda de salida. Para limitar el ancho de banda en los dos sentidos, debemos configurar, la otra interface.... DEVICE=eth1,10Mbit,1Mbit RATE=28Kbit WEIGHT=2Kbit PRIO=5 RULE=192.168.1.0/24
Ejemplos Reales: 
Eth0,es mi conexion a internet Eth1, es mi LAN
Aqui anexo los archivos de configuración para los diferentes servicios que se tienen en la Universidad, estos archivos estan situados en el directorio /etc/sysconfig/cbq y el script se puede bajar de aqui o si lo prefiere directamente instalar el paquete iproute. Archivos de SALIDA, Tarjeta ETH0, que esta conectado a Internet
#cbq-0003.Web_Out_eth0_256K # DEVICE=eth0,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8 RATE=256Kbit #Velocidad WEIGHT=32Kbit #Velocidad / 8 PRIO=5 #Prioridad 1-8, donde el 8 es mas baja RULE=,:80 RULE=,201.151.249.101 BOUNDED=yes ISOLATED=yes # -------------------
#cbq-0004.Correo_Out_eth0_256K # DEVICE=eth0,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8 RATE=256Kbit #Velocidad WEIGHT=32Kbit #Velocidad / 8 PRIO=5 #Prioridad 1-8, donde el 8 es mas baja RULE=,:25 RULE,:110 RULE=,80 RULE=,:143 RULE=,:22 RULE=,53 RULE=,201.151.249.98 BOUNDED=yes ISOLATED=yes # -------------------
#cbq-0005.P2P_Out_eth0_15K # DEVICE=eth1,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8 RATE=15Kbit #Velocidad WEIGHT=1Kbit #Velocidad / 8 PRIO=2 #Prioridad 1-8, donde el 8 es mas baja TIME=01:00-07:59;110Kbit/11Kbit RULE=,:21 RULE=,201.151.249.100 RULE=,:1214 RULE=,:4661 RULE=,:4662 RULE=,:4665 RULE=,:4666 RULE=,:4667 RULE=,:4668 RULE=,:4669 RULE=,:4610 RULE=,:41000 RULE=,:41001 RULE=,:41002 RULE=,:41003 RULE=,:41004 RULE=,:41005 RULE=,:41006 RULE=,:41007 RULE=,:41008 RULE=,:41009 RULE=,:41010 RULE=,:41011 RULE=,:41012 RULE=,:41013 RULE=,:41014 RULE=,:41015 RULE=,:41016 RULE=,:41017 RULE=,:41018 RULE=,:41019 RULE=,:41020 RULE=,:41021 RULE=,:41022 RULE=,:41023 RULE=,:41024 RULE=,:41025 RULE=,:41026 RULE=,:41027 RULE=,:41028 RULE=,:41029 RULE=,:41030 BOUNDED=yes ISOLATED=yes # -------------------
Archivos de ENTRADA, Tarjeta ETH1, que esta conectado a la LAN
#cbq-0006.P2P_In_eth1_15K # DEVICE=eth1,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8 RATE=15Kbit #Velocidad WEIGHT=1Kbit #Velocidad / 8 PRIO=3 #Prioridad 1-8, donde el 8 es mas baja #Windows Media Player. RULE=:1755,192.168.1.0/24 #Real Player uses TCP port 554, for UDP it uses different ports, #but generally RealAudio in UDP doesn't consume much bandwidth. RULE=:554,192.168.1.0/24 RULE=:7070,192.169.1.0/24 #Napster uses ports 6699 and 6700, maybe some other? RULE=:6699,192.168.1.0/24 RULE=:6700,192.168.1.0/24 #Audiogalaxy uses ports from 41000 to as high as probably 41900, #there are many of them, so keep in mind I didn't list all of #them here. Repeating 900 nearly the same lines would be of course #pointless. We will simply cut out ports 410031-41900 using #ipchains or iptables. RULE=:41000,192.168.1.0/24 RULE=:41001,192.168.1.0/24 RULE=:41000,192.168.1.0/24 RULE=:41001,192.168.1.0/24 RULE=:41002,192.168.1.0/24 RULE=:41003,192.168.1.0/24 RULE=:41004,192.168.1.0/24 RULE=:41005,192.168.1.0/24 RULE=:41006,192.168.1.0/24 RULE=:41007,192.168.1.0/24 RULE=:41008,192.168.1.0/24 RULE=:41009,192.168.1.0/24 RULE=:41010,192.168.1.0/24 RULE=:41011,192.168.1.0/24 RULE=:41012,192.168.1.0/24 RULE=:41013,192.168.1.0/24 RULE=:41014,192.168.1.0/24 RULE=:41015,192.168.1.0/24 RULE=:41016,192.168.1.0/24 RULE=:41017,192.168.1.0/24 RULE=:41018,192.168.1.0/24 RULE=:41019,192.168.1.0/24 RULE=:41020,192.168.1.0/24 RULE=:41021,192.168.1.0/24 RULE=:41022,192.168.1.0/24 RULE=:41023,192.168.1.0/24 RULE=:41024,192.168.1.0/24 RULE=:41025,192.168.1.0/24 RULE=:41026,192.168.1.0/24 RULE=:41027,192.168.1.0/24 RULE=:41028,192.168.1.0/24 RULE=:41029,192.168.1.0/24 RULE=:41030,192.168.1.0/24 RULE=:41030,192.168.1.0/24 #Some clever users can connect to SOCKS servers when using Napster, #Audiogalaxy etc.; it's also a good idea to do so #when you run your own SOCKS proxy RULE=:1080,192.168.1.0/24 #Add any other ports you want; you can easily check and track #ports that programs use with IPTraf #RULE=:port,192.168.1.0/24 BOUNDED=yes ISOLATED=yes # -------------------
#cbq-0007.PROXY_In_eth1_35K # DEVICE=eth1,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8 RATE=35Kbit #Velocidad WEIGHT=3Kbit #Velocidad / 8 PRIO=2 #Prioridad 1-8, donde el 8 es mas baja RULE=:8080,192.168.1.248 BOUNDED=yes ISOLATED=yes # -------------------
#cbq-0008.FTP_In_eth1_15K # DEVICE=eth1,10Mbit,1Mbit # Interface,Vel-Interface,Vel-Interface/8 RATE=15Kbit #Velocidad WEIGHT=1Kbit #Velocidad / 8 PRIO=5 #Prioridad 1-8, donde el 8 es mas baja RULE=:20,192.168.1.0/24 RULE:21,192.168.1.0/24 BOUNDED=yes ISOLATED=yes # -------------------
Posted by: Lic. Domingo Varela Y.
|