Configuração do Shaperd no Debian Lenny

Nesse artigo vamos falar um pouco sobre o Shaperd, que vem para controle de banda nas distribuição
Debian. O foco desse artigo não é exaurir todas as funcionalidades da ferramenta, mas sim dar uma
visão de como colocar a ferramenta em produção e funcional.

[ Hits: 31.793 ]

Por: Daniel Barcelini em 29/04/2011


Configuração da rede, instalação do Shaperd e módulos do Kernel



Versão do Debian: a 5.0.4.
Versão do Shaperd: 0.2.1-5.2
Versão do Iptables: 1.4.2-6
Versão do kernel: 2.6.26-2-686

Após instalação do sistema operacional foram configuradas duas interfaces de rede. Uma destinada à LAN e outra para WAN, que seguem as configurações abaixo:

Rede WAN eth0 com ip 143.X.X.247
Rede LAN eth1 com ip 192.168.10.1 (gateway da rede interna)

Abrindo o arquivo para edição:

# vim /etc/network/interfaces

auto lo eth0
iface lo inet loopback

#Rede externa = WAN
iface eth0 inet static
   address 143.X.X.247
   netmask 255.255.255.0
   network 143.X.X.0
   broadcast 143.X.X.255
   gateway 143.X.X.1
   # habilitar o NAT
   up iptables -t nat -A POSTROUTING -o $IFACE -j MASQUERADE

#Rede interna = LAN
iface eth1 inet static
   address 192.168.10.1
   netmask 255.255.255.0
   network 192.168.10.0
   broadcast 192.168.10.255
   gateway 143.107.200.1


   dns-nameservers 143.X.X.45
   dns-search dominio.usp.br

Após configurar as interfaces de rede e habilitar o NAT precisamos instalar os pacotes:

# aptitude install shaperd

Caso não esteja com o iptables instalado:

# aptitude install iptables

Ativando o módulo do kernel ip_queue:

# modprobe ip_queue

    Próxima página

Páginas do artigo
   1. Configuração da rede, instalação do Shaperd e módulos do Kernel
   2. Configurando o Shaperd
   3. Configurando o Iptables e direcionando o tráfego para Shaperd
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

HylaFAX + AvantFAX: Monte seu próprio servidor de fax

Configurando Bluetooth no XUbuntu

Codificação de caracteres de arquivos ASCII

Acessando remotamente máquina Windows dentro de uma VPN através do Ubuntu

VMWare Server no Debian Linux 4.0 (Etch) (i386 e AMD64)

  
Comentários
[1] Comentário enviado por felipe_sama em 29/04/2011 - 12:48h

legal, o que eu estava procurando.

[2] Comentário enviado por trnet em 29/04/2011 - 13:44h

Cara funciona da mesma maneira no Debian Squeeze?

tem como usar o shaperd com cbq?


Abraço!!!


[3] Comentário enviado por tosko em 01/05/2011 - 13:04h

em, neste caso desta configuração do shaperd vc não esta confundindo kbit/s por kbyte/s porque na classe A vc ta limitando uma banda de 56kbyte/s e la no final na class_from_b e class_from_c o total do link é 512kbyte/s que da um total de um link de 4Mbit/s é isto mesmo o link necessario para este escript deste jeito é um link de 4Mbit/s Up e Down? ou é 512Kbit/s up e down?

lembrando que link de internet e transferência de rede local é medida em Kbit, os gerenciadores de download medem a velocidade do download em Kbyte (ou seja kbit * 8)

é isto? ou tu confundiu kbyte por kbit ?

outra coisa este shaperd vai limitar o trafego da rede local ou só o que vai pra net?

[4] Comentário enviado por ratifers em 02/05/2011 - 11:40h

trnet desculpa a demora para a resposta bom sobre o squeeze nao cheguei a usa-lo ainda para isso mas creio que funcione normalmente.

e sobre o cbq os dois programas tem a mesma finalidade então não vejo o porque de utiliza-lo simultaneamente.

abraços

[5] Comentário enviado por ratifers em 02/05/2011 - 11:56h

osko não os dados colocado estão certos tanto o é porconta que é o arquivos de configuração e se estivesse errado ele não funcionária esse ..arquivo foi meramente ilustrativo e utilizei testes com a prórpia interface de rede fastethernet. nada impede de adequar suas necessidades .mas nesse exemplo.

nesse exemplo o que ele faz limita para o ip 192.168.10.3 o uso de 512 kbytes/s e para o resto o uso de 56kbytes/s como tem o borrow o que pode acontecer eh que ip 192.168.10.3 não esta usando os 512 kbytes/s disponivel para ele sendo assim o resto da rede pode usa-ló ou seja ele soma a regra dos 56kbytes/s mais o que está disponivel no 512kbytes/s sendo que no topo de trafego dessa rede ele pode usar teria que ter um link para suportar o trafego de 56k mais os 512k tanto para up quanto para down veja que na regra eu trato isso e pode ser mudado tanto a banda liberada para up como a banda liberada para down. e como disse anteriormente sem problema vc utilizar isso para controle de rede desde que a maquina seja o gateway ou configure a para controlar a respectiva interface um exemplo seria vc configurar o entra na eth0 e o que o sai dela controlando essa banda.

Espero que tenha conseguido esclarecer sua duvida.

Abraços

[6] Comentário enviado por jimmy.aa em 06/05/2011 - 13:45h

ótimo artigo, gostaria de saber se desta forma ele barra tambem a banda do cache do squid, oque não seria interessante

[7] Comentário enviado por ratifers em 10/05/2011 - 13:49h

bom jimmy.aa com isso você está fazendo um shappe na placa de rede então ele irá barrar todo o trafego que nela ali passar salvo se você trabalhar essas exceções como dito na ultima linha ou seja fazer a perfumaria.

Abraços

[8] Comentário enviado por rafaelhenrique em 10/10/2011 - 10:48h

Oi galera!!

Alguém ai já testou essas configurações com um Firewall (iptables) + Proxy (squid3) já em funcionamento? Tenho um pouco de medo que umas regras atrapalhem as outras... pois tenho um Firewall ENORME aqui... vou fazer uns testes com a minha VM porém gostaria de saber se algum de vocês já fez a experiência.

E parabéns ao ratifers pois o artigo está otimo! Fez um ótimo trabalho companheiro! :D

Obrigado

[9] Comentário enviado por rafaelhenrique em 10/10/2011 - 16:48h

Boa tarde galera!

Fiz um cenário de testes desta forma:

log level = debug2
packet forwarding = ipq
daemon = yes
pidfile = /var/run/shaperd.pid

class from_A {
bandwidth = 56 kbyte/s

ipv4 classifier prio=0 proto=tcp \
inp_if=vboxnet0 saddr=172.16.100.0/255.255.255.0 \
out_if=eth0 daddr=0.0.0.0/0.0.0.0

ipv4 classifier prio=1 proto=udp \
inp_if=vboxnet0 \
out_if=eth0

queue limits = 0 kb 100 packets
}

class from_B {
bandwidth = 56 kbyte/s

ipv4 classifier prio=0 proto=tcp \
inp_if=eth0 saddr=0.0.0.0/0.0.0.0 \
out_if=vboxnet0 daddr=172.16.100.0/255.255.255.0

ipv4 classifier prio=1 proto=udp \
inp_if=eth0 saddr=0.0.0.0/0.0.0.0 \
out_if=vboxnet0 daddr=0.0.0.0/0.0.0.0

queue limits = 0 kb 100 packets
}

O ip da minha máquina virtual é 172.16.100.2 e as regras do iptables ficaram da seguinte forma:

# iptables-save
# Generated by iptables-save v1.4.8 on Mon Oct 10 16:46:40 2011
*filter
:INPUT ACCEPT [39498:18222886]
:FORWARD ACCEPT [838:123718]
:OUTPUT ACCEPT [39607:8531833]
-A FORWARD -s 172.16.100.0/24 -i vboxnet0 -o eth0 -j QUEUE
-A FORWARD -d 172.16.100.0/24 -i eth0 -o vboxnet0 -m state --state RELATED,ESTABLISHED -j QUEUE
COMMIT
# Completed on Mon Oct 10 16:46:40 2011
# Generated by iptables-save v1.4.8 on Mon Oct 10 16:46:40 2011
*nat
:PREROUTING ACCEPT [3829:411030]
:POSTROUTING ACCEPT [3435:290914]
:OUTPUT ACCEPT [3435:290914]
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 172.16.100.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Oct 10 16:46:40 2011

A máquina virtual navega, porém quando eu mando baixar uma imagem ISO de Debian por exemplo ela atinge o topo de 223 K/s e eu queria que ela somente baixasse a 56 K/s o que eu fiz errado? Alguém ai pode me dar uma ajuda?

Obrigado

PS: O shaperd está rodando e não apresentou nenhum erro

[10] Comentário enviado por rafaelhenrique em 10/10/2011 - 17:10h

Pessoal enfim consegui resolver meu problema a regra que me atrapalhava era:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

Pois quando era estabelecida uma conexão na porta 80 quem gerenciava a mesma era o Squid3 e não o Shaperd!
Removi a regra e tudo funcionou como o previsto! Portanto se eu quiser usar o Squid3 terei que limitar a porta 80 com delay polls (tem vários tutoriais no VOL sobre isso).

Obrigado pelo tutorial novamente ratifers

[11] Comentário enviado por wandersonbpaula em 17/03/2012 - 10:22h

ratifers,
O que seria essa perfumaria?
Poderia ser mais especifico?

[12] Comentário enviado por ratifers em 04/04/2012 - 14:46h

wandersonbpaula a parte de perfumaria como disse acima seria a configuração de portas especificas.

[13] Comentário enviado por ksombrah em 13/05/2013 - 09:49h

Bom dia!

Estou com um problema no Shaperd com o seguinte cenário:

WAN : eth1 e/ou ppp0
LAN : eth0

Tem um link redundante que utilizo quando a internet (eth1) cai, ai eu aciono a 3g (ppp0) as regras no firewall conseguem fazer o roteamento e o squid funciona belezinha, mas a navegação sem proxy, controlada pelo shaperd, não funciona, mas quando voltou para a internet ele funciona normalmente,

segue abaixo o shaperd.conf que estou usando:

log level = info
packet forwarding = ipq
daemon = yes
pidfile = /var/run/shaperd.pid

class gvt {
ipv4 classifier proto=all \
inp_if=eth1 saddr=0.0.0.0/0.0.0.0 \
out_if=eth0 daddr=0.0.0.0/0.0.0.0
bandwidth = 512 kbyte/s
queue limits = 1000 kb 0 packets
}

class 3g {
ipv4 classifier proto=all \
inp_if=ppp0 saddr=0.0.0.0/0.0.0.0 \
out_if=eth0 daddr=0.0.0.0/0.0.0.0
bandwidth = 512 kbyte/s
queue limits = 1000 kb 0 packets
}

Alguém já passou por isso....

[14] Comentário enviado por thehell em 19/05/2014 - 19:18h

utilizei seu exemplo mais quando eu habilito as regras do iptables a minha maquina não navega, o que posso estar fazendo de errado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts