Здраствуйте все.
Подскажите как быть.Имеется сервер статистики DialUP Radius+ на Linux RH 7.3
Все хорошо работает. Но тарифицирует только время проведенное в сети.
Также может показывать сколько пользователь передал входящего и исходящего трафика.
Можно ли как то заставить этот Radius тарифицировать по трафику(превысил лимит - отлючил пользователя от сети)!!!Помогите советом!
>Здраствуйте все.
>Подскажите как быть.
>
>Имеется сервер статистики DialUP Radius+ на Linux RH 7.3
>Все хорошо работает. Но тарифицирует только время проведенное в сети.
>Также может показывать сколько пользователь передал входящего и исходящего трафика.
>Можно ли как то заставить этот Radius тарифицировать по трафику(превысил лимит -
>отлючил пользователя от сети)!!!
>
>Помогите советом!
Dialup сделан на базе чего ? Cisco ? Тогда пишешь скрипт который по крону смотрит активные сессии и при превышении лимита по SNMP рубит сессию на Cisco. Вобщем схема такая: скрипт из крона смотрит трафик и при привышении по SNMP завершает сессии на точке доступа (теоретически это может быть и Unix и Cisco). По SNMP у меня пока не получилось управлять FreeBSD поэтому я выполняю на ней команды удаленно по ssh
>Dialup сделан на базе чего ? Cisco ? Тогда пишешь скрипт который
>по крону смотрит активные сессии и при превышении лимита по SNMP
>рубит сессию на Cisco. Вобщем схема такая: скрипт из крона смотрит
>трафик и при привышении по SNMP завершает сессии на точке доступа
>(теоретически это может быть и Unix и Cisco). По SNMP у
>меня пока не получилось управлять FreeBSD поэтому я выполняю на ней
>команды удаленно по sshПонятно.
(DialUP на Cisco)
Но не понятно другое. Где прописать этот лимит, на Radius-е нет конкретной ячейки куда можно вписать трафик. Допустим я сделал новое окошко в которое можно прописать лимит трафика. А как это связать с Cisco?
Если можно опишите подробнее, а лутьше если Вы раньше с этим имели дело, то по icq-е или по e-mail.
>>Dialup сделан на базе чего ? Cisco ? Тогда пишешь скрипт который
>>по крону смотрит активные сессии и при превышении лимита по SNMP
>>рубит сессию на Cisco. Вобщем схема такая: скрипт из крона смотрит
>>трафик и при привышении по SNMP завершает сессии на точке доступа
>>(теоретически это может быть и Unix и Cisco). По SNMP у
>>меня пока не получилось управлять FreeBSD поэтому я выполняю на ней
>>команды удаленно по ssh
>
>Понятно.
>(DialUP на Cisco)
>Но не понятно другое. Где прописать этот лимит, на Radius-е нет конкретной
>ячейки куда можно вписать трафик. Допустим я сделал новое окошко в
>которое можно прописать лимит трафика. А как это связать с Cisco?
>
>Если можно опишите подробнее, а лутьше если Вы раньше с этим имели
>дело, то по icq-е или по e-mail.
С Cisco это напрямую не связать (может что нибудь есть в vsa, но точно не знаю). Добавляешь новый атрибут допустим, traffic_limit и скриптом выдираешь его из базы для конкретного пользователя, этим же скриптом раз в минут 5 проверяешь accounting и смотришь чтобы трафик из аккаунтинга не превысил лимит, и если он превышен то по SNMP опускаешь интерфейс. Вобщем такая вот схема =)
>С Cisco это напрямую не связать (может что нибудь есть в vsa,
>но точно не знаю). Добавляешь новый атрибут допустим, traffic_limit и скриптом
>выдираешь его из базы для конкретного пользователя, этим же скриптом раз
>в минут 5 проверяешь accounting и смотришь чтобы трафик из аккаунтинга
>не превысил лимит, и если он превышен то по SNMP опускаешь
>интерфейс. Вобщем такая вот схема =)Спасибо.
Схема понятна. Будем разбираться.
>
>>С Cisco это напрямую не связать (может что нибудь есть в vsa,
>>но точно не знаю). Добавляешь новый атрибут допустим, traffic_limit и скриптом
>>выдираешь его из базы для конкретного пользователя, этим же скриптом раз
>>в минут 5 проверяешь accounting и смотришь чтобы трафик из аккаунтинга
>>не превысил лимит, и если он превышен то по SNMP опускаешь
>>интерфейс. Вобщем такая вот схема =)
Дело в том что у меня база ведется в файле, а не в базе.Файл вида /home/radius/conf/realm.ru.user
dima Encrypted-Password = "Oc3jTDDzSmrPE" //зашифрованный пароль
Comment = "dimon", //поле коментарий
User-Contract = "1", //номер контракта
Dialup-Hours = "1", //кол-во часов
Registration-Date = "Sep 23 2003", //дата регистрации
After-Dial-Expiration = "REMOVE" //что делать после истечения лимита часов (удалить)Вот так.
И каким образом мне добавить сюда новый параметр (traffic_limit)?Может подскажете где можно скачать скрипты на Radius для отрубания пользователей Dialup после превышения лимита!!!
Вообще радиусов туча. И почему твой радиус не считает трафик, просто удивительно.
Посмотри словарь, какие аттрибуты поддерживает твой радиус.
>Вообще радиусов туча. И почему твой радиус не считает трафик, просто удивительно.
>
>Посмотри словарь, какие аттрибуты поддерживает твой радиус.Дело в том, что мой радиус считает и часы и трафик, но в нем нет ограничение по трафику. Сейчас появилась такая потребность, чтобы радиус тарифицировал по трафику.
При этом заменять его на другой радиус нельзя.Атрибутов туча, но ни один не относиться к трафику.
>Атрибутов туча, но ни один не относиться к трафику.Ну тогда так, есть Session-Timeout, расчитыаешь время исходя из того,
что юзер на канале 56K может выкачать за секунду столько-то Kb
и выдаешь ему в секундах сколько он проживет если будет качать по максимуму.
Таким образом, он за несколько сессий(прерывистых естественно) выберет свой лимит, кстати в аккаунтинге есть и октеты - пересчитывайте при старте сессии
> Ну тогда так, есть Session-Timeout, расчитыаешь время исходя из того,
> что юзер на канале 56K может выкачать за секунду столько-то
>Kb
> и выдаешь ему в секундах сколько он проживет если будет качать
>по максимуму.
> Таким образом, он за несколько сессий(прерывистых естественно) выберет >свой лимит, кстати
А если он не будет сильно забивать канал (на icq-е к примеру работает), то его отрубит раньше времени?
>в аккаунтинге есть и октеты - пересчитывайте при старте сессии
>
Пожалуйста расскажите по поподробней про октеты и про "пересчитывайте при старте сессии".
>А если он не будет сильно забивать канал (на icq-е к примеру
>работает), то его отрубит раньше времени?Считайте средний траффик пользователя по предыдущим сессиям.
>Пожалуйста расскажите по поподробней про октеты и про "пересчитывайте при
Radius accounting имеет атрибуты AcctInputOctets и AcctOutputOctets
(переданные и посланные байты по завершении сессии). В правильно настроенном accounting эти поля присутствуют.Далее-более, нормальные системы могут посылать radius-у т.н. periodic
update пакеты во время сессии через определенный интервал времени, но увы
в них может не быть информации о траффике - даже от CiscoПрограмма авторизации пользователей как правило умеет выполнять некие
скрипты before-authorization - в них и подсчитывайте session-timeout
> Radius accounting имеет атрибуты AcctInputOctets и AcctOutputOctets
> (переданные и посланные байты по завершении сессии). В правильно
> настроенном accounting эти поля присутствуют.
Да, есть такие атрибуты!
> Далее-более, нормальные системы могут посылать radius-у т.н. periodic
> update пакеты во время сессии через определенный интервал времени, но увы
>
> в них может не быть информации о траффике - даже от
>Cisco
>
> Программа авторизации пользователей как правило умеет выполнять некие
>скрипты before-authorization - в них и подсчитывайте session-timeout
То что можно запускать скрипты после начала сессии это я знаю, я не могу понять, как высчитать session-timeout в зависимости сколько OutputBytes он передал !!!
>> Radius accounting имеет атрибуты AcctInputOctets и AcctOutputOctets
>> (переданные и посланные байты по завершении сессии). В правильно
>> настроенном accounting эти поля присутствуют.
>Да, есть такие атрибуты!
>> Далее-более, нормальные системы могут посылать radius-у т.н. periodic
>> update пакеты во время сессии через определенный интервал времени, но увы
>>
>> в них может не быть информации о траффике - даже от
>>Cisco
>>
>> Программа авторизации пользователей как правило умеет выполнять некие
>>скрипты before-authorization - в них и подсчитывайте session-timeout
>То что можно запускать скрипты после начала сессии это я знаю, я
>не могу понять, как высчитать session-timeout в зависимости сколько OutputBytes он
>передал !!!Хмм простейшая формула
session-timeout=(traffic_limit-current_traffic)\speed_in_second
Ну и проверки на то что traffic_limit не меньше current_traffic
>> Ну тогда так, есть Session-Timeout, расчитыаешь время исходя из того,
>> что юзер на канале 56K может выкачать за секунду столько-то
>>Kb
>> и выдаешь ему в секундах сколько он проживет если будет качать
>>по максимуму.
>> Таким образом, он за несколько сессий(прерывистых естественно) выберет >свой лимит, кстати
>А если он не будет сильно забивать канал (на icq-е к примеру
>работает), то его отрубит раньше времени?
>>в аккаунтинге есть и октеты - пересчитывайте при старте сессии
>>
>Пожалуйста расскажите по поподробней про октеты и про "пересчитывайте при старте сессии".
>
Признайся сразу и скажи просто: Ребята напишите за меня скрипт который будет это делать, мой мозг отключен и программить я не люблю а что такое Гугл я незнаю