+ Responder ao Tópico



  1. #1
    sarna
    Visitante

    Padrão Problema com script (IP x MAC + Controle de banda)

    Faz dias que estou tentando criar essa solução, só que não sei mais o que fazer, eu juntei alguns artigos que li, e implementei tudo em um arquivo, só que ele está dando alguns erros no meu Conectiva 10, e não faço a minima idéia do que possa ser..

    Se alguém puder dar uma força eu agradeço...
    Esse é o script:
    Código :
    #/bin/bash 
     
    # Variáveis
      IPT=/usr/sbin/iptables 
      TC=/sbin/tc
      USERLIST=`cat /etc/user.list`
     
    # Ativa Roteamento
      echo 1 > /proc/sys/net/ipv4/ip_forward 
     
    # Firewall
    case $1 in 
    start)
    	$TC qdisc del dev eth0 root
    	$TC qdisc del dev eth1 root
    	$TC qdisc add dev eth0 root handle 1: htb default 10
    	$TC qdisc add dev eth1 root handle 1: htb default 10
    	$TC class add dev eth0 parent 1: classid 1:1 htb rate 1024kbit ceil 10240kbit
    	$TC class add dev eth1 parent 1: classid 1:1 htb rate 1024kbit ceil 10240kbit
    	$TC class add dev eth0 parent 1:1 classid 1:10 htb rate 10240kbit ceil 10240kbit prio 4
    	$TC qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 5
    	$TC filter add dev eth0 parent 1:0 protocol ip prio 4 handle 10 fw classid 1:10
    	$TC class add dev eth1 parent 1:1 classid 1:10 htb rate 10240kbit ceil 10240kbit prio 4
    	$TC qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 5
    	$TC filter add dev eth1 parent 1:0 protocol ip prio 4 handle 10 fw classid 1:10
     
    	echo "1 - > Erro ?"	
     
    	ID=11
    	$IPT -F 
    	$IPT -t nat -F 
    	$IPT -t filter -P FORWARD DROP 
    	for USER in $USERLIST; do 
     
    		ADDRESS=`echo $USER | cut -d ';' -f 1`
    		MACADDRESS=`echo $USER | cut -d ';' -f 2`
    		UPDLOAD=`echo $USER | cut -d ';' -f 3`
    		DOWNLOAD=`echo $USER | cut -d ';' -f 4`
    		NOME=`echo $USER | cut -d ';' -f 5`
     
    		# Libera conexão
    		$IPT -t filter -A FORWARD -d 0/0 -s $ADDRESS -m mac --mac-source $MACADDRESS -j ACCEPT 
    		$IPT -t filter -A FORWARD -d $ADDRESS -s 0/0 -j ACCEPT 
    		$IPT -t nat -A POSTROUTING -s $ADDRESS -o eth0 -j MASQUERADE 
    		$IPT -t filter -A INPUT -s $ADDRESS -d 0/0 -m mac --mac-source $MACADDRESS -j ACCEPT 
    		$IPT -t filter -A OUTPUT -s $ADDRESS -d 0/0 -j ACCEPT 
     
    		# Upload
    		$TC class add dev eth0 parent 1:1 classid 1:$ID htb rate $UPLOAD ceil $UPLOAD prio 4
    		$TC qdisc add dev eth0 parent 1:$ID handle $ID: sfq perturb 5
    		$TC filter add dev eth0 parent 1:0 protocol ip prio 4 handle $ID fw classid 1:$ID
    		$IPT -t mangle -A FORWARD -s $ADDRESS -j MARK --set-mark $ID
     
    		# Download
    		$TC class add dev eth1 parent 1:1 classid 1:$ID htb rate $DOWNLOAD ceil $DOWNLOAD prio 4
    		$TC qdisc add dev eth1 parent 1:$ID handle $ID: sfq perturb 5
    		$TC filter add dev eth1 parent 1:0 protocol ip prio 4 handle $ID fw classid 1:$ID
    		$IPT -t mangle -A POSTROUTING -d $ADDRESS -j MARK --set-mark $ID
     
    		echo "$ADDRESS -> $NOME : OK"
     
    		let "ID=$ID+1"
    	done 
     
    	echo "Iniciado !"
    	;; 
    stop) 
    	$IPT -F 
    	$IPT -Z 
    	$IPT -t nat -F 
    	$IPT -t filter -P FORWARD ACCEPT 
    	echo "Parado !"
    ;; 
    restart) 
    	/sbin/extreme stop 
    	/sbin/extreme start 
    ;; 
    esac

    Ele me retorna esses erros:

    Código :
    RTNETLINK answers: No such file or directory
    RTNETLINK answers: No such file or directory
    1 -> Erro?
    Illegal "rate"
    Usage: ... qdisc add ... htb [default N] [r2q N]
     default  minor id of class to which unclassified packets are sent {0}
     r2q      DRR quantums are computed as rate in Bps/r2q {10}
     debug    string of 16 numbers each 0-3 {0}
     
    ... class add ... htb rate R1 burst B1 [prio P] [slot S] [pslot PS]
                          [ceil R2] [cburst B2] [mtu MTU] [quantum Q]
     rate     rate allocated to this class (class can still borrow)
     burst    max bytes burst which can be accumulated during idle period {computed}
     ceil     definite upper class rate (no borrows) {rate}
     cburst   burst but for ceil {computed}
     mtu      max packet size we create rate map for {1600}
     prio     priority of leaf; lower are served first {0}
     quantum  how much bytes to serve from leaf at once {use r2q}
     
    TC HTB version 3.3
    RTNETLINK answers: Invalid argument
    192.168.0.1 -> usuario : OK
    Iniciado !

  2. #2

    Padrão Problema com script (IP x MAC + Controle de banda)

    O erro ta no seu codigo, ta passando parametro invalido no comando TC!


    o erro ta quando vc define as varivaeis

    não eh
    UPDLOAD=`echo $USER | cut -d ';' -f 3`
    e sim
    UPLOAD=`echo $USER | cut -d ';' -f 3`

    Ve se funciona!

    []´s

  3. #3
    sarna
    Visitante

    Padrão Problema com script (IP x MAC + Controle de banda)

    Orra era isso mesmo... :toim:
    Tô a tarde intera mexendo nesse script que tô até vesgo... hehehe

    Mas tem um detalhe ele ainda continua retornando dois erros...
    Código :
    RTNETLINK answers: No such file or directory
    RTNETLINK answers: No such file or directory

    Detalhe: quando eu executo duas vezes o comando pra iniciar o script na segunda vez não aparece esses erros...

    O que será que é ?

  4. #4

    Padrão Problema com script (IP x MAC + Controle de banda)

    Pq ele deleta regras que nao tem!

    $TC qdisc del dev eth0 root
    $TC qdisc del dev eth1 root




    por isso que na segumda funciona sem erro!

  5. #5
    sarna
    Visitante

    Padrão Problema com script (IP x MAC + Controle de banda)


    100% só falta funcionar... ehauheuaheu

    Por incrivel que pareça ela não está funcionando....
    Eu não entendi direito como funciona o HTB pra controle de banda... Fora a parte do controle de banda (ip x mac) está funcionando 100%, mas com os comandos do HTB ele não recebe pacotes..

    Tens idéia do que pode ser?

  6. #6

    Padrão Problema com script (IP x MAC + Controle de banda)

    Cara, como vc ta verificando se está funcionando ou nao?

    Como ta o formato da sua user.list? valores....

    Da um

    tc -s -d class show dev eth0
    tc -s -d class show dev eth1

    Ve se at tendo transferencia de dados nas regras

    class htb 1:10 parent 1:1..............
    class htb 1:11 parent 1:1..............
    .....................
    .....................

    cada registro desse eh um canal limitado de velocidade!
    1:10 eh a padrao!
    1:11 em diante eh as regras dos usuarios!


  7. #7
    sarna
    Visitante

    Padrão Problema com script (IP x MAC + Controle de banda)

    No arquivo tem dados assim
    Código :
    192.168.0.1;00:00:00:00:00:00;256;256;usuario
    IP > 192.168.0.1
    MAC > 00:00:00:00:00:00
    UPLOAD : 256kbit
    DOWNLOAD : 256kbit

    Eu testo em uma outra maquina, simplesmente ela não recebe dados...

    No comando tc -s -d class show dev eth0:
    Código :
    class htb 1:11 parent 1:1 leaf 11: prio 4 quantum 3276 rate 256Kbit ceil 256Kbit burst 1926b/8 mpu 0b cburst 1926b/8 mpu 0b level 0
     Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
     lended: 0 borrowed: 0 giants: 0
     tokens: 60218 ctokens: 60218
     
    class htb 1:1 root rate 10Mbit ceil 100Mbit burst 14704b/8 mpu 0b cburst 132657b/8 mpu 0b level 7
     Sent 3862 bytes 30 pkts (dropped 0, overlimits 0)
     rate 67bps
     lended: 0 borrowed: 0 giants: 0
     tokens: 11409 ctokens: 10357
     
    class htb 1:10 parent 1:1 leaf 10: prio 4 quantum 131072 rate 10Mbit ceil 100Mbit burst 14704b/8 mpu 0b cburst 132657b/8 mpu 0b level 0
     Sent 3862 bytes 30 pkts (dropped 0, overlimits 0)
     rate 67bps
     lended: 30 borrowed: 0 giants: 0
     tokens: 11409 ctokens: 10357

    No comando tc -s -d class show dev eth1:

    Código :
    class htb 1:11 parent 1:1 leaf 11: prio 4 quantum 3276 rate 256Kbit ceil 256Kbit burst 1926b/8 mpu 0b cburst 1926b/8 mpu 0b level 0
     Sent 528 bytes 6 pkts (dropped 0, overlimits 0)
     lended: 6 borrowed: 0 giants: 0
     tokens: 58719 ctokens: 58719
     
    class htb 1:1 root rate 10Mbit ceil 100Mbit burst 14704b/8 mpu 0b cburst 132657b/8 mpu 0b level 7
     Sent 688 bytes 8 pkts (dropped 0, overlimits 0)
     lended: 0 borrowed: 0 giants: 0
     tokens: 11453 ctokens: 10361
     
    class htb 1:10 parent 1:1 leaf 10: prio 4 quantum 131072 rate 10Mbit ceil 100Mbit burst 14704b/8 mpu 0b cburst 132657b/8 mpu 0b level 0
     Sent 160 bytes 2 pkts (dropped 0, overlimits 0)
     lended: 2 borrowed: 0 giants: 0
     tokens: 11373 ctokens: 10354


    Eu mudei de 1/10 Mbit pra 10/100Mbit a placa de rede... mas não adiantou nada...

  8. #8

    Padrão Problema com script (IP x MAC + Controle de banda)

    Use as regras de marcação nessas chains!
    # para upload
    $IPTABLES -t mangle -A FORWARD -s $ADDR -j MARK --set-mark $ID
    # para download
    $IPTABLES -t mangle -A POSTROUTING -d $ADDR -j MARK --set-mark $ID


    Seu download parace que ta blza, funcioando limitado!
    Seu upload que nao esta funcionando, um exemplo da minha regra segue acima!


  9. #9
    sarna
    Visitante

    Padrão Problema com script (IP x MAC + Controle de banda)

    Essa regras estão no script já...
    Aí é que ta eu não faço idéia de onde está o erro!!!!

    To :toim: faz uma cara nesse script...

  10. #10

    Padrão Problema com script (IP x MAC + Controle de banda)

    Me diz o retorno dos comandos abaixo, depois do script executado, hehe,

    iptables -t mangle -nvL FORWARD
    iptables -t mangle -nvL PREROUTING


    valeu!

  11. #11
    sarna
    Visitante

    Padrão Problema com script (IP x MAC + Controle de banda)

    Citação Postado originalmente por japaeye4u
    Me diz o retorno dos comandos abaixo, depois do script executado, hehe,

    iptables -t mangle -nvL FORWARD
    iptables -t mangle -nvL PREROUTING

    valeu!
    iptables -t mangle -nvL FORWARD:
    Código :
    pkts bytes target     prot opt in     out     source               destination
        0     0 MARK       all  --  *      *       192.168.100.1        0.0.0.0/0           MARK set 0xb
    iptables -t mangle -nvL PREROUTING
    Código :
    Chain PREROUTING (policy ACCEPT 182 packets, 19633 bytes)
     pkts bytes target     prot opt in     out     source               destination

    Não sei pq mas acho que deveria ter algo no PREROUTING..
    :?