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:
- 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
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