forum.bitel.ru
http://forum.bitel.ru/

Шейпер
http://forum.bitel.ru/viewtopic.php?f=5&t=57
Страница 1 из 1

Автор:  ЛИС [ 23 янв 2007, 07:42 ]
Заголовок сообщения:  Шейпер

Цитата: "Начиная с 4.0 версии в тарифных планах возможна установка группы RADIUS атрибутов, передаваемых в AUTH ACCEPT пакете. Например, это можнет использоваться для заужения канала клиента в зависимости от потребленного им трафика в течении месяца. Пример подобного тарифа приведен ниже."

А можно подробнее эту актуальную тему развить:
1. Как собственно на разных тарифных планах разную скорость давать?
2. На каких НАСах это работает и насколько корректно - вх и исх скорость режет?

Автор:  Администратор [ 23 янв 2007, 11:42 ]
Заголовок сообщения: 

1. Просто в каждый тариф устанавливается своя группа атрибутов.
2. Работает точно на CISCO, собственно работает на любом NAS е которому можно передать скорость через атрибут RADIUS.

Автор:  mister999 [ 25 янв 2007, 00:03 ]
Заголовок сообщения: 

Интересует возможность ограничения скорости порта на NAS PPPD. Кто знает рабочие атрибуты для PPPD или как реализовать эту задачу. Сейчас ограничиваю через Ip-up, но хочется через атрибуты.

Автор:  Администратор [ 25 янв 2007, 10:33 ]
Заголовок сообщения: 

http://www.die.net/doc/linux/man/man8/p ... ttr.8.html
По-моему возможно в ip-up брать атрибуты переданные биллингом.

Автор:  mister999 [ 25 янв 2007, 12:15 ]
Заголовок сообщения: 

Я реализовал это так - может кому пригодится:

linux pppd + radattr.so

Здесь рассказывается как использовать атрибуты, передаваемые радиусом NAS’у на основе linux pppd. Это нужно для того, чтобы ограничивать пользователям скорость и выставлять фильтры. Последние версии pppd имеют в своем составе плагины для работы с radius-сервером. Чтобы воспользоваться этой возможностью нужно добавить две строчки в файл options.pptpd :

plugin radius.so
plugin radattr.so

radius.so предназначен для аутентификации и аккаунтинга через радиус, а radattr.so принимает от радиуса дополнительные атрибуты и помещает их в файл /var/run/radattr.pppX , где pppX - имя интерфейса. Выглядит он примерно так:

MS-CHAP2-Success \207S=F17E6A6B06CD4B0C38F6....F35CD130BD7EBE
MS-MPPE-Recv-Key \302\177\360\305\202I\362O....65\26\216#\336
MS-MPPE-Send-Key \317Ab4\353\275R\24\331O\3....\236gr*\274$\233
MS-MPPE-Encryption-Policy
MS-MPPE-Encryption-Types
Framed-IP-Address 192.168.144.226
Filter-Id test_filter
PPPD-Downstream-Speed-Limit 128
PPPD-Upstream-Speed-Limit 128
Octets-Direction Sum
Session-Octets-Limit 106954752
Framed-IP-Netmask 255.255.255.255
MS-CHAP-MPPE-Keys p3\314wm\333B7@S/\024\370E\....\241'e\371K\303
Acct-Interim-Interval 60
Session-Timeout 29293

Этот файл удобно обрабатывать в скрипте /etc/ppp/ip-up, для этого добавляем в него следующие строки :

if [ -f /var/run/radattr.$1 ]
then
DOWNSPEED=`/usr/bin/awk '/PPPD-Downstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
UPSPEED=`/usr/bin/awk '/PPPD-Upstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
FILTERS=`/usr/bin/awk '/Filter-Id/ {print $2}' /var/run/radattr.$1`
#echo $DOWNSPEED
#echo $UPSPEED
#echo $FILTERS
/sbin/tc qdisc del dev $1 root > /dev/null
/sbin/tc qdisc del dev $1 ingress > /dev/null

##### speed server->client
if [ "$UPSPEED" != "0" ] ;
then
/sbin/tc qdisc add dev $1 root handle 1: htb default 20 r2q 1
/sbin/tc class add dev $1 parent 1: classid 1:1 htb rate ${UPSPEED}kbit burst 4k
/sbin/tc class add dev $1 parent 1:1 classid 1:10 htb rate ${UPSPEED}kbit burst 4k prio 1
/sbin/tc class add dev $1 parent 1:1 classid 1:20 htb rate ${UPSPEED}kbit burst 4k prio 2
/sbin/tc qdisc add dev $1 parent 1:10 handle 10: sfq perturb 10 quantum 1500
/sbin/tc qdisc add dev $1 parent 1:20 handle 20: sfq perturb 10 quantum 1500
/sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
/sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10
/sbin/tc filter add dev $1 parent 1: protocol ip prio 10 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u160x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:10
fi
##### speed client->server
if [ "$DOWNSPEED" != "0" ] ;
then
/sbin/tc qdisc add dev $1 handle ffff: ingress
/sbin/tc filter add dev $1 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${DOWNSPEED}kbit burst 12k drop flowid :1
fi
fi

Для того, чтобы нужные атрибуты распознавались радиусом и радиусклиентом нужно добавить их в соответствующие словари (/etc/radiusclient/dictionary и /usr/local/BGRadiusDialup/dictionary.xml)

ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer
ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer

Скорость можно выставлять индивидуально для каждого пользователя. При этом можно установить разные upspeed и downspeed. Скорость выставляется в Kbit/s

Так же можно привязать определенные значения атрибутов PPPD-Upstream-Speed-Limit и PPPD-Downstream-Speed-Limit к определенному тарифу. Т.е. чтобы не прописывать у каждого юзера, а сразу задавать скорость для тарифов.

Автор:  Администратор [ 25 янв 2007, 13:30 ]
Заголовок сообщения: 

Можно добавить в документацию?

Автор:  mister999 [ 25 янв 2007, 20:02 ]
Заголовок сообщения: 

Администратор писал(а):
Можно добавить в документацию?

Да конечно. Стараемся для Вас:)

Автор:  ЛИС [ 27 янв 2007, 17:48 ]
Заголовок сообщения: 

Спасибо mister999!!!
Вопрос на засыпку - а как сделать, что бы скорость в/из внешних сетей ограничивалась, а внутренних - нет???

Автор:  First [ 20 авг 2007, 03:15 ]
Заголовок сообщения: 

А вот у меня проблемка в том что в файлике radattr.ppp*

Всего две строчки

Service-Type Framed-User
Framed-Protocol PPP

Собственно где вся остальная информация? :(

хотя судя по логам радиуса её много :)

Автор:  Администратор [ 21 авг 2007, 11:05 ]
Заголовок сообщения: 

Цитата:
Для того, чтобы нужные атрибуты распознавались радиусом и радиусклиентом нужно добавить их в соответствующие словари (/etc/radiusclient/dictionary и /usr/local/BGRadiusDialup/dictionary.xml)

Скорее всего их нет в словаре радиусклиента

Автор:  ЛИС [ 23 авг 2007, 13:34 ]
Заголовок сообщения: 

ЛИС писал(а):
Спасибо mister999!!!
Вопрос на засыпку - а как сделать, что бы скорость в/из внешних сетей ограничивалась, а внутренних - нет???



я это сделал, по инструкции выше!!!
На линухе точно работает)))
Причем одновременно на pptp и pppoe!!!!

Если не разберешся, напиши мне, я на выходных гляну - отпишусь))))

ЗЫ
я хитрее сделал - локалку ограничил в 95 мбит)))
Шо бы для инета дырочка всегда была))))

Автор:  PELMEN [ 05 мар 2009, 15:15 ]
Заголовок сообщения: 

не получается настроить шейпер по данному методу.

плагин зацепляется,
а вот аттрибуты не передаются
в файлах radattr.pppX нету PPPD-Downstream-Speed-Limit или
PPPD-Upstream-Speed-Limit

словари проверил.
аттрибуты есть в обоих.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/