Aqui vou falar sobre alguns itens e configurações básicas que foram utilizadas na experiência.
Hardware (Computador)
Para essa experiência foi utilizado um computador pessoal padrão IBM-PC (x86) com a seguinte configuração:
- Processador Intel Pentium III 850Mhz
- Memória RAM ITAUCOM PC133 256MB
- HD 20GB
- Mainboard Soyo 6vca-133
- VGA PCI 2MB
- 2 Placas de rede Realtek modelo rtl8139
- DVD-ROM
Distribuição Linux
A distribuição do
Linux utilizada nessa experiência foi o
Slackware 12 em DVD instalado de forma completa.
Dica: Geralmente eu instalo sempre o sistema operacional completo, pois acho mais fácil desinstalar um pacote para substituir por outro atualizado do que ter que ficar procurando ou correndo atrás dos pacotes que faltam, ou ainda ficar adivinhando o nome do pacote que eu deveria ter instalado da distribuição para que determinado serviço ou programa funcione.
Link de internet e configuração de rede
O link de Internet é fornecido pela NetVirtua de 2Mbits e a rede local é distribuída por um HUB de 8 portas de velocidade 10/100Mbits.
As interfaces ethernet foram configuradas da seguinte forma:
eth0 (Internet) - com dhcpclient
IP: 0.0.0.0/0
eth1 (Rede Local - LAN) - com ip fixo e dhcpserver
IP: 192.168.0.1/24
Configuração iptables (firewall)
Com o sistema operacional instalado e funcionando adequadamente no computador, utilizamos o IPTables para configurar NAT da interface de rede local (eth1) para que todos os pacotes sejam traduzidos para a rede externa (Internet).
Para isso foi criado um script pequeno, já que nessa rede não há restrições de acesso:
1. Criação do script:
# vi /usr/local/sbin/firewall
#!/bin/bash
SBINDIR=/usr/sbin
$SBINDIR/iptables -F
$SBINDIR/modprobe iptable_nat
# Tradução de endereços (NAT)
$SBINDIR/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# INCLUA DEMAIS REGRAS.... CASO NECESSÁRIO....E SALVE O SCRIPT
2. Dê permissão de execução para o script:
# chmod +x /usr/local/sbin/firewall
3. Incluindo o script na inicialização:
# vi /etc/rc.d/rc.local
# Inicia o firewall
if [ -x /usr/local/sbin/firewall ]; then
. /usr/local/sbin/firewall
fi
Pronto! Agora temos todas as estações compartilhando o acesso a Internet do servidor.
Logicamente, caso você deseje restringir acesso a determinadas estações, fique a vontade.
[1] Comentário enviado por
removido em 07/07/2008 - 10:13h:
Ótimo artigo!!!
é bom ver artigos de verdade novamente no VoL!
Parabéns e obrigado!
[2] Comentário enviado por
gjr_rj em 07/07/2008 - 14:05h:
Excelente artigo !!!
Parabéns!!!
[3] Comentário enviado por
nps em 07/07/2008 - 15:01h:
Estava precisando demais de um artigo funcional do htb..
[4] Comentário enviado por
grandmaster em 09/07/2008 - 13:04h:
Realmente muito bom o o artigo.
Também estava precisando de um artigo sobre o HTB porque acabo sempre achando artigos sobre CBQ.
---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br
[5] Comentário enviado por
rodrigomoschetto em 12/07/2008 - 22:57h:
Obrigado a todos pela visita!
[6] Comentário enviado por
junior.rocha em 24/07/2008 - 21:00h:
Amigo, o HTB é melhor que CBQ pra fazer esse tipo de controle de banda?
dá pra fazer o controle baseado em um grupo de usuários autenticados no squid?
Um abraço.
[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.
Boa sorte!
[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.
[9] Comentário enviado por
rodrigomoschetto em 28/07/2008 - 15:48h:
Minima não, Bandwidth é a velocidade total do seu link de Internet, é Limit é o valor que pode ser consumido do Bandwidth, ou seja, do total.
Por ex, meu link é de 2M(2048k) mas eu quero que seja consumido no máximo 1.5M(1500k) do total.
Agora, qto ao compartilhamento veja se vc não colocou os dois clientes em uma mesma subclasse.
Lembre-se! Dois clientes em uma mesma sub-classe irão compartilhar a mesma banda!
[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 ?
Desculpe ae se ta dificil pra eu entender ; ;)
grato
[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?
[13] Comentário enviado por
rodrigomoschetto em 30/07/2008 - 13:12h:
Legal, aí está uma coisa que eu nunca havia pensado.
Eu acredito que você pode restringir a banda sim para os usuários "por serviço". Acho que essa é a saída.
Por ex: Limitar a banda para todo mundo que acessar esse computador externo via porta 445.. ou então outra porta... sei lá....
Mas eu aposto que funciona!
[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...
[17] Comentário enviado por
rodrigomoschetto em 17/09/2008 - 11:26h:
birobiro
O que a função time faz realmente?
[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...
[19] Comentário enviado por
cirinho em 08/12/2009 - 05:07h:
Estou com problema
Ele roda e aparentemente funciona normal
quando dou htb eth1 stats para monitorar o consumo ele mostra um erro
na verdade é sempre na linha do upload
class netgame {
bandwidth 2500;
limit 3500;
burst 2;
priority 1;
client server {
bandwidth 1024;
limit 2500;
burst 2;
priority 1;
# upload 150;
dst {
10.0.0.100/32;
};
};
client netgame01 {
bandwidth 600;
limit 1024;
burst 2;
priority 1;
# upload 150;
dst {
10.0.0.101/32;
};
};
};
class default { bandwidth 64; };
[20] Comentário enviado por
cirinho em 08/12/2009 - 05:08h:
eu comentei a linha do upload e ai funcionou
[21] Comentário enviado por
cirinho em 08/12/2009 - 05:13h:
porém eu preciso implementar o limite de upload como resolver?
[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?