PPPoE (arquivo ip-up e ip-down usando HTB)
Pessoal,
Precisei alterar algumas coisas nos arquivos ip-up e ip-down do Scorpion para que atendessem melhor as necessidades do meu provedor. Se alguem quiser usar estes arquivos estão a disposição:
PS.: REPAREM na necessidade de indicar qual interface será usada no upload dos clientes (interface que é a saida para a internet).
/etc/ppp/ip-up
Código :
#!/bin/bash
#
#---
# Variaveis
#---
IPT="/usr/local/sbin/iptables"
TC="/sbin/tc"
UP="eth0"
interface=$1
remoteIP=$5
download=`grep Download /var/run/radattr.$interface | awk '{ print $2; }'`
upload=`grep Upload /var/run/radattr.$interface | awk '{ print $2; }'`
cliente=`grep Cliente /var/run/radattr.$interface | awk '{ print $2; }'`
contamark=`echo $interface | cut -c 4-99`
mark=`expr $contamark + 500`
echo "$download" > /tmp/$interface.download
echo "$upload" > /tmp/$interface.upload
echo "$cliente" > /tmp/$interface.cliente
echo "$mark" > /tmp/$interface.mark
if [ $download == ]
then
download="200"
upload="100"
fi
#----
# DOWNLOAD
#----
$TC qdisc del dev $interface root 2> /dev/null > /dev/null
$TC qdisc add dev $interface root handle 1: htb
$TC class add dev $interface parent 1: classid 1:1 htb rate "$download"Kbit
$TC class add dev $interface parent 1:1 classid 1:${mark} htb rate "$download"Kbit ceil "$download"Kbit
$TC qdisc add dev $interface parent 1:${mark} handle $mark sfq perturb 10
$TC filter add dev $interface parent 1:0 protocol ip prio 1 u32 match ip dst ${remoteIP}/32 flowid 1:${mark}
#----
# UPLOAD
#----
$TC class add dev $UP parent 1:1 classid 1:${mark} htb rate "$upload"Kbit ceil "$upload"Kbit
$TC qdisc add dev $UP parent 1:${mark} handle $mark sfq perturb 10
$IPT -t mangle -A FORWARD -s $remoteIP -j MARK --set-mark $mark
$TC filter add dev $UP parent 1:0 protocol ip prio 1 handle $mark fw classid 1:${mark}
echo "PPP started at $(date):
interface = $interface
Remote IP = $remoteIP
download = $download
upload = $upload
mark = $mark
" >/tmp/$interface
/etc/ppp/ip-down
Código :
#!/bin/bash
#
#---
# Variaveis
#---
IPT="/usr/local/sbin/iptables"
TC="/sbin/tc"
UP="eth0"
interface=$1
remoteIP=$5
download=`cat /tmp/$interface.download`
upload=`cat /tmp/$interface.upload`
cliente=`cat /tmp/$interface.cliente`
mark=`cat /tmp/$interface.mark`
if [ $download == ]
then
download="200"
upload="100"
fi
#----
# DOWNLOAD
#----
# Nao e necessario fazer nada ja que a interface ira ser baixada e na
# subida dela serao apagadas todas as regras que nela existiam
#----
# UPLOAD
#----
$IPT -t mangle -D FORWARD -s $remoteIP -j MARK --set-mark $mark
$TC class del dev $UP parent 1:1 classid 1:${mark} htb rate "$upload"Kbit ceil "$upload"Kbit
$TC qdisc del dev $UP parent 1:${mark} handle $mark sfq perturb 10
$TC filter del dev $UP parent 1:0 protocol ip prio 1 handle $mark fw classid 1:${mark}
rm -rf /tmp/$interface*
Re: PPPoE (arquivo ip-up e ip-down usando HTB)
Queria te agradecer....pois eu usei seu script.....mudei ele bastante para se adequar as minhas necessidades, mas foi por base nele que conseguio que eu queria.
Mas meu ulload naum funciona ainda..nam sei o que eh.
eu usei o ip-up apens para setar o downlad.
o upload to usando htb tools.....mus ips saum fixos , portanto na interface de saida eles sempre seraum os mesmos dispensando colocar eles no ip-up.
se tivwer um aluza, agradeço..senaum..obrigado kra,
Re: PPPoE (arquivo ip-up e ip-down usando HTB)
jr,
Que bom que usou o script. Então o IP-UP pode colocar regras para o upload dos clientes, mas a única forma que realmente funcionou para mim foi usando marcação de pacotes com origem no cliente e destino em qualquer lugar. Algo assim:
$IPT -t mangle -A PREROUTING -s <seu cliente ou -i interface pppoe do cliente> -j MARK --set-mark XXX
Depois disso tu direciona esse mark para uma regra de QOS usando ou o CLASSIFY do iptables ou o fwmark do TC.