[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Shaper



Aleynikov Evgeny пишет:
        Добрый день.
Вот возникла необходимость пользования шейпером на серваке.
Поставил shaper(cbq) все просто и лего только выяснилось что не подходит.
У меня нет раздается VPNом соответственно в момент коннекта создается
ppp интерфейс.
В CBQ жесткая привязка к устройству.
А мне надо шейперить не всех пользователь, а одного-двух.
Подскажите как поступить или какой пакет выбрать, как замену shaper.
Спасибо.



А как насчет положить такой скрипт в /etc/ppp/ip-up
Только учти, что данный скрипт заточен под radius и использование плагина radattr.so, но основная идея понятна, так что думаю разберешься.

#! /bin/bash
interface=$1
remoteIP=$5
download=`grep Download /var/run/radattr.$interface | awk '{ print $2; }'`
upload=`grep Upload  /var/run/radattr.$interface | awk '{ print $2; }'`
client=`grep Client /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 "$client" > /tmp/$interface.client


if [ $client == "client" ]
then
/sbin/iptables -I FORWARD -d $remoteIP -p tcp --dport 1:1024 -j DROP
/sbin/iptables -I FORWARD -d $remoteIP -p tcp --dport 6000:9000 -j DROP
fi

/sbin/tc qdisc add dev $interface root handle 1 cbq bandwidth 10Mbit avpkt 1000 cell 8 /sbin/tc class add dev $interface parent 1: classid 1:$mark cbq bandwidth 10Mbit rate "$download"Kbit weight `expr $download / 10`Kbit prio 5 allot 1514 cell 8
maxburst 20 avpkt 1000 bounded
/sbin/tc qdisc add dev $interface parent 1:$mark handle $mark sfq perturb 10
/sbin/tc filter add dev $interface parent 1:0 protocol ip prio 200 handle $mark fw classid 1:$mark /sbin/iptables -t mangle -A POSTROUTING -d $remoteIP -j MARK --set-mark $mark


/sbin/tc qdisc add dev eth0 root handle 1 cbq bandwidth 10Mbit avpkt 1000 cell 8 /sbin/tc class add dev eth0 parent 1: classid 1:$mark cbq bandwidth 10Mbit rate "$upload"Kbit weight `expr $upload / 10`Kbit prio 5 allot 1514 cell 8 maxburst 2
0 avpkt 1000 bounded
/sbin/tc qdisc add dev eth0 parent 1:$mark handle $mark  sfq perturb 10
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 200 handle $mark fw classid 1:$mark
/sbin/iptables -t mangle -A FORWARD -s $remoteIP -j MARK --set-mark $mark

/sbin/iptables -t nat -A POSTROUTING -s $remoteIP -d ! 192.168.0.0/16 -j MASQUERADE


echo "PPP started at $(date):
interface = $interface
Remote IP = $remoteIP
download = $download
upload = $upload
mark = $mark
" >/tmp/$interface



Reply to: