Flopster Posted October 23, 2009 Posted October 23, 2009 кто знает чем можно делать шейпинг акцел пптп? Вставить ник Quote
martin74 Posted October 24, 2009 Posted October 24, 2009 шейпером акцел пптп PS. А чем шейпинг accel-pptp будет отличаться от шейпинга pptp ? Вставить ник Quote
Flopster Posted October 24, 2009 Author Posted October 24, 2009 я не очень вас понял. ест линк? мне нужно чтоб част юзеров получали скорость не выше 0.5мб, а другие работали в полную. как это делается? спасибо. Вставить ник Quote
sdy_moscow Posted October 24, 2009 Posted October 24, 2009 (edited) курите линукс шейпинг... 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 скрипте.... Edited October 24, 2009 by sdy_moscow Вставить ник Quote
Flopster Posted October 24, 2009 Author Posted October 24, 2009 Спасибо! А как можно в ip-up скрипте узнать имя пользователя? Вставить ник Quote
sdy_moscow Posted October 24, 2009 Posted October 24, 2009 (edited) Спасибо! А как можно в 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 Edited October 24, 2009 by sdy_moscow Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.