forum.bitel.ru http://forum.bitel.ru/ |
|
MPD+Radius Attributes http://forum.bitel.ru/viewtopic.php?f=22&t=191 |
Страница 1 из 1 |
Автор: | vddu [ 06 апр 2007, 22:47 ] |
Заголовок сообщения: | MPD+Radius Attributes |
Интересует такой вопрос, как проверить, передаются ли аттрибуты на MPD сервер с радиуса, что я сделал: прочитал http://www.rostovlinux.ru/content/view/1486/45/ http://www.mavhome.dp.ua/progs.htm http://snezhnoe.dn.ua/docs/mpd/mpd21.html внес в dictonary.xml изменения: Код: <vendor code="12341" name="mpd"> <attribute name="mpd-rule" type="string" code="1"/> <attribute name="mpd-pipe" type="string" code="2"/> <attribute name="mpd-queue" type="string" code="3"/> </vendor> добавил в передаваемые радиус аттрибуты Код: mpd-pipe 5=bw 20Kbyte/s mpd-pipe 1=bw 10Kbyte/s mpd-rule 1=pipe %p1 all from any to any in mpd-rule 2=pipe %p5 all from any to any out получил в radius.log следущую запись: Код: INFO 06.04.2007 19:17:57 RESPONSE:
Type=ACCOUNTING_RESPONSE Attributes: INFO 06.04.2007 19:17:57 AUTH: Type=AUTHENTICATION_REQUEST Attributes: User-Name=test NAS-Identifier=vpn-time.online.volhov.ru CHAP-Password=.Qm?z.??????..??? NAS-IP-Address=192.168.0.248 NAS-Port=8 Service-Type=2 Framed-Protocol=1 Calling-Station-Id=10.1.254.1 / (unknown) / (unknown) NAS-Port-Type=5 CHAP-Challenge=?.h??HD`???%0??8 ??0pZ ?. INFO 06.04.2007 19:17:57 RESPONSE: Type=AUTHENTICATION_ACCEPT Process time:51 Attributes: Acct-Interim-Interval=60 Service-Type=2 Framed-Protocol=1 Framed-IP-Address=10.0.1.1 mpd-rule=1=pipe %p1 all from any to any in mpd-rule=2=pipe %p5 all from any to any out mpd-pipe=5=bw 20Kbyte/s mpd-pipe=1=bw 10Kbyte/s INFO 06.04.2007 19:17:57 ACCOUNT: Type=ACCOUNTING_REQUEST Attributes: User-Name=test NAS-Identifier=vpn-time.online.volhov.ru NAS-IP-Address=192.168.0.248 NAS-Port=8 Service-Type=2 Framed-Protocol=1 Framed-IP-Address=10.0.1.1 Acct-Status-Type=1 Acct-Session-Id=5873277-pptp008 Acct-Authentic=1 Acct-Link-Count=1 Acct-Multi-Session-Id=5873277-pptp008 NAS-Port-Type=5 Calling-Station-Id=10.1.254.1 / (unknown) / (unknown) исходя из лога радиус куда-то это все передал, но MPD не создал правила(хотя по идее должен если я правильно понял документацию) подскажите, как проверить полученные аттрибуты. Спасибо |
Автор: | vddu [ 06 апр 2007, 22:52 ] |
Заголовок сообщения: | |
по правде сказать мне без разницы какой параметр передавать, лишь бы он обработался MPD сервером, полученную цифру в любом числобуквенном формате я выдерну и вставлю в скрипт, главное понять какой параметр конкретно я смогу передать в iface up-script для дальнейшей обработки |
Автор: | vddu [ 07 апр 2007, 22:17 ] |
Заголовок сообщения: | |
проблему я свою решил, не так красиво как хотелось бы, но решил(время поджимает) если вдруг кому пригодится, то так сказать для потомков: адреса выдаются в сети класса А, поскольку в моей сети данный диапазон задействован слабо(10.1.х.х 10.2.х.х) то я решил на авторизаторе воспользоваться вторым байтом IP адреса для ограничения скорости, как это все выглядит грубо говоря. у нас есть несколько тарифов, дадим им условные цифры 3 6 8 и 12 соответственно в радуисе параметр Framed-IP-Address задавать в соответствии с тарифом 10.12.1.2 или там 10.6.5.76 далее этот адрес передается нами на авторизатор и попадает в upiface.sh: Код: #!/bin/sh echo `date` $5 connected to $1 with $4 >> /var/log/mpd.stat echo $1 > /var/log/mpd.ifaces/$5.$1 echo $4 >> /var/log/mpd.ifaces/$5.$1 date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S" >> /var/log/mpd.ifaces/$5.$1 rulen=`echo $1| awk -Fng '{ print $2 }'` # номер правила будет равняться номеру интерфейса + 1, то есть если у нас ng0 то номер правила будет 1 и так далее rulen=$(($rulen+1)) # записываем номер правила в файлик echo $rulen>>/var/log/mpd.ifaces/$5.$1 # вытаскиваем скорость из 2 байта полученного с Радиус-сервера IP адреса speed=`echo $4| awk -F. '{ print $2 }'` # расставляем условия, на какой тариф какую скорость выставить и какая скорость будет по умолчанию if [ "$speed" = "12" ]; then echo "512Kbit/sec" /sbin/ipfw pipe $rulen config bw 512Kbits/sec /sbin/ipfw add $rulen pipe $rulen ip from any to any via $1 elif [ "$speed" = "8" ]; then /sbin/ipfw pipe $rulen config bw 256Kbits/sec /sbin/ipfw add $rulen pipe $rulen ip from any to any via $1 elif [ "$speed" = "6" ]; then /sbin/ipfw pipe $rulen config bw 128Kbits/sec /sbin/ipfw add $rulen pipe $rulen ip from any to any via $1 elif [ "$speed" = "3" ]; then echo /sbin/ipfw pipe $rulen config bw 56Kbits/sec queue 50 gred 0.002/10/30/0.1 /sbin/ipfw add $rulen pipe $rulen ip from any to any via $1 elif [ "$speed" = "20" ]; then echo "2048Kbit/sec" /sbin/ipfw pipe $rulen config bw 2048Kbits/sec /sbin/ipfw add $rulen pipe $rulen ip from any to any via $1 else echo "56Kbit/sec" /sbin/ipfw pipe $rulen config bw 56Kbits/sec queue 50 gred 0.002/10/30/0.1 /sbin/ipfw add $rulen pipe $rulen ip from any to any via $1 fi и downiface.sh Код: #!/bin/sh
echo `date` $3 close connection on $1 >> /var/log/mpd.stat rulen=`tail -1 /var/log/mpd.ifaces/$3.$1` /sbin/ipfw delete $rulen /sbin/ipfw -q pipe del $rulen rm -f /var/log/mpd.ifaces/$3.$1 если у кого-либо есть более элегантное решение, я буду очень рад |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |