Página 1 de 3 123 ÚltimoÚltimo
+ Responder ao Tópico



  1. #1
    sarna
    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. 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
    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. 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

    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?






Tópicos Similares

  1. Mikrotik ppoe+amaracao ip com mac+ controle de banda
    Por Maite Ranghetti no fórum Certificação
    Respostas: 0
    Último Post: 23-12-2012, 21:19
  2. Respostas: 8
    Último Post: 15-06-2012, 13:28
  3. Respostas: 4
    Último Post: 26-06-2009, 08:07
  4. Respostas: 1
    Último Post: 03-02-2009, 11:12
  5. Respostas: 0
    Último Post: 16-07-2006, 21:31

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L