Controle de banda com HTB-tools
Dica publicada em Linux / Internet
Controle de banda com HTB-tools
Pessoal, veremos uma ferramenta para controle de banda muito interessante, chamada HTB-tools. Ela auxilia na configuração de um algoritmo chamado HTB, que significa Hierarchical Token Bucket.
Este algoritmo possui algumas vantagens em relação ao CBQ, como velocidade, mais opções e ser mais robusto. Ele foi criado por Martin Devera e passou a ser incluído no kernel do GNU/Linux a partir do 2.4.20.
O HTB-Tools é uma ferramenta para controle e administração de banda, um software com vários recursos para auxiliar e simplificar o processo de alocação de banda, tráfego, download, upload, gerando e checando configurações para cada cliente isoladamente.
Bem, vamos para a instalação.
Estamos utilizando o Debian Squeeze como lab, a interface eth0 é WAN (Internet) e a eth1 é a LAN (rede local). Iremos começar instalando as dependências necessárias:
# aptitude update
# aptitude install make flex-old dialog libncurses5-dev kernel-package gcc
Depois das dependências, vamos levantar alguns módulos necessários:
# modprobe sch_htb
# modprobe sch_sfq
# modprobe cls_u32
Crie o diretório onde será copiado o manual:
# mkdir /usr/local/man/man8
Agora, faça o download do HTB-tools para sua máquina.
# cd /opt
# wget -cv https://sites.google.com/site/guiadoti/arquivos/HTB-tools-0.3.0a.tar.gz
Após o download, extraia os arquivos:
# tar -xvzf HTB-tools-0.3.0a.tar.gz -C /usr/local
# cd /usr/local/HTB-tools-0.3.0a
# mkdir include/asm
# cd include/asm
Agora baixe a biblioteca "bitops.h" para o diretório criado:
# wget -cv https://sites.google.com/site/guiadoti/arquivos/bitops.h
Volte para a raiz do HTB-tools:
# cd /usr/local/HTB-Tools-0.3.0a
Agora podemos instalar a ferramenta sem nenhum problema:
# make
# make full
Nesse momento você será questionado onde será o diretório de execução do serviço, responda:
/etc/init.d/
Depois, você será questionado sobre o diretório onde as páginas Web serão armazenadas, responda:
/var/www/ (ou outro diretório a sua escolha)
Pronto. O HTB-tools já está instalado e pronto para ser utilizado.
Agora vá para os arquivos de configuração do HTB-tools:
# cd /etc/htb
Aqui você vai encontrar os arquivos "eth0-qos.cfg" e "eth1-qos.cfg", eles correspondem respectivamente às interfaces de rede eth0 e eth1. Os arquivos de configuração são organizados em classes, cada classe pode ter uma subclasse que são os clientes. A classe principal é referente à banda total, todas as subclasses podem compartilhar banda entre elas, mas se existir mais de uma classe principal, elas não poderão compartilhar a banda.
Nesta dica, realizaremos a demonstração das regras com as classes abaixo:
O restante do tráfego da rede, que não se enquadrar nas regras acima, terão uma banda de 2048 kBps (2 MB), lembrando que a banda total é de 5120 kBps (5 MB).
Iremos configurar o arquivo contido em /etc/htb, como a interface eth1 é a nossa conexão com a rede local, iremos alterar o arquivo "eth1-qos.cfg" para configurar o controle de download.
Criaremos uma cópia do arquivo original e começar um novo:
# mv eth1-qos.cfg eth1-qos.cfg.old
# pico eth1-qos.cfg
Obs.: Respeitem a indentação.
Depois execute o comando abaixo para testar o arquivo:
# q_checkcfg /etc/htb/eth1-qos.cfg
Se ocorrer tudo bem até aqui, rode o comando abaixo para iniciar o HTB-tools:
# htb eth1 start
Ou:
# /etc/init.d/rc.htb start_eth1
Existem outros parâmetros que podem ser usados no HTB-tools. No nosso exemplo, fizemos o controle do download (dst = destination). Para controlar o upload, utiliza-se src (source) no lugar do dst.
Se quiser controlar uma porta específica, basta incluir o número da porta logo após o IP da rede/host. Ex.: Para a porta 80 ==> 10.0.0.0/24 80.
Agora é só testar o controle em algum cliente da rede, vocês podem fazer os testes usando o SpeedTest e baixando arquivos da Internet e acompanhar a taxa de transferência, lembrando que a taxa de transferência é 10% do limite que você declarar.
Para acompanhar o consumo de tráfego em tempo real, utilize:
# /etc/init.d/rc.htb show_eth1
Para mais informações:
# /etc/init.d/rc.htb --help
Ou leia o manual:
# pico /usr/local/HTB-tools-0.3.0a/docs/HowTo/HTB-tools-howto.txt
Pessoal, é isso aí, espero que tenham gostado. Até a próxima.
Dica também publicada em: Guia do TI: Controle de Banda com HTB-Tools
Este algoritmo possui algumas vantagens em relação ao CBQ, como velocidade, mais opções e ser mais robusto. Ele foi criado por Martin Devera e passou a ser incluído no kernel do GNU/Linux a partir do 2.4.20.
O HTB-Tools é uma ferramenta para controle e administração de banda, um software com vários recursos para auxiliar e simplificar o processo de alocação de banda, tráfego, download, upload, gerando e checando configurações para cada cliente isoladamente.
Bem, vamos para a instalação.
Estamos utilizando o Debian Squeeze como lab, a interface eth0 é WAN (Internet) e a eth1 é a LAN (rede local). Iremos começar instalando as dependências necessárias:
# aptitude update
# aptitude install make flex-old dialog libncurses5-dev kernel-package gcc
Depois das dependências, vamos levantar alguns módulos necessários:
# modprobe sch_htb
# modprobe sch_sfq
# modprobe cls_u32
Crie o diretório onde será copiado o manual:
# mkdir /usr/local/man/man8
Agora, faça o download do HTB-tools para sua máquina.
# cd /opt
# wget -cv https://sites.google.com/site/guiadoti/arquivos/HTB-tools-0.3.0a.tar.gz
Após o download, extraia os arquivos:
# tar -xvzf HTB-tools-0.3.0a.tar.gz -C /usr/local
# cd /usr/local/HTB-tools-0.3.0a
# mkdir include/asm
# cd include/asm
Agora baixe a biblioteca "bitops.h" para o diretório criado:
# wget -cv https://sites.google.com/site/guiadoti/arquivos/bitops.h
Volte para a raiz do HTB-tools:
# cd /usr/local/HTB-Tools-0.3.0a
Agora podemos instalar a ferramenta sem nenhum problema:
# make
# make full
Nesse momento você será questionado onde será o diretório de execução do serviço, responda:
/etc/init.d/
Depois, você será questionado sobre o diretório onde as páginas Web serão armazenadas, responda:
/var/www/ (ou outro diretório a sua escolha)
Pronto. O HTB-tools já está instalado e pronto para ser utilizado.
Agora vá para os arquivos de configuração do HTB-tools:
# cd /etc/htb
Aqui você vai encontrar os arquivos "eth0-qos.cfg" e "eth1-qos.cfg", eles correspondem respectivamente às interfaces de rede eth0 e eth1. Os arquivos de configuração são organizados em classes, cada classe pode ter uma subclasse que são os clientes. A classe principal é referente à banda total, todas as subclasses podem compartilhar banda entre elas, mas se existir mais de uma classe principal, elas não poderão compartilhar a banda.
Nesta dica, realizaremos a demonstração das regras com as classes abaixo:
- Zezinho → Terá o limite de banda de 256 kbps - 10.0.0.10
- Ana → Terá o limite de banda de512 kbps - 10.0.0.11
- João → Terá o limite de banda de 1024 kbps - 10.0.0.12
- Marina → Terá o limite de banda de 1024 kbps - 10.0.0.13
O restante do tráfego da rede, que não se enquadrar nas regras acima, terão uma banda de 2048 kBps (2 MB), lembrando que a banda total é de 5120 kBps (5 MB).
Iremos configurar o arquivo contido em /etc/htb, como a interface eth1 é a nossa conexão com a rede local, iremos alterar o arquivo "eth1-qos.cfg" para configurar o controle de download.
Criaremos uma cópia do arquivo original e começar um novo:
# mv eth1-qos.cfg eth1-qos.cfg.old
# pico eth1-qos.cfg
################
# eth1-qos.cfg #
################
# for how to configure and use see docs/HowTo/
class guia_do_ti {
# Nome da classe principal
bandwidth 5120;
# Largura da banda garantida, nesse caso a total
limit 5120;
# O máximo de banda que a classe poderá utilizar
burst 2;
# Número máximo em Kbit que uma classe pode enviar por vez
priority 1;
# Nível de prioridade, são elas de 0 a 7, onde 0 é a maior
client zezinho { # Nome da Subclasse
bandwidth 256;
# Largura da banda garantida (banda mínima)
limit 300;
# O máximo de banda que a classe poderá utilizar
burst 2;
priority 1;
dst {
# Destino do tráfego (Download)
10.0.0.10/32; # Endereço IP do cliente e máscara
};
};
client ana {
bandwidth 480;
limit 512;
burst 2;
priority 1;
dst {
10.0.0.11/32;
};
};
client joao {
bandwidth 480;
limit 512;
burst 2;
priority 1;
dst {
10.0.0.12/32;
};
};
client marina {
bandwidth 1024;
limit 1024;
burst 2;
priority 1;
dst {
10.0.0.13/32;
};
};
client rede_local {
bandwidth 2048;
limit 4096;
burst 2;
priority 1;
dst {
10.0.0.0/24; # Faixa de endereços da rede (254 IPs)
};
};
};
class default { bandwidth 8; }; # Classe padrão para o tráfego que não se encaixar nas classes acima
# eth1-qos.cfg #
################
# for how to configure and use see docs/HowTo/
class guia_do_ti {
# Nome da classe principal
bandwidth 5120;
# Largura da banda garantida, nesse caso a total
limit 5120;
# O máximo de banda que a classe poderá utilizar
burst 2;
# Número máximo em Kbit que uma classe pode enviar por vez
priority 1;
# Nível de prioridade, são elas de 0 a 7, onde 0 é a maior
client zezinho { # Nome da Subclasse
bandwidth 256;
# Largura da banda garantida (banda mínima)
limit 300;
# O máximo de banda que a classe poderá utilizar
burst 2;
priority 1;
dst {
# Destino do tráfego (Download)
10.0.0.10/32; # Endereço IP do cliente e máscara
};
};
client ana {
bandwidth 480;
limit 512;
burst 2;
priority 1;
dst {
10.0.0.11/32;
};
};
client joao {
bandwidth 480;
limit 512;
burst 2;
priority 1;
dst {
10.0.0.12/32;
};
};
client marina {
bandwidth 1024;
limit 1024;
burst 2;
priority 1;
dst {
10.0.0.13/32;
};
};
client rede_local {
bandwidth 2048;
limit 4096;
burst 2;
priority 1;
dst {
10.0.0.0/24; # Faixa de endereços da rede (254 IPs)
};
};
};
class default { bandwidth 8; }; # Classe padrão para o tráfego que não se encaixar nas classes acima
Obs.: Respeitem a indentação.
Depois execute o comando abaixo para testar o arquivo:
# q_checkcfg /etc/htb/eth1-qos.cfg
Se ocorrer tudo bem até aqui, rode o comando abaixo para iniciar o HTB-tools:
# htb eth1 start
Ou:
# /etc/init.d/rc.htb start_eth1
Existem outros parâmetros que podem ser usados no HTB-tools. No nosso exemplo, fizemos o controle do download (dst = destination). Para controlar o upload, utiliza-se src (source) no lugar do dst.
Se quiser controlar uma porta específica, basta incluir o número da porta logo após o IP da rede/host. Ex.: Para a porta 80 ==> 10.0.0.0/24 80.
Agora é só testar o controle em algum cliente da rede, vocês podem fazer os testes usando o SpeedTest e baixando arquivos da Internet e acompanhar a taxa de transferência, lembrando que a taxa de transferência é 10% do limite que você declarar.
Para acompanhar o consumo de tráfego em tempo real, utilize:
# /etc/init.d/rc.htb show_eth1
Para mais informações:
# /etc/init.d/rc.htb --help
Ou leia o manual:
# pico /usr/local/HTB-tools-0.3.0a/docs/HowTo/HTB-tools-howto.txt
Pessoal, é isso aí, espero que tenham gostado. Até a próxima.
Dica também publicada em: Guia do TI: Controle de Banda com HTB-Tools
http://www.vivaolinux.com.br/topico/provedores/HTB-Nao-controla-UPLOAD
o HTB-Tools não limita a velocidade de UPLOAD, da minha rede. Já revirei este site, e tantos outros que demonstram como configurar, bem explicadinho e tudo mais, e confesso que já estou cansado de tanto procurar.
Meu Servidor:
- Roda squid transparente;
- Usa HTB-Tools de forma correta para limitar os downloads;
- Abrigará serviços de DDNS, SMB, SSH, etc...
- Controlará um link de 10M de Down / 1M de Up;
- Conta com eth0 - 8.0.0.254 (internet/modem adsl) / eth1 - 10.0.0.254 (rede transmissão) / eth2 - 10.10.10.254 (rede Geral);
- Na rede conectada a eth1 precisarei de (quase) toda a banda de Upload, pois utilizarei para transmissão ao vivo para a internet, daí a necessidade de limitar o Upload, e não dá pra usar o delay_pool do squid, pois este só limita a velocidade do tráfego na porta 80, ou estou errado?
Já vi vários sites:
http://tutolivre.net/br/htb-tools-exemplos-pr%C3%A1ticos-de-configura%C3%A7%C3%A3o
http://blog.abratel.com.br/2011/03/23/gerenciamento-no-controle-de-banda-%E2%80%93-htb-tools/
http://www.linuxblog.ro/htb-tools-tutorial-traffic-shaping/
http://info-tec.blogspot.com.br/2010/07/controle-de-banda-com-htb-squid.html
Esses dois últimos me ajudaram a entender algumas coisas a mais, mas apelo à comunidade VOL para tentar resolver este problema.
Antecipamente agradeço.