Olá a todos da comunidade, já procurei muito como aplicar o zero penalty hit (zph) no Squid 2.6, então depois de muitos erros e tentativas aqui estão alguns passos que fiz pra conseguir.
Se acontecer algum erro na hora de instalar tipo "/usr/local/share/man/man8 arquivo ou diretório não encontrado", basta criar a pasta referente ao erro.
Criando a pasta onde vai ficar o arquivo de configuração do HTB:
# mkdir /etc/htb
Entrando no diretório do HTB
# cd /etc/htb
Neste caso vou usar como exemplo um link de 1 mega dividido pra 4 máquinas, ficando pra cada uma 256kbps de download e 128kbps pra upload.
É necessário criar um arquivo nomeado de acordo com a rede interna, neste exemplo vai ficar assim: eth1-qos.cfg.
Editando o arquivo e configurando de acordo com nosso exemplo, adapte de acordo com sua rede:
# vim eth1-qos.cfg
class net {
bandwidth 1024;
limit 1024;
burst 0;
priority 1;
que sfq;
client máquina01 {
bandwidth 192;
limit 256;
burst 0;
priority 5;
upload 128;
dst {
192.168.254.1/32;
};
};
client máquina02 {
bandwidth 192;
limit 256;
burst 0;
priority 5;
upload 128;
dst {
192.168.254.2/32;
};
};
client máquina03 {
bandwidth 192;
limit 256;
burst 0;
priority 5;
upload 128;
dst {
192.168.254.3/32;
};
};
client máquina04 {
bandwidth 192;
limit 256;
burst 0;
priority 5;
upload 128;
dst {
192.168.254.4/32;
};
};
};
class default { bandwidth 80; };
# Thank you for using this script <liviudm[AT]gmail.com>
# End of the script
Vamos ver se tudo deu certo.
Iniciando o HTB:
# htb eth1 start
Você deve ver uma mensagem como esta:
Starting HTB-tools on eth1 ...
Checking the config file ...OK
Checking kernel support for HTB: present.
HTB-tools was successfuly started on eth1.
[5] Comentário enviado por kerneldark em 23/07/2007 - 06:56h
Também ainda não encontrei uma forma efetiva de fazer isto, mas pensei em algum script que verificasse a cada minuto ou menos quantos ips com mac completo estava na tabela arp, depois disso ele mudaria os valores de acordo com o numero de ips encotrado, e reiniciaria o htb com os novos valores.
[7] Comentário enviado por kerneldark em 23/07/2007 - 20:53h
Se tem como, infelizmente não sei te dizer, antes eu usava o cbq e resisti muito a mudar, depois vi que o htb-tools é muito mais fácil pra configurar, você pode ver no exemplo acima, tudo pode ser configurado num único arquivo enquanto no cbq era preciso 2 arquivos para cada cliente.
[8] Comentário enviado por marx599 em 23/07/2007 - 22:06h
Olá amigo, primeiramente ótimo artigo me ajudo muito, fiz tudo como ensinado no artigo e o limite funcionou sussegado junto com o squid a FULL porem fiquei com um problema, quando o HTB está ativado na eth1 (placa da rede local) a rede entre servidor > clientes começa a perder muitos pacotes e os que retornam estam vindo com tempo em ms muito alto, você saberia qual pode ser o motivo disso???
[9] Comentário enviado por kerneldark em 24/07/2007 - 09:44h
Olá, estou analizando o seu problema e pelo visto você tem algum servidor de arquivos como samba ou ftp no mesma maquina que está o htb, também não consegui fazer o samba não ser limitado pelo htb-tools, mas você pode da uma olhada nestes links. Se você conseguir me de uma alô. :-D http://www.wasare.net/home/node/17 http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=4042&pagina=1 http://slackbr.org/forum/viewtopic.php?t=13147
Antes dos links acima pra copiar ~380mb do servidor demorar 179min, depois dos links, demora 30min, mesmo assim é alto pois sem o htb controlando é menos de 10 minutos.
Até mais.
[10] Comentário enviado por marx599 em 24/07/2007 - 10:23h
Olá, no meu servidor não é usado o samba, apenas um servidor de ftp o PROFTPD com alguns arquivos de suporte que quase nem é usado. Quero lembrar que os pings altos e a perda de pings só ocorre quando o HTB está ativo quando ele é desativado tudo se normaliza. Irei dar uma olhada nos links que você me mandou e te retorno. Beleza. Valeu pela dica.
[11] Comentário enviado por marx599 em 24/07/2007 - 11:30h
Ae amigo, concegui usando a dica do primeiro link que vc me mandou http://www.wasare.net/home/node/17 mesmo assim irei continuar fazendo alguns testes por aqui para ver se está tudo normal mesmo. Muito obrigado pelo artigo que afinal está muito bem feito. Valeu mesmo.
[12] Comentário enviado por kerneldark em 24/07/2007 - 11:47h
Ok, no forum do htb-tools tem a seguinte dica pra diminuir os pings altos adicione um cliente para o broadcast, tipo, vamos supor que o ip do seu servidor é 192.168.0.1, você vai adiconar no /etc/htb/eth1-qos.cfg o cliente 192.168.0.255.
Até mais.
[13] Comentário enviado por marx599 em 24/07/2007 - 14:23h
Olha, o problema dos pings já foi resolvido e estou muito contente com o resultado, só está acontecendo algo estranho quando eu paro o HTB e inicio ele denovo da esse aviso quando iniciado:
Checking the config file ...OK
Checking kernel support for HTB: present.
RTNETLINK answers: invalid argument <=(HÁ ALGO DE ERRADO AKI?)
HTB-tools was successfuly started on eth1.
[14] Comentário enviado por agk em 24/07/2007 - 17:20h
Parabéns pelo artigo.
Esse HTB-tools deve ser algo tipo o CBQ, só que esses scripts limitam um pouco as funcionalidades do TC (trafic control), não é necessário fazer scripts para monitorar os clientes e distribuir a banda, é só cadastrar as classes no tc e quanto de link o kra tem no mínimo e quanto ele pode pegar quando o link estiver ocioso.
Para quem quiser se aprofundar um pouco sobre controle de banda é bom ler sobre iproute2, lá tem tudo, as ferramentas ip e tc são formidáveis.
[16] Comentário enviado por thyagomax em 04/08/2007 - 01:42h
Cara, depois que segui todas suas dicas meu firewall bloqueou o porta 80. O que vc acha q fiz de errado ? Pode me esclarecer essa dúvida ? Agradeço desde já. Abração !!!
[18] Comentário enviado por vander_adm em 14/08/2007 - 10:10h
Bom dia!!!
Estou com a seguinte duvida.... segui todos os passos desritos acima...
Só que quando uso o comando /etc/init.d/rc.htb show_eth1.. Pois a minha eth1 é a rede local só aparece o primeiro cliente cadastrado no eth1-qos.cfg
Voce saberia me dizer o porque não mostra todos os clientes que está cadastrados lá.... mesmo estando todos navegando..
[23] Comentário enviado por marcosantiago em 12/09/2007 - 22:24h
Parabens pelo artigo !
Mas tenho uma duvida...
No meu servidor, meus clientes conectam via PPPoE. E é o HTB quem faz o controle de banda. A diferença é que é automatizado.
Existe a possibilidade de funcionar ?
Ou somente essa versão do HTB-TOOLS que tem essa funcionalidade ?
[25] Comentário enviado por cytron em 21/09/2007 - 02:03h
Muito bom artigo, só que aquela coisa de zph_tos_local e zph_tos_parent não sei de onde você tirou, porque meu squid 2.6 não reconheceu, e não encontrei nada sobre isso na documentação.
A promessa de "funcionar a toda velocidade" seria realmente ótimo, se é que temos um referencial de velocidade para comparar.
[27] Comentário enviado por kerneldark em 24/09/2007 - 10:17h
cytron, você tem que baixar o patch, cujo link esta no artigo e aplicar, inclusive um deles é o 90_all_squid-2.6.STABLE13-ToS_Hit_ToS_Preserve.patch que vai da acesso a essas opções, quando você compilar o squid com o patch aplicado, vai criar um arquivo exemplo dentro do diretório de configuração do squid, geralmente /etc/squid/ chamado squid.conf.default, de uma olhada.
[28] Comentário enviado por kerneldark em 24/09/2007 - 10:21h
cobrabatida, isso geralmente acontece quando não aplica o patch no squid, tem que seguir o tutorial, baixando squid, patch e etc, se não, não vai funcionar. Qualquer dúvida estou a disposição.
[29] Comentário enviado por aps167 em 15/10/2007 - 12:42h
Artigo interessante,mas não implementei ainda pois antes queria fazer uma pergunta:
Você disse:
"Gostaria de esclarecer que utilizei os patches do Gentoo pro Squid 2.6, por isso peço que baixe as versões postadas aqui, pois se utilizar uma versão diferente, pode ser que o patch precise ser novamente adaptado."
Para que server este patch? eu uso Debain eu terei que consegui esse patch para o debian? como consigo?
[30] Comentário enviado por kerneldark em 16/10/2007 - 17:01h
Deve funcionar em qualquer distro, os patchs que referenciei do gentoo é que ele funciona certinho pra squid 2.6stable13. e é este que você deve utilizar, os links para o squid como para os patchs, estão no artigo. Qualquer coisa estamos ai.
[31] Comentário enviado por cout lestat em 22/11/2007 - 08:23h
ótimo artigo, o cache sai a toda velocidade mesmo, comprovado. Só que amigo, encontrei um erro que acho que se orgina do HTB, no arquivo modificado q_parser.c , por que quando e configurado no HTB mais que 63 clientes os proximos e o HTB ao ser iniciado fica dando um erro de
NETLINK file exists
not camando `/tmp/eth1-qos.sh`
essas duas linhas aparecem quando é iniciado o HTB, se eu excluir o cliente de numero 64, deixando 63 clientes cadastrado no contrle de banda, o HTB não dá aqueles erro funciona normal.
amigo caso vc consiga encontrar este erro. informa aí. pq até 63 cliente funciona blz.
[32] Comentário enviado por bfmano em 04/01/2008 - 23:03h
cara meu patch não está aplicando não, quando vou aplicar dá a seguinte msg!!!
> patch: **** Only garbage was found in the patch input.
o que pode está acontecendo, ja tentei com o squid-2.6.STABLE2/ e o squid-2.6.STABLE13, e todos os dois dão o mesmo erro!
[34] Comentário enviado por kerneldark em 23/01/2008 - 21:50h
tianguapontocom
Se você prestar atenção não tirei uma linha do seu e sem falar que eu quero é ver quem vai conseguir aplicar o seu artigo no squid 2.6, pois o seu é pro squid 2.5, pro 2.5 é só o que tem por ai. Pro 2.6 na época não tinha e acho que ainda hoje você não vai encontrar não.
Mas estamos aqui pra compartilharmos informações certo.
Um abraço.
[35] Comentário enviado por MorpheusX em 26/01/2008 - 23:40h
Starting HTB-tools on eth1 ...
Checking the config file ...OK
Checking kernel support for HTB: present.
RTNETLINK answers: File exists
Command failed /tmp/eth1-qos.sh:198 <--- QUE ERRO E ESSE???
HTB-tools was successfuly started on eth1.
E porque quando dou HTB ETH1 START todas as maquinas param de navegar???
Sendo que eu ja uso o HTB mas nao a versao a cima...
mas no meu tenho que colodar DST e SRC, Donw e Up, tudo separado!!! sera que esse e o problema???
[37] Comentário enviado por ivanway em 30/01/2008 - 14:18h
Olá pessoal gostei muiito do artigo do amigo kerneldark!!!
Parabéns cara!!!!!! Precisamos de pessoas humildes e atenciosas como vc para crescer cada vez mais este site!!!
Esse tianguapontocom(Emanuel) é um tremendo de um orgulhoso ignorante q se acha o melhor dos melhores e passa por cima daqueles q são como ele um dia foi, um curioso em linux... Afinal de contas ninguém nasce sabendo!!!
Faz um tempo q trabalho com linux e confesso, não sei 10% do q este orgulhoso sabe, mas com certeza sei compartilhar informações com aqueles q se igualam a mim ou estão abaixo de mim... Creio q a função principal deste site seja o compartilhamento de informações e não links quebrados ou “placas estampadas” dizendo: EU SEI E VC NÂO SABE E NÂO VOW LHE DAR A MINIMA CONDIÇÂO DE FAZER E NEM VOW AJUDAR VC A FAZER!!!!
Fica aqui meus agradecimentos ao amigo kernel e minha indignação por permitirem pessoas desse tipo neste site.
[38] Comentário enviado por ratodeporao em 07/02/2008 - 21:31h
kerneldark,
Fiz tudo como manda o figurino e esta dando erro:
Starting HTB-tools on eth0 ...
Checking the config file ...OK
Checking kernel support for HTB: present.
RTNETLINK answers: File exists
Command failed /tmp/eth0-qos.sh:261 <--- AQUI O ERRO
HTB-tools was successfuly started on eth0.
Sem aplicar o q_parser.c ao HTB não da esse erro mas tmb o cache full não funciona.
[41] Comentário enviado por cybernetico em 03/04/2008 - 20:16h
Pessoal...segui o artigo passo a passo...está acontecendo um erro muito estranho. Criei o arquivo pra eth1 e rodou blz...depois parei o serviço e criei um novo arquivo pra eth0 e tentei rodar e nada. Agora o que acontece quando tento rodar tanto na eth0 quanto na eth1 com arquivos diferentes ele fica na etapa
Checking the config file... o cursor fica aí e nada feito...já resetei o micro refiz os arquivos de configuração e nada...
Alguém por acaso teve esse problema???
[43] Comentário enviado por Good_speed em 23/04/2008 - 11:10h
Kerneldark,
Parabéns pelo seu artigo, estou com duas duvidas;
1. Vc manda start o squid com as opções -DYC certo, só que notei que meu rc.squid estava sendo executado só com a opção -D, e não estava conseguindo baixar o arquivo na velocidade full na segunda maquina, isso pode ter acontecido devido este erro?
2. Não consegui executar nenhuma das linhas dos patch como esta descrito no artigo. mais consegui executar a linha removendo um dos "<" da linha de comando, isso tem alguma coisa a ver?
[45] Comentário enviado por Good_speed em 24/04/2008 - 08:53h
Kerneldark
Nao conseguei fazer o cache full funcionar utilizando seu artigo,
ja revisei todo o artigo e nao achei nenhum erro, cara me dar uma forca ai,
onde vc acha que estou errando?, dei uma olhada na configuracoes do squid e
fiquei na duvida se nao esta faltando alguma linha de configurcao do zph?,
outro detalhe estou usando o slack 12 com Iptables-1.3.8, Squid-2.6.STABLE13, ]
HTB-tools-0.3.0a, Kernel-2.6.21.5-smp.
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
#valor do tos necessário para o cache funcionar a toda velocidade.
zph_tos_local 16
zph_tos_parent off
forwarded_for off
error_directory /usr/share/squid/errors/Portuguese
coredump_dir /cache/squid
detect_broken_pconn on
pipeline_prefetch on
[47] Comentário enviado por emersonwifi em 26/04/2008 - 21:34h
ola amigo !
seu artigo e show
mais meu cahe so esta funcionando a full quando baxo o winrar.
e eu quria saber se tem alguma maneira de automatizar o controle de banda
[48] Comentário enviado por Good_speed em 28/04/2008 - 11:06h
Kernekdark,
Na compilacao do squid e htb nao ouve nenhum tipo de erro, o controle de banda esta funcionando muito bem, o squid tb, so nao consigo baixa com velicidade full na segunda maquina de teste.
[49] Comentário enviado por emersonwifi em 28/04/2008 - 14:20h
o meu cache ta ate passando a full so nao esta na velocidade total da rede, so esta baixando o que esta no cache a 2Mbps
como faço para colocar a 100 Mbps
[50] Comentário enviado por mastergbi em 14/05/2008 - 14:29h
Não sei se alguem passou por isso, mais o eu "net" so funcionou quando add a linha:
echo 1 > /proc/sys/net/ipv4/ip_forward
Sem essa linha as maquinas clientes ficam sem internet...
[51] Comentário enviado por mastergbi em 14/05/2008 - 15:54h
Respondendo a resposta do amigo "emersonwifi", só baixa o winrar porque o winrar é menor q 4096 KB, ou seja ele baixa todo arquivo ate essa velocidade, eu também so tava baixando o winrar, mais quando eu teste outro de 2,11(brazip) ficou no proxy tb, para aumentar o limite eh so ir em /etc/squid/squid.conf e alterar de "maximum_object_size 4096 KB" para "maximum_object_size 10096 KB" coloquei 10M, ou vc eh q sabe...
[52] Comentário enviado por thiagobruno em 26/06/2008 - 17:02h
Estou com o mesmo problema do amigo cout lestat tenho hj 63 clientes cadastrados no HTB + Cache Full, porém quando eu add o cliente 64 da erro na linha 198.
Alguém teria uma luz sobre esse problema? ou entao uma solução p usar o cache full sem precisar aplicar o q_parser.c modificado???
[53] Comentário enviado por xterminal em 01/09/2008 - 11:39h
Ola pessoal, estou montando um servidor com controle de banda e cache full.... Estou com dificuldades na hora de compilar o HTB-tools, aparece o seguinte erro no shell.
[54] Comentário enviado por paulo32 em 17/09/2008 - 11:08h
consigo aplicar o path sem problemas , mas quando digito a linha de comando ./configue \--perfix *... então ele executa depois eu dou um make e make install , mas não sei aonde vai parar o diretorio do squid. aonde vai parar o diretorio do squid quando faço asssim? e
[57] Comentário enviado por jgama em 27/12/2008 - 16:15h
Estou usando o Centos 5.2 e tive problema na hora de copilar o HTB, mas resolvir o problema pois faltava criar uma pasta asm e criar um link simbolico.
Uso Squid autenticado e depois de tudo configurado, fui fazer o teste e me supreendi, fiz um Download do jogo do fifa 2007 que demorou 2 horas e meia, pois o meu link é de 1MB "que lixo" ADSL com IP fixo.
Mas depois de termionado o download fui em outra estação e baixei o mesmo download de 564MB em 15 segundos.
Porém acho que as paginas da internet mesmo aquelas que já foram acessadas em outras máquinas demoram um poquinho para aparecer, não teria que ser rapinho como foi com o download?
Mesmo sabendo que hoje em dia a maioria da paginas são dinâmicas.
Estou usando esta configuração do eth1-qos-cfg
###############
# eth1-qos.cfg #
################
# for how to configure and use see docs/HowTo/
[58] Comentário enviado por kerneldark em 11/01/2009 - 10:10h
Como venho recebendo muitos emails com dúvida sobre o arquivo q_parser.c, venho esclarecer.
o q_parser.c modificado nada mais é do que o arquivo original adicionado o seguinte depois da classe raiz:
printf("$TC class add dev $DEV parent 1: classid 1:60 htb rate 100mbit ceil 100mbit burst %dk quantum 1536\n", max_burts);
printf("$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip protocol 0x6 0xff match ip tos 0x10 0xff flowid 1:60\n");
ou seja, na primeira linha é criada uma classe de 100 mbit
e na segunda é adicionado um filtro que joga os pacotes com marca 16 (0x10) pra classe de 100 mbit.
Eu apenas coloquei ele já modificado pra facilitar a vida.
Espero que assim acabe a dúvida sobre o arquivo modificado.
[60] Comentário enviado por rodriguesoline em 23/07/2009 - 18:11h
Starting HTB-tools on eth0 ...
Checking the config file ...OK
Checking kernel support for HTB: present.
RTNETLINK answers: File exists
Command failed /tmp/eth0-qos.sh:261 <--- AQUI O ERRO
HTB-tools was successfuly started on eth0
Na hora de compilar o HTB-tools modifique a linha do q_parser abaixo
printf("$TC class add dev $DEV parent 1: classid 1:60 htb rate 100mbit ceil 100mbit burst %dk quantum 1536\n", max_burts);
printf("$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip protocol 0x6 0xff match ip tos 0x10 0xff flowid 1:60\n");
1:60 por 1:90 po exemplo
cada usario cadastrado no htb-tools ele cria
filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:50
filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:51
algo parecido, quando chega no 1:60 o erro acontece. Pois o mesmo já foi criado anteriormente no print acima
Solução troque a marcacão.
[66] Comentário enviado por tosko em 08/07/2010 - 23:48h
seguinte tenho uma duvida,
pelo que ja estudei existe duas formar de se configurar o HTB certo?
uma é atravez daqueles comandos do pacote IPROUTE2
tc, qdisc, etc..
e outra atravez deste simples script que é o htb-tools certo ou errado?
a meu ver o kernel interpreta o que esta no script e transforma nos comandos complexos, mas istu tudo transparente para o usuario
é assim mesmo que funciona?
tenho uma outra duvida, se eu deixar uma maquina fora dos arquivos do htb, ela vai ficar sem controle de banda? baixando a tanto que puder?
[68] Comentário enviado por kerneldark em 17/08/2010 - 21:12h
Respondendo ao blooddragon, como a própria mensagem já diz, você precisa instalar o pacote flex.
E ao Tosko, quem não for colocado vai cair na class default, que no exemplo é 8. Ou seja o cliente vai navegar a 1k.
Até mais galera.