Перейти к содержимому
Калькуляторы

шейпинг акцел пптп?

кто знает чем можно делать шейпинг акцел пптп?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

шейпером акцел пптп

 

PS. А чем шейпинг accel-pptp будет отличаться от шейпинга pptp ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я не очень вас понял.

ест линк?

 

мне нужно чтоб част юзеров получали скорость не выше 0.5мб, а другие работали в полную.

как это делается?

 

спасибо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

курите линукс шейпинг...

tc

 

Вот так например....

/sbin/tc qdisc del dev $DEV root 2> /dev/null > /dev/null

/sbin/tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null

/sbin/tc qdisc add dev $DEV root tbf rate ${shape}kbit burst ${burst}kb latency 70ms minburst 1540 >/dev/null 2>&1

/sbin/tc qdisc add dev $DEV handle ffff: ingress

/sbin/tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${shape}kbit burst ${burst}k mtu 12k drop flowid :1

 

делается в ip-up скрипте....

Изменено пользователем sdy_moscow

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо!

 

А как можно в ip-up скрипте узнать имя пользователя?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо!

 

А как можно в ip-up скрипте узнать имя пользователя?

имя пользователя никак.... приходится связывать по ип...

Вот например наш полный ип-ап скрипт от ланбилинга, немного допиленный...

 

#!/bin/bash
sleep 9
DEV=$1
AIP=$5
LOGMAC=/etc/ppp/log-mac
LOG=/var/log/shaper.log
MACLOG=/var/log/macshpnm.log
ERRLOG=/var/log/errshpnm.log
. /etc/billing.conf
MYSQL="/usr/bin/mysql -h${rdbhost} -u${rdbuser} -p${rdbpass} ${rdbname}"

################################################################################
############
## Getting IP MAC
##

ARP="/sbin/arp"
PID_DIR="/var/run"
ROUTE="/sbin/route"

PID=`cat ${PID_DIR}/${DEV}.pid 2>/dev/null`;

REAL_IP=$6
IP_MAC=`${ARP} ${REAL_IP} | grep ${REAL_IP} | awk '{print $3}'`

echo "$DEV ${AIP} start=`date` pid=${PID} r_ip=${REAL_IP} mac=${IP_MAC}" >> $LOG

################################################################################
############
## Check duplicate IP
##

#echo "route | grep -F ${AIP} -w | grep -F ${DEV} -v -w | awk '{print \$8}'"  >> $LOG
#           get routes | c ОБЫЙН йр | ВЕЪ ЫМАЪБ | ОЕ ОБЫ ppp | 8-БС ЛПМПОЛБ
DUP_INTF=`${ROUTE} -n | grep -F ${AIP} -w | grep G -v | grep -F ${DEV} -v -w | awk '{print $8}'`
if test -n "$DUP_INTF" 2>/dev/null
then
     echo "  !ERROR: $DEV $AIP DupIP duplicated IP detected" >> $LOG
     sleep 5
     echo "`date` ERROR: DupIP $DEV $AIP r_ip= ${REAL_IP} dupicated IP detected" >> $ERRLOG
     for cur_val in ${DUP_INTF}; { 
    DUP_PID=`cat ${PID_DIR}/${cur_val}.pid 2>/dev/null`;
    kill -s INT ${DUP_PID}
        echo "    !$DEV $AIP duplicated IP detected on $cur_val pid=$DUP_PID was killed" >> $LOG
        sleep 1
        #${fwcmd} -t nat -A POSTROUTING -s ${cur_val} -j SNAT -o ${intf_inet} --to-source ${my_ip_nat}; 
     };
     echo "    !$DEV $AIP session pid=$PID stoped at self" >> $LOG 
     kill -s INT ${PID}
     exit 0
fi

################################################################################
############
## Get vgroup info for shape and log
##
# nado dodelat ghjdthre sviazi s SQL....
res="no"
qt="select vgroups.tar_id,vgroups.shape,vgroups.login,tarifs.shape,vgroups.max_sessions \
   from vgroups,sessionsradius,tarifs where \
   inet_ntoa(sessionsradius.assigned_ip)=\"$AIP\" and sessionsradius.vg_id=vgroups.vg_id and tarifs.tar_id=vgroups.tar_id" 

for (( i=1; i<5; i++));
do
    q=`echo "$qt" | $MYSQL | tail -n1`
    if test -n "$q" 2>/dev/null
    then
           res="ok"
           break
    fi
    echo "  !WAIT: SQL $DEV $AIP wait for update active sessions" >> $LOG
    sleep 5 
done

if test $res = "no" 2>/dev/null
then
    echo "  !ERROR: SQL $DEV $AIP cannot find in active sessions" >> $LOG
    echo "`date` ERROR: SQL $DEV $AIP r_ip= ${REAL_IP} cannot find in active sessions" >> $ERRLOG
    sleep 5 
    kill -s INT ${PID}
    exit 0
fi

tarid=`echo "$q" | awk '{print $1}'`
shape=`echo "$q" | awk '{print $2}'`
vglogin=`echo "$q" | awk '{print $3}'`
shapet=`echo "$q" | awk '{print $4}'`
maxses=`echo "$q" | awk '{print $5}'`

################################################################################
#####
# calculate shape

echo "  !$DEV $AIP l=${vglogin} r_ip=${REAL_IP} mac=${IP_MAC} tr=${tarid} sh=${shape} sht=${shapet} mss=${maxses}" >> $LOG
echo "`date`;${PID};${DEV};${AIP};${vglogin};${REAL_IP};${IP_MAC};" >> $MACLOG

if test $shape -eq 0 2>/dev/null
then
    shape=$shapet
fi

      
if ! test $shape -ge 0 2>/dev/null
then
    echo "  !ERROR: Shp $DEV $AIP ${vglogin} cannot get proper shape rate" >> $LOG
        echo "`date` ERROR: Shp $DEV $AIP ${vglogin} r_ip=${REAL_IP} get proper shape rate" >> $ERRLOG
        shape=0
fi
       
#########################
# temporaly speed to 320 kbp/s
#shape=320

if test $shape -gt 0 2>/dev/null
then

burst=`echo $shape/100+2 | bc 2>/dev/null`
/sbin/tc qdisc del dev $DEV root    2> /dev/null > /dev/null
/sbin/tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
/sbin/tc qdisc add dev $DEV root tbf rate ${shape}kbit burst ${burst}kb latency 70ms minburst 1540 >/dev/null 2>&1
/sbin/tc qdisc add dev $DEV handle ffff: ingress
/sbin/tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${shape}kbit burst ${burst}k mtu 12k drop flowid :1
echo "  !$DEV $AIP ${vglogin} setting shape rate $shape" >> $LOG

fi;

################################################################################
#####
# log on coolector 
$LOGMAC $vglogin $REAL_IP $IP_MAC

exit 0

 

в . /etc/billing.conf

что-то вроде

rdbhost=XXX.XXX.XXX.XXX
rdbuser=user
rdbpass=password
rdbname=dbname

 

Изменено пользователем sdy_moscow

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.