Sie sind auf Seite 1von 6

Como controlar el ancho de banda usando HTB-GEN

1.- Descargar el htb-gen de la página


oficial http://www.praga.org.ar/wacko/DevPraga/htbgen/, aquí
elegimos dependiendo de nuestra distro de Linux, el paquete más
apropiado, yo como uso Centos 4.4 i386, descargue htb-gen-0.8.4-
1.noarch.rpm, también lo he usado en x86_64 ya que es un rpm
"noarch".

2. Luego de la descarga respectiva, lo instalamos, ya sea con doble clic


o desde la consola como sea mejor para cada quien:

rpm -iUvh htb-gen-0.8.4-1.noarch.rpm


3. Ahora ya está instalado el htb-gen, desde la consola editamos el
.conf, no dirigimos hacia:

#nano/etc/htb-gen/htb-gen.conf
Aquí declaramos, las interfaces de red tanto la que
está conectada al internet como la que está del lado
LAN:
iface_down="eth1" #Server LAN iface
iface_up="eth0" # Server INTERNET iface
3.1 Luego declaramos el ancho de banda que tenemos asignado por
ejemplo si nuestra red tiene un ancho de banda de 512 Kbits tanto de
bajada como de subida lo declaramos así:

total_rate_down=512
total_rate_up=512
O si tenemos 512k down y 256 up:

total_rate_down=512
total_rate_up=256
3.2 El siguiente paso es declarar los puertos a segmentar, por default
viene unos 10 puertos, pero si nuestro server hace de proxy/firewall, es
basta con declarar el 80 y el 8080:

prio_ports=80,8080,25,110,443,1863
El resto de variables que están en el archivo no lo tocamos para nada
(mucho cuidado), no hace falta.

4. Ahora vamos a declarar el ancho de banda que tendrá cada ip, subred
o red, para esto editamos esto:

# vi /etc/htb-gen/htb-gen-rates.conf
Aquí podemos jugar con los valores el archivo muestra 5 columnas
donde la primera es la ip, o subred, la segunda el "rate" de bajada, la
tercera el "ceil" de bajada y la cuarta y quinta son el "rate" y el "ceil" de
subida, todo esto está debidamente documentado en el mismo archivo
(pero en inglés), ejemplo de configuración:

192.168.100.2 0 128 0 64
192.168.100.3 64 128 0 64
192.168.100.4 0 64 0 32

Esto que significa por ejemplo la ip 192.168.100.2, tendrá un ancho de


banda compartido ( ya que está en 0 el rate), pudiendo llegar a un
máximo de 128k siempre y cuando exista ancho de banda disponible.
La ip 192.168.100.3, tendrá 64k de ancho de banda asegurado ya que
está en el rate y un máximo de 128k.
Dentro del mismo archivo tenemos más ejemplos didácticos. Guardamos
los cambios y listo.

5. OJO esto solo en el caso de que no controle bien el ancho de


banda le meten mano de lo contrario lo dejan tal como viene.
Luego de hacer todo esto debemos hacerle unos retoques al script
principal el cual está en:
# nano /usr/bin/htb-gen
Y vamos hasta donde dice:

# Make extra tables, cleaner & target match faster


iptables -t mangle -N htb-gen.down
iptables -t mangle -A FORWARD -o ${iface_down} -j htb-
gen.down

y Añadimos esta línea:

iptables -t mangle -A OUTPUT -o ${iface_down} -j htb-


gen.down
Luego bajamos dos líneas y añadimos:
iptables -t mangle -A POSTROUTING -o ${iface_up} -j
htb-gen.up
Esta parte del script quedará así:

iptables -t mangle -N htb-gen.down


iptables -t mangle -A FORWARD -o ${iface_down} -j htb-gen.down
iptables -t mangle -A OUTPUT -o ${iface_down} -j htb-gen.down
iptables -t mangle -N htb-gen.up
iptables -t mangle -A POSTROUTING -o ${iface_up} -j htb-gen.up
iptables -t mangle -A FORWARD -o ${iface_up} -j htb-gen.up

Bajamos un poco más y encontraremos esto:

#delete old htb-gen entries(chains)

iptables -t mangle -D FORWARD -o ${iface_down} -j htb-gen.down 2>/dev/null


iptables -t mangle -D FORWARD -o ${iface_up} -j htb-gen.up 2>/dev/null
Y lo remplazamos adicionando líneas correspondientes a
las anteriormente declaradas, en fin debe quedar así:

#delete old htb-gen entries(chains)


iptables -t mangle -D FORWARD -o ${iface_down} -j htb-gen.down 2>/dev/null
iptables -t mangle -D OUTPUT -o ${iface_down} -j htb-gen.down 2>/dev/null
iptables -t mangle -D POSTROUTING -o ${iface_up} -j htb-gen.up 2>/dev/null
iptables -t mangle -D FORWARD -o ${iface_up} -j htb-gen.up 2>/dev/null

6. Una vez guardados los cambios, desde consola tecleamos:

# htb-gen tc_all
Con esto htb-gen generara automáticamente, los script's
correspondientes con las clases y la parte de iptables.

7. Verificamos que todo se halla generado con:

# iptables -nL -t mangle


8. Listo todo en orden a relajarse con unas chelas ya que tendrán un
problema menos que cargar, Salud.

NOTA: Deben tener instalado iproute para que esto funcione de lo


contrario, no generara mensajes de error, recuerden que el comando TC
es parte de iproute y este comando es parte fundamental tanto en el
uso de htb como de cbq.

Debido a la gran cantidad de preguntas respecto a el mensaje de


"check rates conf, not enough download bandwidth", eso se da
porque están declarando más RATE del que tienen asignado en el
"Total RATE" del htb-gen.conf. Pilas lean las palabritas que tiene
cada archivito para que se enteren que no hacer.

Así mismo he visto que preguntan de manera insistente que se les


indique porque no les funciona el htb-gen, muchos usuarios solo lo
instalan y listo, pero a veces hay que ver que más pasa, yo nunca
tuve inconvenientes con el htb-gen realizaba lo posteado y listo,
pero con la versión 0.9b, el error se da que este no asigna la chain
de mangle a la eth1 si no a la eth0, he ahí el error ya que
personalmente la eth0 la declaro como interfaz externa.
Recomiendo tecleen iptables -nL -t mangle y se fijen en que eth se
genera el reporte, la solución la estoy analizando, la misma la
posteare a futuro, por el momento si necesitan usar el htb-gen 0.9
usen la versión 0.9-1 con la cual no se me ha presentado el
inconveniente.

ACTUALIZACIÓN 11/07/2009
Viendo varios post similares sobre el problema de la segmentación
de subida, lastimosamente muchos solo pensaron de que era cosa de
instalar dar dos clics, poner las ip's y listo, pero no este problema
de subida se soluciona, y repito como dije hace meses atrás (por eso
nunca di respuesta antes ya que no lo creía necesario debido a "que
lo había dicho antes") se debe jugar con las reglas de iptables, en la
versión del htb gen 0.9.1 que es la cual muchos usan, se debe
adicionar una línea en la cual marque el FORWARD con la opción -i,
con eso es suficiente para solucionar el dilema de la subida, espero
que prueben y apliquen lo recomendado. No me pregunten el
porqué, se los dejo de tarea.
En cuanto a la versión 0.8.x no hay que hacerlos tal como se explica
es suficiente, si tienes algún problema con el squid o alguna
relacionado, me he topado con muchas personas que tienen script
de iptables que hacen flush de reglas en la cadena mangle lo cual
interfiere con las reglas de mangle del htb-gen, deben ver todas las
opciones antes de decir NO FUNCIONA.

Actualización al 14 de Septiembre del 2010:

Se me presento en una institución que no es ISP que se necesitaba


como controlar el ancho de banda hacia Internet, pero resulta que
como el htb-gen segmenta todo el tráfico en la tabla del FORWARD,
pues eso tría complicaciones cuando el mismo gateway de Internet
es también el router de varias subredes de una LAN, por ejemplo un
servidor de aplicaciones está dentro del segmento 192.168.0.1/24 y
tengo hosts en el segmento 192.168.2.0/29, ambas redes son
ruteadas por el Linux en este caso el Htb-gen me segmentara el
tráfico local entre ambas subredes, lo cual nos pondrá en
problemas, para solucionar esto se debe hacer los siguiente (gracias
a Razametal por dar una luz ;) ):
iptables -t mangle -I FORWARD -p ALL -d 192.168.0.1/24 -s
192.168.2.0/29 -j RETURN
iptables -t mangle -I FORWARD -p ALL -s 192.168.0.1/24 -d
192.168.2.0/29 -j RETURN

Listo con esto adicionado al final del script principal de htb-gen


(/usr/local/bin/htb-gen) tenemos todo resuelto.
Recuerden una vez ejecutado el script con las líneas de Return
adicionadas, remplacen el -I con -A, ojo.

Saludos amigos.

Das könnte Ihnen auch gefallen