Eu tenho um script aqui que faz essa função ...

pode lhe interessar ...

até

On 02-11-2010 18:39, Keppler wrote:
Olá pessoal.
Estou fazendo uma grande confusão para fazer um controle de banda com o HTB Li uns tutoriais que achei na Net, mas não está funcionando (quer dizer, não estou conseguindo adaptar para minha necessidade)....está ficando lento demais nas estações!!!

Aqui segue a configuração da minha rede:
--> 4 computadores + o servidor Linux
--> eth0: Interface LAN
--> eth1: Interface WAN (onde está o Speedy)
--> Velocidade do Speedy: Speedy de 2Megas que medido pelo velocímetro da Beltronica (http://www.abeltronica.com/velocimetro/pt/?idioma=pt&newlang=pt) obtive a velocidade aproximada de 1854 kbps (ou 232 KBps)

Gostaria de dividir o link igualmente para as 4 estações, ou seja, garantir _*NO MÍNIMO*_ 58 KBps (232KBps / 4) por máquina!

Gostaria de saber também se dá pra "emprestar" banda entre as máquinas, ou seja, supondo que tivesse somente uma máquina ligada, esta máquina teria a banda toda para ela. Mas se a segunda máquina entrasse na rede, a banda seria AUTOMATICAMENTE dividida por 2. Se entrasse a terceira máquina a banda seria dividida automaticamente por 3 e assim por diante.
Dá pra fazer este "empréstimo" de banda entre as máquinas?

Se não puder fazer este "empréstimo", como poderia configurar os arquivos para que cada máquina ficasse com pelo menos os 58KBps (232 / 4) ???

grato,
Keppler --
GUS-BR - Grupo de Usuários de Slackware Brasil
http://www.slackwarebrasil.org/
http://groups.google.com/group/slack-users-br

Antes de perguntar:
http://www.istf.com.br/perguntas/

Para sair da lista envie um e-mail para:
[email protected]

--
GUS-BR - Grupo de Usuários de Slackware Brasil
http://www.slackwarebrasil.org/
http://groups.google.com/group/slack-users-br

Antes de perguntar:
http://www.istf.com.br/perguntas/

Para sair da lista envie um e-mail para:
[email protected]
#!/bin/bash

##############################################################################
# UnderLinux BandLimit                                                       #
# ============================================                               #
#                                                                            #
# Copyright (c) 2003 by Marcus Maciel(ScOrP|On) [email protected]   #
# 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=eth0
#redelocal2=eth0
redelocal2=inexistente
internet=eth1
#############

#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

Responder a