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 !
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
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 é ?
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
:D
por isso que na segumda funciona sem erro!
Problema com script (IP x MAC + Controle de banda)
:D
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?
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!
:)
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...
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!
:)
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... :help:
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!
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..
:?