<html><div style='background-color:'><DIV class=RTE><PRE>#!/bin/bash
##############################################################################
# UnderLinux BandLimit #
# ============================================ #
# #
# Copyright (c) 2003 by Marcus Maciel(ScOrP|On) scorpion@underlinux.com.br #
# http://www.underlinux.com.br #
# #
# This program is free software. You can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation; either version 2 of the License. #
##############################################################################
# Dependencias
# Ipchains ou Iptables , iproute2 , modulos do kernel de CBQ QoS e compania... hehehe :)
# Iptables: necessita de iptable_mangle e ipt_MARK
# Ipchains: nenhuma
##################
#INSTALACAO
# crie o diretorio bandlimit dentro do seu /etc
# mkdir /etc/bandlimit
# dentro deste diretorio crie os arquivos ips e interfaces
# touch /etc/bandlimit/ips
# touch /etc/bandlimit/interfaces
# depois edite o ips e o interfaces
# colocando dentro do ips
# os ips que vc deseja limitar 1 por linha no seguinte formato
# ip:ratein:rateout ex: 10.0.1.2:97:33
# e no interfaces as interfaces que vc usa na sua maquina
# no formato ethx ex: eth0
# 1 por linha tambem :)))
#
# Para rodar coloque o script dentro do seu rc.local
# Para remover as regras digite rc.bandlimit stop
#
##################
####
# IMPORTANTE!!!! USAMOS OS COMANDO
# iptables -F -t mangle
# ipchains -F input
# ipchains -F output
# Isso fara com que se voce tem alguma regra no seu mangle no iptables
# ou alguma regra no input ou output no seu ipchains esta regra sera apagada
# Para que voce nao perca suas regras de Firewall do iptables/ipchains
# Caso use alguma coisa no mangle do iptables ou alguma coisa no input/output
# no ipchains sete seu script de regras abaixo abaixo
#Lembrando que usamos o mangle apartir do mark 2 e este vai gerando um mark novo
#ate acabar seus ips ou seja se voce fizer pra 250 ips o ultimo mark sera o 252
#Caso use o Mark tente comecar apartir do 1000 para evitar Marks Iguais
#script=/path/seuscript.sh
script=0
##########################################################################################################
#Inicio da Configuracao
#Arquivos de Configuracao
ips=/etc/bandlimit/ips
#ips2=/etc/bandlimit/ips2
interfaces=/etc/bandlimit/interfaces
#########################
#Firewall's Suportados ipchains e Iptables # Padrao IPTABLES
#firewall=ipchains
firewall=iptables
###################################
#############
# Interfaces
redelocal=eth1
#redelocal2=eth0
redelocal2=inexistente
internet=eth0
#############
#Fim da configuracao
##########################################################################################################
#ifacenum=0
###Contando o numero de Interaces####
#for iface in `cat $interfaces`
#do
# ifacenum=`expr $ifacenum + 1`
#done
if [ $firewall == "iptables" ]
then
modprobe iptable_mangle
modprobe ipt_MARK
fi
#inicio do markador :)
mark=2
if [ "$1" = "stop" ]; then
################################
echo "Removendo Regras"
for iface in `cat $interfaces`
do
tc qdisc del dev $iface root
done
if [ $firewall == "iptables" ]
then
iptables -F -t mangle
if [ $script != "0" ]
then
$script
fi
else
ipchains -F input
ipchains -F output
if [ $script != "0" ]
then
$script
fi
fi
################################
else # Se nao tem "stop" entao assume start :)
#Limpar Regras antes de rodar o script ):)
iptables -F -t mangle
if [ $firewall == "iptables" ]
then
iptables -F -t mangle
if [ $script != "0" ]
then
$script
fi
else
ipchains -F input
ipchains -F output
if [ $script != "0" ]
then
$script
fi
fi
#adicionado interfaces
for iface in `cat $interfaces`
do
tc qdisc del dev $iface root
tc qdisc add dev $iface root handle 1 cbq bandwidth 10Mbit avpkt 1000 cell 8
tc class change dev $iface root cbq weight 1Mbit allot 1514
done
####
for ip in `cat $ips`
do
ratein=`echo $ip | cut -d ":" -f 2`
rateout=`echo $ip | cut -d ":" -f 3`
ip=`echo $ip | cut -d ":" -f 1`
#entrada
tc class add dev $redelocal parent 1: classid 1:$mark cbq bandwidth 10Mbit rate "$ratein"Kbit weight `expr $ratein / 10`Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded
tc qdisc add dev $redelocal parent 1:$mark handle $mark sfq perturb 10
tc filter add dev $redelocal parent 1:0 protocol ip prio 200 handle $mark fw classid 1:$mark
if [ $firewall == "iptables" ]
then
iptables -t mangle -A POSTROUTING -d $ip -j MARK --set-mark $mark
else
ipchains -A output -d $ip --mark $mark
fi
#Saida
tc class add dev $internet parent 1: classid 1:$mark cbq bandwidth 10Mbit rate "$rateout"Kbit weight `expr $rateout / 10`Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded
tc qdisc add dev $internet parent 1:$mark handle $mark sfq perturb 10
tc filter add dev $internet parent 1:0 protocol ip prio 200 handle $mark fw classid 1:$mark
if [ $firewall == "iptables" ]
then
iptables -t mangle -A FORWARD -s $ip -j MARK --set-mark $mark
else
ipchains -A input -s $ip --mark $mark
fi
#################################################################
mark=`expr $mark + 1`
done
if [ $redelocal2 != "inexistente" ]
then
for ip in `cat $ips2`
do
ratein=`echo $ip | cut -d ":" -f 2`
rateout=`echo $ip | cut -d ":" -f 3`
ip=`echo $ip | cut -d ":" -f 1`
#entrada
tc class add dev $redelocal2 parent 1: classid 1:$mark cbq bandwidth 10Mbit rate "$ratein"Kbit weight `expr $rateout / 10`Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded
tc qdisc add dev $redelocal2 parent 1:$mark handle $mark sfq perturb 10
tc filter add dev $redelocal2 parent 1:0 protocol ip prio 200 handle $mark fw classid 1:$mark
if [ $firewall == "iptables" ]
then
iptables -t mangle -A POSTROUTING -d $ip -j MARK --set-mark $mark
else
ipchains -A output -d $ip --mark $mark
fi
#Saida
tc class add dev $internet parent 1: classid 1:$mark cbq bandwidth 10Mbit rate "$rateout"Kbit weight `expr $rateout / 10`Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded
tc qdisc add dev $internet parent 1:$mark handle $mark sfq perturb 10
tc filter add dev $internet parent 1:0 protocol ip prio 200 handle $mark fw classid 1:$mark
if [ $firewall == "iptables" ]
then
iptables -t mangle -A FORWARD -s $ip -j MARK --set-mark $mark
else
ipchains -A input -s $ip --mark $mark
fi
#################################################################
mark=`expr $mark + 1`
done
fi
fi # fim do script</PRE>
<P><BR><BR></P></DIV>
<DIV></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #a0c6e5 2px solid; MARGIN-RIGHT: 0px"><FONT style="FONT-SIZE: 11px; FONT-FAMILY: tahoma,sans-serif">
<HR color=#a0c6e5 SIZE=1>
<DIV></DIV>From: <I>Fabio Aragao <duvidaslinux@yahoo.com.br></I><BR>Reply-To: <I>Lista de discussão voltada para os usuários brasileiros do Fedora <fedora-users-br@redhat.com></I><BR>To: <I>Lista de discussão voltada para os usuários brasileiros do Fedora <fedora-users-br@redhat.com></I><BR>Subject: <I>Re: [Fedora-users-br] Bandlimit</I><BR>Date: <I>Sat, 26 May 2007 16:36:18 -0300 (ART)</I><BR>>manda o conf<BR>><BR>><BR>><BR>><BR>><BR>><BR>>--- Alexandre Singulani <alexsingr@hotmail.com><BR>>escreveu:<BR>><BR>><BR>>---------------------------------<BR>><BR>>Ja vi esse FAQ.. e minha interface q acessa a internet<BR>>esta configurada no arquivo....
:(<BR>><BR>><BR>><BR>>[]s<BR>><BR>><BR>><BR>><BR>><BR>>---------------------------------<BR>><BR>>From: Fabio Aragao <duvidaslinux@yahoo.com.br><BR>>Reply-To: Lista de discussão voltada para os usuários<BR>>brasileiros do Fedora <fedora-users-br@redhat.com><BR>>To: Lista de discussão voltada para os usuários<BR>>brasileiros do Fedora <fedora-users-br@redhat.com><BR>>Subject: Re: [Fedora-users-br] Bandlimit<BR>>Date: Sat, 26 May 2007 15:59:33 -0300 (ART)<BR>> >Veja se te ajuda um minusculo FAQ que peguei na net<BR>> ><BR>> >FAQ:<BR>> ><BR>> >P: Funciona com adsl-pppoe ou seja interface ppp0?<BR>> >R: Funciona sim você coloca dentro da interface ppp0<BR>>e<BR>> >eth0 que deve ser sua rede local e configure
dentro<BR>>do<BR>> >rc.bandlimit<BR>> >internet=ppp0<BR>> >redelocal=eth0<BR>> ><BR>> >P: No upload ele não controla... no download ele<BR>> >controla...<BR>> >R: Você tem certeza que setou corretamente a opção<BR>> >internet=interfacedainternet dentro do arquivo de<BR>> >configuração???<BR>> ><BR>> >P: Para eu conseguir 8 Kbytes/s de download e 4<BR>> >Kbytes/s de upload tenho que colocar ip:80:40?<BR>> >R: Isso, você está correto :)))<BR>> ><BR>> >So para se basear, nao uso o bandlimit é so para<BR>> >tentar ajudar<BR>> ><BR>> ><BR>> ><BR>> ><BR>> >--- Alexandre Singulani <alexsingr@hotmail.com><BR>> >escreveu:<BR>> ><BR>> ><BR>> >---------------------------------<BR>> >Alguem na lista usa esse script pra limitar banda
de<BR>> >internet na rede interna??<BR>> >Uso ele aqui mas só ta limitando os downloads...os<BR>> >uploads sempre ficam liberados... Alguem poderia me<BR>> >ajudar??<BR>> ><BR>> >[]s<BR>> ><BR>> ><BR>> ><BR>> >---------------------------------<BR>> >Seja um dos primeiros a testar o novo Windows Live<BR>> >Mail Beta - grátis Acesse e inscreva-se agora!> --<BR>> > > Fedora-users-br mailing list<BR>> > > Fedora-users-br@redhat.com<BR>> > ><BR>> >https://www.redhat.com/mailman/listinfo/fedora-users-br<BR>> > ><BR>> ><BR>> ><BR>> >__________________________________________________<BR>> >Fale com seus amigos de graça com o novo Yahoo!<BR>>Messenger<BR>> >http://br.messenger.yahoo.com/<BR>> ><BR>> >--<BR>>
>Fedora-users-br mailing list<BR>> >Fedora-users-br@redhat.com<BR>> >https://www.redhat.com/mailman/listinfo/fedora-users-br<BR>><BR>><BR>><BR>>---------------------------------<BR>>Agora o Windows Live Spaces tem rede de amigos! Clique<BR>>aqui e descubra a novidade > --<BR>> > Fedora-users-br mailing list<BR>> > Fedora-users-br@redhat.com<BR>> ><BR>>https://www.redhat.com/mailman/listinfo/fedora-users-br<BR>> ><BR>><BR>><BR>>__________________________________________________<BR>>Fale com seus amigos de graça com o novo Yahoo! Messenger<BR>>http://br.messenger.yahoo.com/<BR>><BR>>--<BR>>Fedora-users-br mailing list<BR>>Fedora-users-br@redhat.com<BR>>https://www.redhat.com/mailman/listinfo/fedora-users-br<BR></FONT></BLOCKQUOTE></div><br clear=all><hr>Torpedo Messenger- Envie torpedos
do messenger para o celular da galera. <a href="http://g.msn.com/8HMABRBR/2752??PS=47575" target="_top">Descubra como aqui!</a> </html>