proyecto final control ancho banda
DESCRIPTION
Proyecto para control del ancho de bandaTRANSCRIPT
Proyecto: Control de Ancho de Banda por puesto.
La finalidad del proyecto es administrar el ancho de banda de la red local hacia el internet de
acuerdo a 3 directivas:
1‐ El puesto Directivo debe contar con acceso libre de ancho de banda sin restricciones de
ningún tipo.
2‐ Un usuario o grupo de usuarios debe tener un acceso limita al ancho de banda y si es
necesario bloquear la navegación hacia algunas páginas Web
3‐ Un tercer usuario o grupo debe tener un bloque total sobre el uso del ancho de banda.
Para brindar este tipo de soluciones podemos encontrar varios tipos de soluciones de Hardware
especializado hasta software libre.
En nuestro caso se optara por explicar la implementación de una solución basada en software el
cual debe cumplir con ciertos requisitos mínimos de Hardware, recordando que mientras mejor
sean las características de nuestro hardware el rendimiento será mayor.
Como caso de ejemplo se utilizara Madriva Linux 2011, partiendo del hecho que ya tenemos
configurado como servidor principal este equipo y que todos los equipos de la red pasan por este
servidor el cual les proporciona DHCP para brindar el servicio de internet, utilizaremos
herramientas que vienen incluidas en el mismo sistema operativo Linux las cuales son:
Prerequisitos:
El equipo debe tener configurado el servicio DHCP para poder cumplir con los objetivos de este
proyecto.
La configuración del DHCP debe permitir una asignación relacionando la MAC de cada equipo con
una dirección IP específica, para así evitar que usuarios maliciosos traten de asignar la o las IP´s
con ciertos privilegios a equipos que tienen una mayor restricción en la navegación.
Las herramientas que debemos configurar en Linux para controlar el ancho de banda son
básicamente 2:
El controlador de tráfico “tc”
Un temporizador o también conocido como planificador de paquetes “htb”
HTB es un shell script derivado de CBQ.init que permite una fácil configuración del control de
tráfico basado en Linux. HTB por sus siglas en ingles (Hierachical Token Bucket) es una disciplina
nueva que trata de hacer cola para hacer frente a las debilidades de la implementación actual de
la CBT.
Para ve
coman
Para es
sitio: h
Para in
que se
Como
de ban
Una ve
servicio
Luego
corresp
A parti
contro
En nue
interna
La dist
La Gere
Resto d
Los usu
erificar si con
ndo: tc y htb c
ste caso espe
ttp://sourcef
niciar debemo
establecerán
segundo paso
nda de 20 Mb
ez definidos e
os, usuarios o
se debe emp
ponda a una d
r de esto pod
l de ancho de
estro ejercicio
a (eth1),
ribución de d
encia forma u
del personal e
uarios restrin
stamos con e
como se mues
ecífico debem
forge.net/pro
os conocer nu
n.
o se deben es
ps, y establec
Ancho de
20Mbps
5Mbps
0Mbps
estos valores
o subnets, con
ezar a definir
determinada
demos genera
e banda.
o tenemos un
irecciones ip
una subnet co
es la subnet 1
gidos perten
estas herrami
stra en la ima
mos instalar el
ojects/htbinit/
uestro ancho
stablecer clas
cemos las sigu
e banda Cla
1
2
3
tenemos def
n 20Mbps, ot
r que corresp
CLASE se deb
ar un Script d
equipo que t
y puertos es
on la siguient
192.168.2.0/2
necen a la sub
entas se ejec
agen siguiente
paquete de h
/
de banda tot
ses por ejemp
uientes clases
ase De
Ge
Res
Pe
finidas 3 CLAS
tros con 15M
onderá a cad
ben aplicar FI
e texto plano
tiene dos plac
la siguiente:
e numeración
24
bnet 192.168.
cuta desde un
e.
htb el cual po
tal, para pode
plo tomando c
s:
escripción
erencia
sto del perso
rsonal Restrin
SES. Esto sign
bps y los últim
a clase y para
ILTROS.
o ejecutable,
cas de red, un
n: 192.168.1.
.30.0/24
na sesión de t
odemos desca
er determinar
como referen
onal
ngido
ifica que tend
mos con 0Mb
a que cada se
que impleme
na externa (e
0/24.
terminar el
argar desde e
r los controle
ncia un ancho
dremos algun
bps.
ector o servici
ente nuestro
eth0) y la otra
el
s
o
nos
io
a
El puerto usado por Squid, el proxy de internet es el 3128
El Script tendría el siguiente contenido:
=====================Comienzo===================== ======================
#!/bin/bash
# Se define la placa de red interna, a administrar.
DEV=eth1
# Se define el camino al comando "tc", para el caso de que no este en el PATH
TC=tc ; este es el caso en el que esta en el PATH
# Se definen todos los límites de ancho de banda a utilizar en Kbps.
RATE1=20000
RATE2=5000
RATE3=0
# Se eliminan definiciones anteriores de FILTROS y CLASES
$TC qdisc del dev $DEV root 2>&1 >/dev/null
# Se definen las CLASES existentes, ademas de la CLASE root y la CLASE master necesarias para el
funcionamiento del script.
# CLASE root y master
$TC qdisc add dev $DEV root handle 1: htb default 60
$TC class add dev $DEV parent 1: classid 1:1 htb rate ${RATE1}kbit
# CLASES y orden prioridad
# CLASE I
$TC class add dev $DEV parent 1:1 classid 1:10 htb rate ${RATE}kbit ceil ${RATE}kbit prio 1
$TC qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
# CLASE II
$TC class add dev $DEV parent 1:1 classid 1:20 htb rate ${RATE2}kbit ceil ${RATE2}kbit prio 2
$TC qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
# CLASE III
$TC class add dev $DEV parent 1:1 classid 1:30 htb rate ${RATE3}kbit ceil ${RATE3}kbit prio 3
$TC qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10
# Se definen los FILTROS.
# FILTRO1 (Subnet GERENCIA a CLASE I)
$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip dst 192.168.1.0/24 flowid 1:10
$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip src 192.168.1.0/24 flowid 1:10
# FILTRO2 (INTERNET a CLASE II)
$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip dport 3128 flowid 1:20
$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip sport 3128 flowid 1:20
# FILTRO4 (Subnet bloqueados a CLASE IV)
$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip dst 192.168.30.0/24 flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip src 192.168.30.0/24 flowid 1:40
=================================Fin============== ===================
El script se guarda como un archivo de texto, con un nombre, por ejemplo control.sh y se le dan
permisos de ejecución con la orden:
sudo chmod a+x control.sh
AL finalizar se ejecuta el scritp, y para verificar se trabaja usando direcciones ip de los diferentes
rangos y probando las velocidades de descarga.
Es importante destacar que cada distribución de Linux puede presentar diferentes dificultades al
implementar cada paquete.
La configuración básicamente es la misma para todas las distribuciones.