Como controlar el ancho de banda usando HTB-GEN

Imagen de damage

HOla distinguidos usuarios, amigos y conocidos del foro, a pedido de muchos, voy a comentarles mi experiencia en cuanto al uso del htb-gen versión 0.8.4, no usaremos la 0.9 porque aún esta en face beta. Bueno pues, el htb-gen es como su nombre lo indica un generador de script del famoso y glorioso HTB, pero bueno vamos al asunto en mención, los pasos son los siguientes:

1.- Descargar el htb-gen de la pagina oficial http://www.praga.org.ar/wacko/DevPraga/htbgen/, aqui escojemos dependiendo de nuestra distro de linux, el paquete mas 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 click o desde la consola como sea mejor para cada quien:


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

3. Ahora ya esta instalado el htb-gen, desde la consola editamos el .conf, no dirijimos hacia:


# vi /etc/htb-gen/htb-gen.conf
Aquí declaramos, las interfaces de red tanto la que esta conectada al internet como la que esta del lado LAN:
iface_down="eth1" # Server LAN iface
iface_up="eth0" # Server INET 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 asi:

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 estan en el archivo no lo tocamos para nada (mucho cuidado), no hace falta.

4. Ahora vamos a declarar el ancho de banda que tendra 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 esta debidamente documentado en el mismo archivo (pero en ingles), ejemplo de comfiguració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, tendra un ancho de banda compartido ( ya que esta en 0 el rate), podiendo llegar a un maximo de 128k siempre y cuando exista ancho de banda disponible.
la ip 192.168.100.3, tendra 64k de ancho de banda asegurado ya que esta en el rate y un maximo de 128k.
Dentro del mismo archivo tenemos más ejemplos didacticos. 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 esta en:

# vi /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 linea:
iptables -t mangle -A OUTPUT -o ${iface_down} -j htb-gen.down
Luego bajamos dos lineas y añadimos:
iptables -t mangle -A POSTROUTING -o ${iface_up} -j htb-gen.up

esta parte del script quedará asi:
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 lineas correspondientes a las anterirmente declaradas, en fin debe quedar asi:

#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 consoloa tecleamos:

# htb-gen tc_all

Con esto htb-gen generara automaticamente, 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 relajarce con unas chelas ya que tendran un problema menos que cargar, Salud.

NOTA: Deben tener instaldo 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 estan 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 aveces 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 ahi 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 general 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 version 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 clic's, poner las ip's y listo, pero no este problema de subida se soluciona, y repito como dije hace meses atras (por eso nunca di respuesta antes ya que no lo creía necesario debido a "que lo habia 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 linea 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 porque, 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 algun 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 colo 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 esta 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 trafico local entre ambas subredes, lo cual nos pondra 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 lineas de Return adicionadas, remplacen el -I con -A, ojo.

Saludos amigos.

Comentarios

squid cbq htb-gen misterio jejeje

Imagen de maxstoro

hola amigo la verdad que es un misterio esto de el htb-gen y el squid al momento de controlar la subida porque te digo esto la verdad no tengo tanto tiempo en el mundo de linux pero e aprendido muchas cosa, yo he tratado de muchas formas de controlar la subida teniendo habilitado el squid pero no e logrado que funcione, mira en resumen tengo un firewall nat y uso el cbq en un server y htb-gen en otro, los dos funcionan bien pero al momento de tener habilitado el squid no controlan subida pero si desabilito el squid y habilito la navegacion con iptablea los dos controlan la subida te paso un link en el que podras ver mis scripts y mis configuraciones pa ver si te pueden quizas ayudar si encuentras la solucion espero que me la comentes a en ese link uso el cbq pero bueno es lo mismo ya que e usado el mismo firewall tanto con el htb-gen y con el cbq http://www.ecualug.org/2010/07/25/blog/maxstoro/firewall_nat_cbq_squid suerte seguimos en la lucha por controlar la subida utilizando el squid habilitado

Te cuento que yo tengo varias

Imagen de damage

Te cuento que yo tengo varias implementaciones de htb-gen + squid y si me controla la subida, pero si me ocurrio una vez hace mas de un año atras que en un server no controlo la subida, la razón no pude investigarla, quizás puede ser algo de la instalación, ya que tuve que reinstalar el linux ya que lo habian instalado mal, pero no tuve tiempo para poder ver el porque del asunto, insisto prueben en distros como Centos 4.5 en adelante y en 5.2 hacia la ultima me funciona sin problemas lo mismo en debian 5.x.
Con todo nunca esta demás analizar como se comporta el trafico a través del server, miren su firewall sus cadenas de FORWARD y en especial el nating.

hola me salio este mensaje

Hola me salio este error me podrias desir por que??? lo instale en centos 5.4 y funcionaba bien pero al instalar en centos 5.5 sale este error y no segmenta el ancho de banda de subida solo el de bajada ayuda porfafor
el centos 5.5 lo tengo por que al hacer el yum update se actualizo a centos 5.5
AYUDA PORFAVOR

[root@www ~]# htb-gen tc_all
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory

"El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz."

Pregunta

Saludos mi estimado con todo respeto me saco el sombrero, de pronto a lo mejor no se si sea correcto postear en este lugar mire yo tengo un enlace con fibra con telconet de 1.5 MB esta instalado en linux centos 5 no sabe el lio que tengo cuando se satura quiero saber si usted me puede echar una mano configurando este servidor y cuanto seria el costo.

Por cierto estoy en Quito al sur

saludos

hasta pronto

Prioridad en HTB

Manejo algunas sudredes en la LAN de mi proxy que manejo un promedio de 500 usuarios y he migrado mi servidor a BrazilFW, es sumamente facil administrarlo, pero me he topado con cosas curiosas como que ha ratos no le da la gana de hacer funcionar determinada ip o algunas paginas del iess.gov.ec me las deja ancladas y presenta la misma informacion a otro cliente, en fin no es un sistema 100% estable.

Por lo que vuelvo a mi centos 5.0, com mi squid, pero siempre he tenido complicaciones en el control de mi ancho banda. Por ejemplo, como podria hacer para que las siguientes redes manejen un BW de 1024 compartido entre 4 subredes y la prioridad para los programas P2P no sea mayor al 20% del total de BW asignado.

Donde controlo el porcentaje de prioridad o como lo administra el htb-gen ?

Ej Subredes - Cada una use un promedio de 256 Up/Down y como maximo 1024
10.10.10.1/28 256 1024 256 1024
20.20.20.1/28 256 1024 256 1024
30.30.30.1/28 256 1024 256 1024
40.40.40.1/28 256 1024 256 1024

Es correcta esta declaracion en /etc/htb-gen/htb-gen-rates.conf ?

Se supone que si solo un usuario de una subred esta navegando el BW que no lo usan las otras lo toma, es decir, en este caso navegaria a 1024 ?

Para el requerimiento que tu

Imagen de damage

Para el requerimiento que tu necesitas em htb-gen no te va servir mucho ya que deseas dar prioridad a todo trafico que no sea P2P, ademas de segmentar el BW de ip's dentro de una subred X, para eso mejor usa el Morpheus, Razametal posteo un HOW-TO, o en su defecto si te gusta Mikrotik, puedes usar ese hardware y tendras también lo que necesitas.

Problema con iptables parchado para ipp2p y layer7

Buenas, eh probado el htb-gen y funciona perfecto lo uso en debian, el inconveniente es cuando lo quiero hacer correr en un kernel recompilado 2.6 para restriccion de p2p como el descripto en este mismo sitio http://www.ecualug.org/2009/07/12/blog/razametal/debian_kernel_26301_l7filter_ipp2p?page=1
al utilizar esa version de iptables me da unos errores de directorio y no limita el ancho de banda, si lo uso con el iptables-dev funciona pero ahi no funciona la restriccion del p2p.
Desde ya muchas gracias

Me corrijo solo, como siempre antes de usar la cabeza uno tiende a preguntar, solucione el inconveniente corrigiendo la ruta del iptables, funciona ahora perfecto

Ayuda

Hola amigo buen tutorial pero necesito una ayuda tengo instalado el htb-gen-0.9b-1 y todoo funciona perfecto pero quisiera saber como puedo controlar solo el ancho de banda hacia el internet y q el ancho de banda de la lan quede abierto saludos y gracias ;)

Páginas