Primeiramente obrigado por acessar o meu artigo! Este tem como objetivo expor aos usuários como instalar e configurar o serviço de controle de banda HTB-Tools, afim de priorizar aplicações de Internet como Skype, sub-redes, um computador ou uma rede inteira, limitando ou liberando quantidade de banda.
Depois de feito o download do pacote, inicie a instalação! Segue o comando abaixo:
# installpkg HTB-tools-0.2.7b-i486-1.tgz
O pacote será instalado e criará os seguintes arquivos de configuração:
/etc/htb/eth0-qos.cfg
/etc/htb/eth1-qos.cfg
Interessante que ele também cria o arquivo de script /etc/rc.d/rc.htb.
Agora só resta mesmo editar os arquivos de configuração, colocar o serviço em execução, efetuar os testes e monitorar a velocidade do link.
Configuração
Os arquivos de configuração são dados por classes, ou seja, existe uma classe principal que é referente a banda de tráfego total e as sub-classes que são destinadas aos clientes ou serviços.
As sub-classes podem compartilhar banda entre elas, agora, quando existe mais de uma classe principal, estas não podem compartilhar banda entre elas.
Nesse artigo estou exemplificando o controle de banda para 4 computadores diferentes e priorizando o uso do programa Skype. São eles:
est-rodrigo (Serviço de Skype) - Limite de Banda 512k
est-rodrigo (Demais serviços) - Limite de Banda 512k
est-recepcao - Limite de Banda 256k
pdc-01 - Limite de Banda 128k
est-financeiro - Limite de Banda 256k
Primeiro você pode configurar a origem do tráfego que, no caso desse artigo, a interface responsável seria a eth0 (Internet). Portanto você estará limitando a saída (upload):
# vi /etc/htb/eth0-qos.cfg
################
# eth0-qos.cfg #
################
# Interface de origem de tráfego (Internet) - IP: 0.0.0.0/0
class rede_lab { #classe principal
bandwidth 2048; #velocidade total do link
limit 2048; #velocidade limite
burst 2;
priority 1; #prioridade da classe
client skype { # sub-classe (priorizando o serviço do skype para est-rodrigo)
bandwidth 99; # banda total para sub-classe
limit 128; # banda limite para sub-classe
burst 2;
priority 1; # prioridade da sub-classe
src { # src significa source, ou seja, origem do tráfego (upload)
0.0.0.0/0 61596; # porta usada pelo skype
0.0.0.0/0 443; # porta usada pelo skype
0.0.0.0/0 80; # porta usada pelo skype
};
};
Agora deve ser configurado também a interface de destino do tráfego, que no caso desse artigo é eth1 (rede local LAN). Portanto, estaremos limitando a entrada (download).
# vi /etc/htb/eth1-qos.cfg
################
# eth1-qos.cfg #
################
# Interface de destino do tráfego (Rede Local LAN) - IP: 192.168.0.1/24
class rede_lab { #classe principal
bandwidth 2048; #velocidade total do link
limit 2048; #velocidade limite
burst 2;
priority 1; #prioridade da classe
client skype { # sub-classe (priorizando o serviço do skype para est-rodrigo)
bandwidth 480; # banda total para sub-classe
limit 512; # banda limite para sub-classe
burst 2;
priority 1; # prioridade da sub-classe
dst { # dst significa destino, ou seja, destino do tráfego (download)
192.168.0.4/32 61596; # porta usada pelo skype
192.168.0.17/32 443; # porta usada pelo skype
192.168.0.17/32 80; # porta usada pelo skype
};
};
[7] Comentário enviado por rodrigomoschetto em 25/07/2008 - 01:43h
Rapaz, eu optei em aprender a usar o HTB pela facilidade e não por ser melhor ou pior do que o CBQ, pois, ambos os serviços têm a mesma função, o que muda é a maneira de que cada um é configurado. Eu achei o HTB mais rápido de ser configurado e mais explicativo.
No próprio Squid você já pode fazer um controle de banda sem precisar usar o HTB. E, aqui no VOL tem muitos artigos ou tutoriais que falam sobre isso.
[8] Comentário enviado por k4mus em 28/07/2008 - 14:07h
Amigo, no caso o bandwidth seria a velocidad minima "garantida" ao client, e o limit é valor maximo que este usuario pode chegar ?
Eh que configirei aqui mas ele nao esta garantindo o valor minimo nao. Quando tenho dois clientes baixando ao mesmo tempo, normalment um "rouba" a banda quase toda do outro.
[10] Comentário enviado por k4mus em 28/07/2008 - 17:37h
Obrigado pela resposta fera ,
Amigo, vc falou que limit é o valor que pode ser consumido do bandwidth. Fiquei um pouco confuso quando se refere à subclasse.
Por exemplo, na subclase "client pdc-01": o bankwidth eh 100 e o limit 128. Isto quer dizer que em um horario de pico que todos estejam fazendo download. O cliente 192.168.0.2/32 tera garantido pelo htb velocidade variando de 100 a 128 ?
[11] Comentário enviado por rodrigomoschetto em 28/07/2008 - 20:26h
Exatamente! 100 é a largura da banda mas o total é 128. E, isso varia mesmo na hora em que ambas interfaces estiverem trafegando dados.
Qto a sub-classe, utilize sempre um IP por sub-classe. Caso queira limitar banda para serviços, crie uma outra sub-classe, como eu fiz no exemplo para o skype.
[12] Comentário enviado por leandroros em 30/07/2008 - 10:52h
Bom dia!
gostei muito do artigo, e gostaria da sua opinião para uma solução que quero definir aqui onde trabalho. É o seguinte eu tenho um link de 4M full e gostaria de limitar 1M para acesso de uma máquina que esta fora da empresa. Este acesso é pela internet e 70% dos usuários da empresa acessam esta máquina o dia inteiro. por isso quando a minha banda esta lotada eu perco a qualidade de acesso a esta máquina. Você acha que esta ferramenta pode me atender?
[14] Comentário enviado por royrocha em 12/08/2008 - 16:50h
Gostei muito do artigo... já tá guardado no bookmarks..
gostaria de levantar uma dúvida: na minha rede, por exemplo, estou usando eth1 para a rede interna e eth2 para a rede pública. Sendo assim, como ficariam os arquivo de configuração eth0-qos.cfg e eth1-qos.cfg? Para associar eth1 para rede interna e eth2 para rede pública teria colocar algo do tipo eth1-qos.cfg e eth2-qos.cfg, por exemplo...
[15] Comentário enviado por rodrigomoschetto em 16/08/2008 - 17:48h
leandroros
Com certeza funciona! Boa sorte!
royrocha
Se eu não me engano, o htb na hora da instalação já cria esses arquivos de acordo com as interfaces configuradas no seu sistema operacional.
roberto
Pelo que eu li no site do desenvolvedor, não tem limite para criação de classes ou sub-classes. Tudo depende da largura de banda e infraestrutura utilizada. Logicamente, para mais de 50 classes/subclasses recomendo uma rede gigaethernet com switches gerenciáveis que proporciona um melhor controle, desempenho e confiabilidade.
[16] Comentário enviado por birobiro em 17/09/2008 - 08:36h
Galera alguem aqui sabe como fazer pra aplicar uma funca timeno HBT tipo o time do CBQ, preciso mto disso galera, aqui no trampo taum me pedindo isso e eu naum consegui nada a respeito ja visitei varios foruns e nada, peca a essa galera antenada do vol se poder me passa essa info. valew grandes...
[18] Comentário enviado por salfix em 07/10/2008 - 16:30h
ah to com os mesmo dilema, o que queremos é apenas uma função que possa parar ou iniciar o controle de banda de modo agendado como é feito no cbq com a funcao time e a sintase no cbq é TIME=18:00-06:00;256Kbit/25Kbit aqui no htb ja testei e naum funcionou...
[23] Comentário enviado por ricardors em 03/07/2012 - 08:48h
Estou com dúvidas na parte de configuração, eu dou start nas placas e até aí tudo OK, a internet entra pelo eth de origem e realmente limita a banda, mas eu não estou entendo como eu disteribuo a internet para os outros computadores, eu coloco um cabo de rede saindo da placa para um HUB? Seria isso?
[24] Comentário enviado por cirinho em 15/09/2012 - 03:33h
[22] Comentário enviado por tosko em 08/07/2010 - 14:41h:
o que acontece com as maquinas que não estão listadas nos scripts do htb? navegaram sem restrição?
Quando não está listado no script, cai na regra/classe padrão, algo do tipo:
class default { bandwidth 64; };
Geralmente se coloca um valor bem baixo do tipo: bandwidth = 8 ou 16 ou 32 ou 58 ... depende de cada caso e da necessidade de cada rede!
...
[23] Comentário enviado por ricardors em 03/07/2012 - 08:48h:
Estou com dúvidas na parte de configuração, eu dou start nas placas e até aí tudo OK, a internet entra pelo eth de origem e realmente limita a banda, mas eu não estou entendo como eu disteribuo a internet para os outros computadores, eu coloco um cabo de rede saindo da placa para um HUB? Seria isso?
No meu caso é o seguinte ...
eth0 - liga ao modem
eth1 - liga ao hub e demais clientes
Então o meu script para o eth0 eu deixo vazio, ou posso fazer algo genérico como no exemplo acima 0.0.0.0 pra toda rede...
No eth1 eu crio a classe internet e dentro dela os clientes. Respondendo também o @tosko no final tem a classe default que é a regra geral que se aplica pros demais casos que não listamos especificamente no script.
Eu também crio uma classe intranet onde libero o tráfego de 100mbit para a rede interna, no meu caso nas portas do samba, pra compartilhar arquivos sem a limitação feita para a internet :)