Controle de banda sem mistérios para servidores

Vendo que muitos ainda brigam para implementar banda no Linux usando CBQ e cia, resolvi postar este pequeno texto para mostrar a todos uma maneira bem fácil de se ter isto sem nenhuma dor de cabeça usando o projeto UnderlinuxBandlimit.

[ Hits: 29.582 ]

Por: Edson Doria em 31/01/2008 | Blog: http://fenixse.blogspot.com


Iniciando e finalizando sem rodeios.



Vendo que muitos ainda brigam para implementar banda no Linux usando CBQ e cia, resolvi postar este pequeno texto para mostrar a todos uma maneira bem fácil de se ter isto sem nenhuma dor de cabeça.

Há também uma versão para se controlar p2p, mas ainda não testei então brevemente coloco uma "emenda" (vamos lembrar dos nossos parlamentares) neste texto. Lembro que neste texto utilizo Linux Fedora 6.

Vamos lá!

O projeto UnderLinux Bandlimit tem como objetivo prover uma fácil solução para o controle de banda baseado na idéia de Francisco Antonello (Skyzer) e Marcus Maciel, como explica o wiki do projeto. Verifique em:
Dependências:
  • Iptables ou Ipchains, iproute2 e módulos de kernel do CBQ, QoS.
  • Iptables precisa de Iptable_mangle e ipt_MARK
  • Ipchains nenhuma.

Como uso Fedora, nunca precisei me preocupar com os módulos de kernel e nem com o resto mas acredito que em nenhuma distribuição alguém vá precisar, todavia se alguém descobrir algo, por favor me avise para que eu corrija.

Vamos a instalação do danado.

Baixe o rc.bandlimit-V0.4 do link:
Agora crie um diretório chamado "bandlimit" dentro do seu /etc, dentro deste diretório, com seu editor favorito, crie uma arquivo chamado "ips" e salve seu primeiro ip e velocidade que serão controlados no formato:

ip:ratein:rateout.

Ex:

10.10.2.1:97:33

No mesmo diretório, crie agora um arquivo chamado "interfaces" e salve dentro dele as interfaces usadas no formato:

ethx

Ex:

eth0
eth1

Sempre um por linha tanto no arquivo ips quanto no interfaces.

Quando se erra uma letra no nome dos arquivos, ocorre uma falha na leitura do kernel portanto preste atenção.

Vamos editar agora o arquivo rc.bandlimit-V.04 e começar a modificá-lo.

Procure por esta parte do arquivo.

IPTABLES=`which iptables`
TC=`which tc`
IPCHAINS=`which ipchains`
GREP=`which grep`
CUT=`which cut`
EXPR=`which expr`

Acrescente um cerquilha na 3 linha como abaixo:

IPTABLES=`which iptables`
TC=`which tc`
#IPCHAINS=`which ipchains`
GREP=`which grep`
CUT=`which cut`
EXPR=`which expr`

Agora se você usa Iptables (eu acho que todos devem usar hoje em dia), a parte do arquivo que está abaixo já deverá estar correta:

#Firewall's Suportados ipchains e Iptables # Padrão IPTABLES
#firewall=ipchains
firewall=iptables

Se não, descomente o ipchains e comente o iptables. E vamos mudar somente agora a parte das interfaces de rede.

#############
# Interfaces
redelocal=eth0
#redelocal2=eth0
redelocal2=inexistente
internet=eth1
#############

Repare que neste exemplo, a redelocal está na eth0 e internet na eth1, modifique de acordo com sua rede.

Feito isso, vamos dar permissão de execução no rc.bandlimit-v0.4 com o comando:

# chmod +X rc.bandlimit-v0.4

No fedora, mova este arquivo para o diretório /etc/rc.d/init.d e entre com o comando:

# /etc/init.d/rc.bandlimit-v0.4 install

Ele deve te retorna a mensagem, "SISTEMA JÁ INSTALADO". Como último passo entre com o comando:

# /etc/init.d/rc.bandlimit-v0.4 start

Pronto agora verifique a banda nos outros computadores da rede em que você já cadastrou no arquivo "ips" do diretório /etc/bandlimit.

Este texto tem como intenção ajudar aos amigos, qualquer crítica é bem vinda desde que seja para melhoria do mesmo. Qualquer pessoa está autorizada a distribuir, publicar ou enviar por e-mail desde que mantenha os créditos do autor.

   

Páginas do artigo
   1. Iniciando e finalizando sem rodeios.
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Bind9 em chroot no Debian Lenny

Comando sudo - instalação e configuração

Load balance e alta disponibilidade com Bonding

Instalação do Asterisk - Distribuição Trixbox

Configuração do SSL no Apache

  
Comentários
[1] Comentário enviado por rogerio-reis em 31/01/2008 - 19:05h

Fala meu camarada.
Este assunto é sempre interessante para adm de redes. Como você já testou, talvez possa esclarecer alguns pontos pra mim e pra galera:
É possível cadastrar uma range de IPs? Tipo de 192.168.1.10 até 192.168.1.50 e
É possível definir as configurações por porta? tipo priorizar a porta 80 e reduzir a 25?

No mais, gostei do artigo, simples e direto, parabéns!

Abc.,

[2] Comentário enviado por silent-man em 01/02/2008 - 10:37h

você consegue limitar banda em certas portas/serviços com o iptables.
www.netfilter.org e procure saber sobre o "patch-o-matic" e seus módulos...
Agora você também pode controlar isso pelo CBQ sem problemas.

[3] Comentário enviado por mredd em 01/02/2008 - 10:47h

Excelente artigo, simples e objetivo.

Estou na briga pra fazer controle de banda no IPCop. Você conhece alguma forma fazer isso??
Tenho cinco VLans para controlar e preciso limitar a banda por Faixa ou rede. Conhece alguma forma de fazer isso?

Até mais.

[4] Comentário enviado por tiago_s em 01/02/2008 - 17:39h

Olá, eu fui testar aqui o controle de banda e nao funcionou corretamente.
O Bandlimit esta atuando na minha rede local tambem, ou seja, o sistema todo ficou praticamente parado, só quando eu paro o servico a minha rede volta ao normal.
Gostaria de saber pq isso ocorre, alguem sabe?
PS. Eu especifiquei corretamente a minha interface tanto no "rc.bandlimit" quanto no "interfaces"
[]'s

[5] Comentário enviado por agk em 02/02/2008 - 00:11h

Parabéns pelo artigo, tenho algumas dúvidas.
Esse programa controla download, upload, faz concessão de banda (ceil), tem rajada para evitar latências em serviços interativos?

[6] Comentário enviado por elgio em 03/02/2008 - 21:19h

Muito interessante!

A propósito: achei que nunca mais ouviria falar do ipchains... hehehehe

[7] Comentário enviado por fabioarnoni em 04/02/2008 - 16:31h

Ahhh Valeu !!! Isso vai ser útil aqui onde trabalho hehehe falouu!!!

[8] Comentário enviado por Gilvan Borges em 05/02/2008 - 19:53h

Muito bom artigo, escrito de maneira limpa e direta...executei os procedimentos no cl10...porém não deu certo...segue:
[root@datarpo bandlimit]# /etc/init.d/rc.bandlimit install
Sistema ja instalado.
[root@datarpo bandlimit]# /etc/init.d/rc.bandlimit start
/etc/init.d/rc.bandlimit: line 365: [: !=: unary operator expected
[root@datarpo bandlimit]#

[9] Comentário enviado por Gilvan Borges em 05/02/2008 - 19:58h

Amigo achei o erro...comentei a linha...e serviço subiu sem erro!!!
agora vou testar...ete falo se achar mais algum erro...

[10] Comentário enviado por celsof2 em 27/03/2008 - 22:46h

bom mesmo

[11] Comentário enviado por joselpedrozo em 23/07/2008 - 11:51h

FENIX.SE
Muito bom seu artigo.

Mas quando o serviço é ativado toda o DOWNLOAD rede é limitada (local e internet). E o UPLOAD apenas limitado na internet, na rede não tem o limite estabelecido.

Gostaria de saber se tem como limitar TODO o upload da rede.

Obrigado!

[12] Comentário enviado por joao_paulo em 17/02/2009 - 12:50h

Funcionou aqui, cara!
Parabéns!

[13] Comentário enviado por rausth em 05/08/2009 - 17:23h

olá...velho tenho uma dúvida, tenho um servidor DNS rodando o Ubuntu 8.04 configurado com Squid+IPtables e oq pude observar no scrip, é que ele altera as regras do mesmo, é possível instala-lo sem alterar essas regras?como faço para implementar o bandlimit sem alterá-las??
se puder me ajudar agradeço!!!

[14] Comentário enviado por GmasterSMO em 15/10/2009 - 00:15h

E daí cara.

Controle de banda é um assunto novo pra mim, e utilizei o seu artigo e segui o passo-a-passo porem no final fiquei confuso, por que a minha versao do linux é o Ubuntu que esta instalado na maquina virtual dentro do vista, e a minha duvida é na questão da placa de rede eth por que acho que na maquina virtual é utilizado a eth0 tanto para a rede local como para a internet e por isso da um erro quando dou o START no arquivo rc.bandlimit-v0.4.

Se voce puder me ajudar agradeço muito

OBS: Gostei muito do seu artigo, bem explicado e claro, o problema é que eu sou meio leigo no assunto.heheheh


att Glauston

[15] Comentário enviado por fenix.se em 15/10/2009 - 09:01h

Oi Glauston.
Seguinte. A questão é, vc esta usando uma VM, eu nunca testei o Bandlimit em alguma por isso não posso te dizer algo antes de fazer. A propósito, qual sua VM ?

"We have an error talking to the kernel"

"Nós temos um erro ao se comunicar com o Kernel"

Uma vez que este script precisa precisa do kernel, seria importante verificar se as deps foram cumpridas. Ou então tente usar uma versão Server do Ubuntu.

[16] Comentário enviado por cirinho em 17/02/2010 - 01:59h

Realmente no início tive problemas eu configurei errado então ele invertia o controle do up virava donw e vice-versa. Dei uma modificada e ai ficou perfeito.

Embora apareça essa msg de erro tanto ao ligar quanto ao desligar o controle funciona.

RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory

O único problema é que nem o brother acima comentou, percebi que o banlimit esta limitando todo o tráfego na minha rede interna o que fica um saco para enviar e receber arquivos dentro da rede a velocidade padrão da rede 100mb tem que desligar o controle de banda.

eth0 - internet 192.168.254.1 255.255.255.0
eth1 - rede local 10.0.0.1 255.255.255.0

Alguém ja passou por esse problema e conseguiu bloquear o limite de banda na internet e ao mesmo tempo liberar o tráfego da rede interna?

[17] Comentário enviado por cirinho em 17/02/2010 - 18:50h

Na verdade eu testei.

Na internet ele limita legal tanto donwload quanto upload conforme as regras q eu crio no arquivo ips.

Porém na minha intranet (rede local) ele fica limitando o donwload como se fosse na internet, o upload ele ta blz envia a velocidade padrão da rede local ethernet 100mb +/- 10 mb/s, porém o donwload ele fica limitando.

Alguém tem alguma idéia como arrumar este problema ?

[18] Comentário enviado por cirinho em 19/02/2010 - 05:05h

Galera ta difícil.

Fiz testes troquei meu modem roteado por uma discada substituindo a interface da internet por ppp0 e funciona igualmente, porém observei que o meu upload limita legal na internet via ftp e via irc porém via http ele não faz o limite.

Resumindo tenho dois problemas.

Rede local ele limita quando não deveria (apenas donwloads)
Internet ele não limita quando deveria (apenas upload via http)


Alguém ai poderia me ajudar?

[19] Comentário enviado por antonioclj em 20/04/2010 - 21:06h

Prezado cirinho,

Este limite deve-se ao fato de normalmente bloquearmos a interface eth0 ou eth1. Em ambos os casos para a rede local ficaria limitado o tráfego interno. Até mais.

[20] Comentário enviado por pardalz em 10/05/2010 - 15:38h

por exemplo, tenho uma banda de 1MB e tenho voip.
como que eu faço para para o servidor aqui usar somente 700k da minha banda?

eu fiz assim: Limitei o upload da placa de rede da internet para 700
200.200.200.200:1000:700

na teoria ta certo, mas na prática :S?

[21] Comentário enviado por mamaunet.sob em 26/05/2010 - 08:50h

Olá amigos, comecei a usar o script ha um tempo 3 meses e venho
de la pra cá com uma grande luta, que é fazer o controle de upload
minha conexão ADSL 4512kbps de Down / 576kbps de Up... (192.168.100.x)
ja na saida 10.0.0.x em um cliente por exemplo a 150k o Up seria 75k
teoricamente mas da 400k... se alguem souber se existe alguma luz
no final do tunel ficaria grato por uma ajuda.

Att. Mauricio


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts