controle de banda com htb
TRANSCRIPT
Controle de Banda com HTB-Tools
Pessoal hoje iremos ver 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 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 diretorio 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ê sera 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 paginas web serão armazenadas,
responda:
/var/www/ ou outro diretório a sua escolha.
Pronto o HTB-Tools já esta 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 as interfaces de rede eth0 e eth1. Os arquivos de configuração são
organizados em classes, cada classe pode ter uma sub-classe que são os clientes, a classe
principal é referente a banda total, todas as sub-classes podem compartilhar banda entre
elas, mas se existir mais de uma classe principal elas não poderão compartilhar a banda.
Neste artigo iremos realizar a demonstração das regras comas classes abaixo:
Zezinho – Terá o limite de banda de 256 kbps – 10.0.0.10
Ana – Terá o limite de banda de 512 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 trafego da Rede que não se enquadrar nas regras acima irão ter 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. Iremos criar uma copia 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 podera utilizar
burst 2; # Numer máximo em Kbit que uma classe pode enviar por
vez
priority 1; # Nivel de prioridade, são elas de 0 a 7, onde 0 é a maior
client zezinho { # Nome da Sub-Classe
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 mascara
};
};
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 trafego 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 ate 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 http://speedtest.copel.net/ 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 trafego 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 ai, espero que tenham gostado, até a próxima.