Наверное, всё-таки Выключение: /netup/utm5/bin/traffic.sh stop UIP RULE_IDKayfolom писал(а): Выключение: /netup/utm5/bin/traffic.sh start UIP RULE_ID

http://netup.ru/phpbb/viewtopic.php?t=5236RusBiT писал(а): Сейчас использую poptop/ freebsd , планирую переходить на mpd.
Могли по подробнее рассказать?
Мне бы для Gentoo и RP-PPPoE.Mental Noize писал(а):http://netup.ru/phpbb/viewtopic.php?t=5236RusBiT писал(а): Сейчас использую poptop/ freebsd , планирую переходить на mpd.
Могли по подробнее рассказать?
ограничивает скорость на ng-интерфейсе, создаваемого во время авторизации абонента, параметры радиуса стабильно меняются на ходу, всё работает чотко
Код: Выделить всё
# My own attribute
ATTRIBUTE PPPD-Downstream-Speed-Limit 231 string
Код: Выделить всё
#!/bin/bash
# this is a script which is executed after connecting the ppp interface.
# look at man pppd for details
# the followings parameters are available:
# $1 = interface-name
# $2 = tty-device
# $3 = speed
# $4 = local-IP-address
# $5 = remote-IP-address
# $6 = ipparam
device=$1;
rate=`cat /var/run/radattr.$device | grep "PPPD-Downstream-Speed-Limit" | cut -d " " -f 2`;
# Сбрасываем все правила и фильтры
/sbin/tc qdisc del dev $device root;
# Устанавливаем ограничения входящего трафика
/sbin/tc qdisc add dev $device root handle 1: htb default 10 r2q 100;
/sbin/tc class add dev $device parent 1:1 classid 1:10 htb rate ${rate}mbit ceil ${rate}mbit burst 100k;
Код: Выделить всё
#/etc/ppp/pppoe-server-options
require-pap
refuse-chap
refuse-mschap
require-mschap-v2
ms-dns *.*.*.*
mtu 1500
mru 1500
proxyarp
login
nobsdcomp
novj
nologfd
nolog
kdebug 0
nodetach
nodeflate
receive-all
lcp-echo-interval 15
lcp-echo-failure 3
ipcp-accept-remote
ipcp-accept-local
plugin /usr/lib/pppd/2.4.4/radius.so
plugin /usr/lib/pppd/2.4.4/radattr.so
В моём случае если ТП не привязан ни к одному пользователю то всё добавляется правильно, если-же привязан хоть к одному - такая ерунда.У меня вместо "Vendor:0 Attr:230 Val:1024" и "Vendor:0 Attr:231 Val:1024" тип "String" становится "Vendor:0 Attr:230 Val:875704369" и "Vendor:0 Attr:231 Val:875704369" и тип "Номер".
Код: Выделить всё
if [ "$DOWNSPEED" != "0" ] ;
then
case $DOWNSPEED in
824) DOWNSPEED=`expr $DOWNSPEED+200`;;
860) DOWNSPEED=`expr $DOWNSPEED+1700`;;
У меня не принимает скорость больше чем 999. И все равно, судя по логам, передает какието левые значения.SOLDIER писал(а):Занятно. Сегодня столкнулся с такой же фишкой с Радиус-параметрами! Причём у меня даже при непрвязанном тарифе вылазят такие же параметры. Было выяснено, что подобное получается при выставлении скоростей больше 1024. Так как ТП безмолствует, было принято вот такое вот черезжопное (прошу прощения за выражение, но других слов просто нет!) решение. В скрипте shape.sh в директории ip-up.d вставлен вот такой код (у меня 1024 и 2560):
Ну а дальше код добавления правил шейпера.Код: Выделить всё
if [ "$DOWNSPEED" != "0" ] ; then case $DOWNSPEED in 824) DOWNSPEED=`expr $DOWNSPEED+200`;; 860) DOWNSPEED=`expr $DOWNSPEED+1700`;;
Версия у меня 003, но с этой проблемой я не сталкивался, т. к. значения скоростей у меня дробные либо целые числа до 100 - 0.4, 0.7, 2, 5 и т. д., просто в шейпере я указываю их в mbit`ах.SOLDIER писал(а):Занятно. Сегодня столкнулся с такой же фишкой с Радиус-параметрами! Причём у меня даже при непрвязанном тарифе вылазят такие же параметры. Было выяснено, что подобное получается при выставлении скоростей больше 1024. Так как ТП безмолствует, было принято вот такое вот черезжопное (прошу прощения за выражение, но других слов просто нет!) решение. В скрипте shape.sh в директории ip-up.d вставлен вот такой код (у меня 1024 и 2560):
Ну а дальше код добавления правил шейпера.Код: Выделить всё
if [ "$DOWNSPEED" != "0" ] ; then case $DOWNSPEED in 824) DOWNSPEED=`expr $DOWNSPEED+200`;; 860) DOWNSPEED=`expr $DOWNSPEED+1700`;;
Код: Выделить всё
if [ -f /var/run/radattr.$1 ]
then
DOWNSPEED=`/bin/awk '/PPPD-Downstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
UPSPEED=`/bin/awk '/PPPD-Upstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
.....
if [ "$DOWNSPEED" != "0" ] ;
then
case $DOWNSPEED in
824) DOWNSPEED=`expr $DOWNSPEED + 200`;;
860) DOWNSPEED=`expr $DOWNSPEED + 1700`;;
*) k=1;;
esac
Код: Выделить всё
#!/usr/bin/tclsh
package require mysqltcl
# setting speeds for tarifs
# Format: set TARIF(_TARIF_ID_) "TRAF_LIMIT_IN_MBYTES SPEED_IN_KBITS"
# TRAF_LIMIT == 0 - Tarif without traf_limit
set TARIF(2017) "0 2048"
# blokirovka
set TARIF(1999) "0 0"
set TARIF(2036) "4000 512"
set mysqlhost "<host>"
set mysqluser "<user>"
set mysqlpass "<password>"
set mysqldb "UTM5"
set WorkDir "/root/shaper/"
# # # # # # # # # # # start script # # # # # # # # # #
# please do not modify.
# eth0 - inet
# eth1 - LAN
# checking mysql connection
set mysqlsock [mysqlconnect -host $mysqlhost -user $mysqluser -password $mysqlpass -db $mysqldb]
mysqlclose
puts "[exec date] : Loading some need functions..."
proc isEndOfTraffic {mysqlsock UID TARIFID0} {
# if inbound traf is over - return 1
# if indound traf is not over and outbound traf is over - return 2
# if all traf is not over - return 0
if { [mysqlsel $mysqlsock "select sum(d.qnt)/(1000000) as mb from service_links sl left join iptraffic_service_links isl on isl.id=sl.id left join downloaded d on d.downloaded_id=isl.downloaded_id where d.is_deleted=0 and sl.is_deleted=0 and d.tclass_id = 10 and sl.user_id=$UID group by sl.user_id;" -flatlist] > $TARIFID0 } { return 1 }
if { [mysqlsel $mysqlsock "select sum(d.qnt)/(1000000) as mb from service_links sl left join iptraffic_service_links isl on isl.id=sl.id left join downloaded d on d.downloaded_id=isl.downloaded_id where d.is_deleted=0 and sl.is_deleted=0 and d.tclass_id = 20 and sl.user_id=$UID group by sl.user_id;" -flatlist] > $TARIFID0 } { return 2 }
return 0
}
puts "[exec date] : Generating table..."
set GlobUsrTmpFile "$WorkDir\htb-users.txt"
# query with balance and credit
set SQLQuery "SELECT service_links.user_id AS id,inet_ntoa(ip_groups.ip& 0xffffffff) AS ip,account_tariff_link.tariff_id AS tariff,accounts.balance AS balance,accounts.credit AS credit FROM service_links LEFT JOIN users ON users.id = service_links.user_id LEFT JOIN accounts ON accounts.id = service_links.account_id LEFT JOIN account_tariff_link ON account_tariff_link.id = service_links.tariff_link_id LEFT JOIN iptraffic_service_links ON iptraffic_service_links.id = service_links.id LEFT JOIN ip_groups ON ip_groups.ip_group_id = iptraffic_service_links.ip_group_id WHERE service_links.is_deleted = '0' AND users.is_deleted = '0' AND iptraffic_service_links.is_deleted = '0' AND ip_groups.is_deleted = '0' AND accounts.is_deleted = '0' AND account_tariff_link.is_deleted = '0' AND accounts.is_blocked = 0 ORDER BY service_links.user_id"
exec /bin/echo $SQLQuery | /usr/bin/mysql -u $mysqluser $mysqldb -h $mysqlhost -p\$mysqlpass > $GlobUsrTmpFile
puts "[exec date] : Removing olg htb- files..."
exec $WorkDir\htb-clean.sh
puts "[exec date] : Creating htb files"
set mysqlsock [mysqlconnect -host $mysqlhost -user $mysqluser -password $mysqlpass -db $mysqldb]
set GlobUsrFileInID [open $GlobUsrTmpFile r]
set devnnull [gets $GlobUsrFileInID GlobUsrLine]
while { [gets $GlobUsrFileInID GlobUsrLine] >= 0 } {
set SPEED "noshape"
set UID [lindex $GlobUsrLine 0]
set IP [lindex $GlobUsrLine 1]
set TARIFID [lindex $GlobUsrLine 2]
set BALANCE [lindex $GlobUsrLine 3]
set CREDIT [lindex $GlobUsrLine 4]
if {[info exists TARIF($TARIFID)]} {
if { [lindex $TARIF($TARIFID) 0] <= 0 } {
set SPEED [lindex $TARIF($TARIFID) 1]
} else {
if { [isEndOfTraffic $mysqlsock $UID [lindex $TARIF($TARIFID) 0]] != 0 } {
set SPEED [lindex $TARIF($TARIFID) 1]
} else {
set SPEED "noshape"
}
}
} else {
set SPEED "noshape"
}
if {[expr $BALANCE + $CREDIT] <= 0} { set SPEED "-1" }
if { $SPEED != "noshape" && $SPEED != "" && $SPEED > "0" } {
set UsrFileID [open "/etc/sysconfig/htb/eth1-2:[expr $UID + 200].UID_$UID\_in" a]
puts $UsrFileID "RATE=$SPEED\Kbit"
puts $UsrFileID "CEIL=$SPEED\Kbit"
puts $UsrFileID "LEAF=sfq"
puts $UsrFileID "RULE=$IP"
puts $UsrFileID "PRIO=40\n\n"
close $UsrFileID
set UsrFileID [open "/etc/sysconfig/htb/eth0-2:[expr $UID + 200].UID_$UID\_out" a]
puts $UsrFileID "RATE=[expr $SPEED - $SPEED / 7]Kbit"
puts $UsrFileID "CEIL=[expr $SPEED - $SPEED / 8]Kbit"
puts $UsrFileID "LEAF=sfq"
puts $UsrFileID "RULE=$IP,"
puts $UsrFileID "PRIO=40\n\n"
close $UsrFileID
} elseif { $SPEED <= "0" } {
if {$IP != ""} {
}
}
if { $SPEED == "noshape" } {
if {$IP != ""} {
set SPEED "10240"
set UsrFileID [open "/etc/sysconfig/htb/eth1-2:[expr $UID + 200].UID_$UID\_in" a]
puts $UsrFileID "RATE=$SPEED\Kbit"
puts $UsrFileID "CEIL=$SPEED\Kbit"
puts $UsrFileID "LEAF=sfq"
puts $UsrFileID "RULE=$IP"
puts $UsrFileID "PRIO=30\n\n"
close $UsrFileID
set UsrFileID [open "/etc/sysconfig/htb/eth0-2:[expr $UID + 200].UID_$UID\_out" a]
puts $UsrFileID "RATE=[expr $SPEED * 0.8]Kbit"
puts $UsrFileID "CEIL=[expr $SPEED * 0.8]Kbit"
puts $UsrFileID "LEAF=sfq"
puts $UsrFileID "RULE=$IP,"
puts $UsrFileID "PRIO=30\n\n"
close $UsrFileID
}
}
}
close $GlobUsrFileInID
mysqlclose
puts "[exec date] : Creating special shaper's files"
set SpecUsrFileInID [open "$WorkDir\specusers0.txt" r]
set devnnull [gets $SpecUsrFileInID line]
while {[gets $SpecUsrFileInID SpecUsrLine] >= 0} {
set UID [lindex $SpecUsrLine 0]
set IP [lindex $SpecUsrLine 1]
set SPEED [lindex $SpecUsrLine 2]
if { $SPEED != "" && $SPEED > "0" } {
set UsrFileID [open "/etc/sysconfig/htb/eth1-2:[expr $UID + 200].UID_$UID\_in" a]
puts $UsrFileID "RATE=$SPEED\Kbit"
puts $UsrFileID "CEIL=$SPEED\Kbit"
puts $UsrFileID "LEAF=sfq"
puts $UsrFileID "RULE=$IP"
puts $UsrFileID "PRIO=10\n\n"
close $UsrFileID
set UsrFileID [open "/etc/sysconfig/htb/eth0-2:[expr $UID + 200].UID_$UID\_out" a]
puts $UsrFileID "RATE=[expr $SPEED * 0.8]Kbit"
puts $UsrFileID "CEIL=[expr $SPEED * 0.8]Kbit"
puts $UsrFileID "LEAF=sfq"
puts $UsrFileID "RULE=$IP,"
puts $UsrFileID "PRIO=10\n\n"
close $UsrFileID
} elseif { $SPEED <= "0" } {
if {$IP != ""} {
}
}
}
close $SpecUsrFileInID
puts "[exec date] : Generating shaper... (tc rules)"
set compilesh "$WorkDir\shaper-htb.sh"
set OutFileID [open "$compilesh" w]
puts $OutFileID "#!/bin/bash"
close $OutFileID
exec /etc/init.d/htb.init compile >> $compilesh
#exec /etc/init.d/htb.init restart
exec chmod 755 "$compilesh"
puts "[exec date] : Executing shaper... (tc)"
exec "$compilesh"
puts "[exec date] : done"
exit 0
Код: Выделить всё
#!/bin/bash
cd /etc/sysconfig/htb/
/bin/rm -f ./eth0*UID* > /dev/null
/bin/rm -f ./eth1*UID* > /dev/null
Код: Выделить всё
ID IP SPEED coment
5001 1.2.3.0/29 51200 staff subnet
5002 1.2.4.10 512 some host
Код: Выделить всё
exec /bin/echo $SQLQuery | /usr/bin/mysql -u $mysqluser $mysqldb -h $mysqlhost -p $mysqlpass > $GlobUsrTmpFile
Код: Выделить всё
set SQLQuery "SELECT service_links.user_id AS id,inet_ntoa(ip_groups.ip& 0xffffffff) AS ip,account_tariff_link.tariff_id AS tariff,accounts.balance AS balance,accounts.credit AS credit FROM service_links LEFT JOIN users ON users.id = service_links.user_id LEFT JOIN accounts ON accounts.id = service_links.account_id LEFT JOIN account_tariff_link ON account_tariff_link.id = service_links.tariff_link_id LEFT JOIN iptraffic_service_links ON iptraffic_service_links.id = service_links.id LEFT JOIN ip_groups ON ip_groups.ip_group_id = iptraffic_service_links.ip_group_id WHERE service_links.is_deleted = '0' AND users.is_deleted = '0' AND iptraffic_service_links.is_deleted = '0' AND ip_groups.is_deleted = '0' AND accounts.is_deleted = '0' AND account_tariff_link.is_deleted = '0' AND accounts.is_blocked = 0 ORDER BY service_links.user_id"
Код: Выделить всё
[root@vpnhost shaper]# ./start_shaper.tcl
Птн Дек 17 07:35:38 MSK 2010 : Loading some need functions...
Птн Дек 17 07:35:38 MSK 2010 : Generating table...
child process exited abnormally
while executing
"exec /bin/echo $SQLQuery | mysql -u $mysqluser $mysqldb -h $mysqlhost -p $mysqlpass > $GlobUsrTmpFile"
(file "./start_shaper.tcl" line 50)