Ограничение скорости

Технические вопросы по UTM 5.0
RusBiT
Сообщения: 24
Зарегистрирован: Пн янв 22, 2007 12:44

Ограничение скорости

Сообщение RusBiT »

Нужно ограничить скорость до 30 килобайт в секунду, но только на одном тарифе. Может есть у кого скриптик? :)

Модуль динамического шейпирования не предлогать :)

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

Если используется FreeBSD/mpd - то можно прописать соотв RADIUS-параметры для тарифа. Пробовал. Работает. Модуль динамического шейпирования предназначен несколько для другого.

RusBiT
Сообщения: 24
Зарегистрирован: Пн янв 22, 2007 12:44

Сообщение RusBiT »

mikkey finn писал(а):Если используется FreeBSD/mpd - то можно прописать соотв RADIUS-параметры для тарифа. Пробовал. Работает. Модуль динамического шейпирования предназначен несколько для другого.
Сейчас использую poptop/ freebsd , планирую переходить на mpd.
Могли по подробнее рассказать?

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

можно, подробности есть в документации на mpd. Там и код вендора, и коды аттрибутов расписаны, и пример есть.

joker38
Сообщения: 13
Зарегистрирован: Пт фев 04, 2005 18:10
Контактная информация:

Сообщение joker38 »

Примерно так:
vendor;attr;strintval
12341 2 3=bw 8Kbyte/s
12341 2 5=bw 8Kbyte/s
12341 1 1=pipe %p3 all from any to any in
12341 1 2=pipe %p5 all from any to any out

Yuriy
Сообщения: 29
Зарегистрирован: Ср мар 21, 2007 10:25

Сообщение Yuriy »

Подниму эту тему чтобы не продить новые.
Вопрос к знающим людям - насколько корректна операция добавления радиус-параметра в тариф, на котором уже работают клиенты? Нетап у меня в этому случае ругается, но параметры всёравно добавляет! Всё-ли будет продолжать корректно работать в этому случае?
UTM 5.2.1-004

Аватара пользователя
Lex
NetUP Team
Сообщения: 623
Зарегистрирован: Ср мар 09, 2005 12:12
Откуда: НетАП
Контактная информация:

Сообщение Lex »

Yuriy писал(а):Подниму эту тему чтобы не продить новые.
Вопрос к знающим людям - насколько корректна операция добавления радиус-параметра в тариф, на котором уже работают клиенты? Нетап у меня в этому случае ругается, но параметры всёравно добавляет! Всё-ли будет продолжать корректно работать в этому случае?
UTM 5.2.1-004
Всё должно работать корректно, насколько я помню.

Yuriy
Сообщения: 29
Зарегистрирован: Ср мар 21, 2007 10:25

Сообщение Yuriy »

Хм....добавляюв сущствующий ТП следующий радиус-параметр
Vendor:0;Attr:230;Val:1024 тип String
потом проверяю - а там вместо 1024 какоето сумасшедшее число вроде "1820319" так и должно быть? ) а где моё 1024?

Если-же к ТП ещё никто не привязан - добавляется правильно

set
Сообщения: 56
Зарегистрирован: Вт июл 31, 2007 13:54

Сообщение set »

Хм....добавляюв сущствующий ТП следующий радиус-параметр
Vendor:0;Attr:230;Val:1024 тип String
потом проверяю - а там вместо 1024 какоето сумасшедшее число вроде "1820319" так и должно быть? ) а где моё 1024?
У меня вместо "Vendor:0 Attr:230 Val:1024" и "Vendor:0 Attr:230 Val:1024" тип "String" становится "Vendor:0 Attr:230 Val:875704369" и "Vendor:0 Attr:231 Val:875704369" и тип "Номер".

Так и должно быть?

Yuriy
Сообщения: 29
Зарегистрирован: Ср мар 21, 2007 10:25

Сообщение Yuriy »

Вот именно! Совершено другие величины устанавливаются! А вот если этот ТП ещё ни-к-кому не привязан - то всё ОК!

set
Сообщения: 56
Зарегистрирован: Вт июл 31, 2007 13:54

Сообщение set »

Вот radius_main.log

Код: Выделить всё

?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; User <test_user> connecting
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; Session for sessionid <test_user> not found in <this.is.route> cache
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS DBA&#58; Info for login <test_user> found. type <1>
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; Auth scheme&#58; CHAP
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; CHAP&#58; Challenge size&#58; 20
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; CHAP&#58; Authorized user <test_user>
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; IP claimed&#58; 0xc0a86410 &#40;<192.168.100.16>&#41;
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; Calling fill radius attributes for service. Attr storage size <2>
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; fill_radius_data Vendor&#58;<0> Attr&#58;<230> Val&#58;<875704369> Size<4>
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; fill_radius_data result <0> message <Success>
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; fill_radius_data verifying packet. fetched val <-1243451640> size&#58;<4>
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; fill_radius_data Vendor&#58;<0> Attr&#58;<231> Val&#58;<875704369> Size<4>
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; fill_radius_data result <0> message <Success>
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; fill_radius_data verifying packet. fetched val <-1243452936> size&#58;<4>
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; Calling fill radius attributes for slink. Attr storage size <0>
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; Calling fill radius attributes for NAS. Attr storage size <0>
 Notice&#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; Login OK <test_user> from NAS <this.is.route> CLID <>
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; Setting interim update interval from config
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; Auth reply&#58; RPacket&#58;
Code&#58; 2; ID&#58; 69
<Vendor&#58; 0; Attr&#58; 6>&#91;4&#93;&#58; 00000002
<Vendor&#58; 0; Attr&#58; 7>&#91;4&#93;&#58; 00000001
<Vendor&#58; 0; Attr&#58; 8>&#91;4&#93;&#58; c0a86410
<Vendor&#58; 0; Attr&#58; 9>&#91;4&#93;&#58; ffffffff
<Vendor&#58; 0; Attr&#58; 10>&#91;4&#93;&#58; 00000000
<Vendor&#58; 0; Attr&#58; 27>&#91;4&#93;&#58; 00015180
<Vendor&#58; 0; Attr&#58; 85>&#91;4&#93;&#58; 0000003c
<Vendor&#58; 0; Attr&#58; 230>&#91;4&#93;&#58; 34323031
<Vendor&#58; 0; Attr&#58; 231>&#91;4&#93;&#58; 34323031

?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS Packet&#58; raw data constructed! size <74>
?Debug &#58; Apr 10 10&#58;33&#58;15 RadiusSocket&#58; Moving RADIUS packet into send queue
?Debug &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; Next...
?Trace &#58; Apr 10 10&#58;33&#58;15 AuthServer&#58; Process loop step
?Debug &#58; Apr 10 10&#58;33&#58;15 RadiusSocket&#58; Waiting for RADIUS raw data
?Debug &#58; Apr 10 10&#58;33&#58;15 RadiusSocket&#58; RADIUS raw data sent
?Debug &#58; Apr 10 10&#58;33&#58;15 RadiusSocket&#58; RADIUS raw data sent
?Debug &#58; Apr 10 10&#58;33&#58;15 RadiusSocket&#58; RADIUS packet successfully received
?Debug &#58; Apr 10 10&#58;33&#58;15 RadiusSocket&#58; RADIUS raw data obtained
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS Packet&#58; Size <120>; HDR.Size <120>
?Debug &#58; Apr 10 10&#58;33&#58;15 AcctServer&#58; Recv...
?Debug &#58; Apr 10 10&#58;33&#58;15 AcctServer&#58; Packet from <this.is.route> packet dump&#58; RPacket&#58;
Code&#58; 4; ID&#58; 70
<Vendor&#58; 0; Attr&#58; 1>&#91;9&#93;&#58; 746573745f75736572
<Vendor&#58; 0; Attr&#58; 4>&#91;4&#93;&#58; 7f000001
<Vendor&#58; 0; Attr&#58; 5>&#91;4&#93;&#58; 0000001b
<Vendor&#58; 0; Attr&#58; 6>&#91;4&#93;&#58; 00000002
<Vendor&#58; 0; Attr&#58; 7>&#91;4&#93;&#58; 00000001
<Vendor&#58; 0; Attr&#58; 8>&#91;4&#93;&#58; c0a86410
<Vendor&#58; 0; Attr&#58; 31>&#91;17&#93;&#58; 30303a31363a45363a36323a46453a4241
<Vendor&#58; 0; Attr&#58; 40>&#91;4&#93;&#58; 00000001
<Vendor&#58; 0; Attr&#58; 41>&#91;4&#93;&#58; 00000000
<Vendor&#58; 0; Attr&#58; 44>&#91;14&#93;&#58; 3437464443343738324337393030
<Vendor&#58; 0; Attr&#58; 45>&#91;4&#93;&#58; 00000001
<Vendor&#58; 0; Attr&#58; 61>&#91;4&#93;&#58; 00000000
 
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS DBA&#58; NAS found. Data size <0>
?Debug &#58; Apr 10 10&#58;33&#58;15 AcctServer&#58; Acct packet with session ID&#58; 47FDC4782C7900
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS DBA&#58; NAS found. Data size <0>
?Debug &#58; Apr 10 10&#58;33&#58;15 AcctServer&#58; Acct-Start packet
?Debug &#58; Apr 10 10&#58;33&#58;15 AcctServer&#58; Acct-Start&#58; User <test_user>
?Debug &#58; Apr 10 10&#58;33&#58;15 AcctServer&#58; Acct-Session-Time &#40;46&#41; not present in accountg packet ! Setting session_time_not_present flag ... 
?Debug &#58; Apr 10 10&#58;33&#58;15 AcctServer&#58; No h323-setup-time &#40;9, 25&#41; attribute in accountig start packet. Setting to NOW <1207812795>!
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS DBA&#58; Info for login <test_user> found. type <1>
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS DBA&#58; info for user found. type <1> info addr <-1243450400>
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS DBA&#58; search_user_info return info <-1243450400>
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS DBA&#58; search_user_info return valid info
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS IPPool&#58; Bind <c0a86410> &#58; <c0a86410>
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS DBA&#58; Setting interim interval <0> for session id <47FDC4782C7900>
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS DBA&#58; Calling send_session_log_init_sync ...
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS Stream&#91;plugin&#93;&#58; send_session_log_init_sync
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS Stream&#91;plugin&#93;&#58; init log id <8949>
?Debug &#58; Apr 10 10&#58;33&#58;15 AcctServer&#58; Reply packet dump&#58; RPacket&#58;
Code&#58; 5; ID&#58; 70

?Debug &#58; Apr 10 10&#58;33&#58;15 RadiusSocket&#58; Moving RADIUS packet into send queue
?Debug &#58; Apr 10 10&#58;33&#58;15 AcctServer&#58; Next...
?Debug &#58; Apr 10 10&#58;33&#58;15 RadiusSocket&#58; Waiting for RADIUS raw data
?Debug &#58; Apr 10 10&#58;33&#58;15 RadiusSocket&#58; RADIUS raw data sent
?Debug &#58; Apr 10 10&#58;33&#58;15 RADIUS Stream&#91;plugin&#93;&#58; Ping reply received
?Debug &#58; Apr 10 10&#58;33&#58;15 StreamConnection&#58; Message id <0x202f>, handler returns 0
?Debug &#58; Apr 10 10&#58;33&#58;16 RadiusSocket&#58; RADIUS packet successfully received
?Debug &#58; Apr 10 10&#58;33&#58;16 RadiusSocket&#58; RADIUS raw data obtained
?Debug &#58; Apr 10 10&#58;33&#58;16 RADIUS Packet&#58; Size <150>; HDR.Size <150>
?Debug &#58; Apr 10 10&#58;33&#58;16 AcctServer&#58; Recv...
?Debug &#58; Apr 10 10&#58;33&#58;16 AcctServer&#58; Packet from <this.is.route> packet dump&#58; RPacket&#58;
Code&#58; 4; ID&#58; 71
<Vendor&#58; 0; Attr&#58; 1>&#91;9&#93;&#58; 7363686f6f6c5f3137
<Vendor&#58; 0; Attr&#58; 4>&#91;4&#93;&#58; 7f000001
<Vendor&#58; 0; Attr&#58; 5>&#91;4&#93;&#58; 00000002
<Vendor&#58; 0; Attr&#58; 6>&#91;4&#93;&#58; 00000002
<Vendor&#58; 0; Attr&#58; 7>&#91;4&#93;&#58; 00000001
<Vendor&#58; 0; Attr&#58; 8>&#91;4&#93;&#58; c0a8645b
<Vendor&#58; 0; Attr&#58; 31>&#91;17&#93;&#58; 30303a31423a31313a41303a35323a3436
<Vendor&#58; 0; Attr&#58; 40>&#91;4&#93;&#58; 00000003
<Vendor&#58; 0; Attr&#58; 41>&#91;4&#93;&#58; 00000000
<Vendor&#58; 0; Attr&#58; 42>&#91;4&#93;&#58; 001e933d
<Vendor&#58; 0; Attr&#58; 43>&#91;4&#93;&#58; 02281356
<Vendor&#58; 0; Attr&#58; 44>&#91;14&#93;&#58; 3437464442413836323832453030
<Vendor&#58; 0; Attr&#58; 45>&#91;4&#93;&#58; 00000001
<Vendor&#58; 0; Attr&#58; 46>&#91;4&#93;&#58; 000009f3
<Vendor&#58; 0; Attr&#58; 47>&#91;4&#93;&#58; 00005c9d
<Vendor&#58; 0; Attr&#58; 48>&#91;4&#93;&#58; 000072f3
<Vendor&#58; 0; Attr&#58; 61>&#91;4&#93;&#58; 00000000 
Насколько я понял при подключении пользователя передаются неверное Val. Подскажите, кто знает, как это поправить?

set
Сообщения: 56
Зарегистрирован: Вт июл 31, 2007 13:54

Сообщение set »

Lex, подскажите в чем дело, куда копать то?

Yuriy
Сообщения: 29
Зарегистрирован: Ср мар 21, 2007 10:25

Сообщение Yuriy »

up

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

Приведу свой рабочий скрипт для линукса, может пригодиться. Не стал заморачиваться с радиусами - ибо считаю что лишняя прокладка стабильность работы не улучшает.
Скрипту передается параметры вида:
/netup/utm5/bin/traffic.sh start UIP RULE_ID 128
Где RULE_ID - для привязки всех IP пользователя в одну полосу. 128 - скорость в килобитах.
Выключение: /netup/utm5/bin/traffic.sh start UIP RULE_ID
Подробные вопросы можете не задавать - скрипт сделал мой админ и я не в курсе пожробностей. но работает надежно.

Код: Выделить всё

#!/bin/bash

RATE=$&#123;4&#58;-64&#125;
IP=$&#123;2&#58;-192.168.255.254&#125;
CLASS=$3

start&#40;&#41; &#123;
/sbin/tc qdisc add dev eth0 root handle 1 htb default 0 r2q 5
/sbin/tc class add dev eth0 parent 1&#58; classid 1&#58;2 htb rate 95Mbit burst 3k quantum 8192

/sbin/tc qdisc add dev eth1 root handle 1 htb default 0 r2q 5
/sbin/tc class add dev eth1 parent 1&#58; classid 1&#58;2 htb rate 95Mbit burst 3k quantum 8192
&#125;

stop&#40;&#41; &#123;
/sbin/tc qdisc del dev eth0 root
/sbin/tc qdisc del dev eth1 root
&#125;

set_limit&#40;&#41; &#123;
/sbin/iptables -t mangle -A POSTROUTING -d $IP/32 -j MARK --set-mark 0x$CLASS
/sbin/iptables -t mangle -A PREROUTING -s $IP/32 -j MARK --set-mark 0x$CLASS

/sbin/tc class add dev eth0 parent 1&#58;2 classid 1&#58;$CLASS htb rate $&#123;RATE&#125;Kbit 
/sbin/tc qdisc add dev eth0 parent 1&#58;$CLASS handle $CLASS sfq perturb 10  
/sbin/tc filter add dev eth0 parent 1&#58;0 protocol ip prio 100 handle 0x$CLASS fw classid 1&#58;$CLASS

/sbin/tc class add dev eth1 parent 1&#58;2 classid 1&#58;$CLASS htb rate $&#123;RATE&#125;Kbit 
/sbin/tc qdisc add dev eth1 parent 1&#58;$CLASS handle $CLASS sfq perturb 10 
/sbin/tc filter add dev eth1 parent 1&#58;0 protocol ip prio 100 handle 0x$CLASS fw classid 1&#58;$CLASS
&#125;

remove_limit&#40;&#41; &#123;
/sbin/iptables -t mangle -D POSTROUTING -d $IP/32 -j MARK --set-mark 0x$CLASS
/sbin/iptables -t mangle -D PREROUTING -s $IP/32 -j MARK --set-mark 0x$CLASS

/sbin/tc filter del dev eth0 parent 1&#58;0 protocol ip prio 100 handle 0x$CLASS fw classid 1&#58;$CLASS
/sbin/tc qdisc del dev eth0 parent 1&#58;$CLASS handle $CLASS
/sbin/tc class del dev eth0 parent 1&#58;2 classid 1&#58;$CLASS

/sbin/tc filter del dev eth1 parent 1&#58;0 protocol ip prio 100 handle 0x$CLASS fw classid 1&#58;$CLASS
/sbin/tc qdisc del dev eth1 parent 1&#58;$CLASS handle $CLASS
/sbin/tc class del dev eth1 parent 1&#58;2 classid 1&#58;$CLASS
&#125;

case "$1" in
    init&#41;
	start
	;;
    
    end&#41;
	stop
	;;
    
    start&#41;
	set_limit $IP $CLASS $RATE 
	;;
    
    stop&#41;
	remove_limit $IP $CLASS
	;;
    
    *&#41;
	echo "Usage&#58; $0 &#40;init|end|start|stop&#41; &#91;ip-address&#93; &#91;class&#93; &#91;rate&#93;"
	echo "UTM5&#58; $0 start UIP RULE_ID <rate>"
	exit 1
esac

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

Да, забыл упомянуть - скрипт запускается посредством правил файрвола биллинга. Для тарифа два правила - стандартное включение отключение через iptables и собственно вышеприведенный скрипт.

Ответить