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.730 ]

Por: Daniel Barcelini em 29/04/2011


Configurando o Iptables e direcionando o tráfego para Shaperd



Subindo as regras do firewall, com o iptables vamos "direcionar" os pacotes para que sejam entregues para o Shaperd, permitindo a ele fazer o Shapper.

Lembrando que quando se direciona o tráfego de determinados IPs e no Shaperd não tem configurações de Shaper para o referido IP ele fica perdido, ou seja, se você jogar toda a rede e só fizer regra para alguns, os outros ficarão sem acesso.

Para evitar isso podemos subir a regra para IPs específicos um a um ou, se optar por jogar a rede toda, lembre de configurá-la no Shaperd, lembrando também que se parar o Shaperd retire essas linhas do IPtables.

#Configuração do iptables para a maquina com IP=192.168.10.2
iptables -A FORWARD -s 192.168.10.2/32 -i eth1 -o eth0 -j QUEUE
iptables -A FORWARD -d 192.168.10.2/32 -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED -j QUEUE

#Configuração do iptables para a maquina com IP=192.168.10.3
iptables -A FORWARD -s 192.168.10.3/32 -i eth1 -o eth0 -j QUEUE
iptables -A FORWARD -d 192.168.10.3/32 -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED -j QUEUE

#Exemplo de configuração do iptables para toda a rede 192.168.10.0/24
#iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -o eth0 -j QUEUE
#iptables -A FORWARD -d 192.168.10.0/24 -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED -j QUEUE

Bom, basicamente é isso! Para que funcione de forma simples você pode fazer perfumaria nele especificando portas nas configurações do Shaperd.

Por enquanto é só.

Abraços!

Página anterior    

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

Instalar XGL e Beryl no Ubuntu 6.06 LTS (Gnome)

Passando o Slackware 10.2 em Inglês para o Português

Backup com Rsync

Montando o diretório /home em outra partição

Configurando NFS + NIS (Ubuntu)

  
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