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: 32.163 ]

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

Como gerenciar cotas de disco

Entendendo o TCP/IP

Criando uma imagem de instalação do Ubuntu

Instalação do GLPI no GNU/Linux CentOS 7.0

Calculando máscara de sub-rede e broadcast

  
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