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?