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:
- References:
- Shaper
- From: Aleynikov Evgeny <debian@stugna.net>