У меня для аутентификации клиентов используется FreeRadius.
При аутентификации я использую атрибут Simultaneous-Use:=1, для того, что бы более один клиент не открывал кучу сессий. Если я правильно понял, то freeradius "смотрит" информацию об активных аккаунтах из файла radutmp. К сожалению, иногда не проходят стоп-пакеты и аккаунт "подвисает" - юзер отключился но в radutmp он присутствует и при следующей аутентификации клиента отшивает с диагностикой "Вы уже зарегистрированы".
Клиенты и аккаунтинг у меня ведётся в базе postgresql.
Вопрос: Возможно ли избавиться от radutmp, чтобы учёт активных аккаунтов вёлся в таблице postgresql?
Можно, в конфиге все прозрачно в коментах расписано.
Но смысл?
Если не пришел стоп-пакет, то подвисшая сессия точно так же останется и в базе.
Тут надо либо Alive пакеты от NAS'а обрабатывать, но я не в курсе как с этим делом у freeradius, либо скриптом опрашивать NAS (например посредством snmp) и проверять какие пользователи действительно на нем сидят.
>Можно, в конфиге все прозрачно в коментах расписано.
>Но смысл?
Смысл такой, что NAS и FreeRadius работают на разных машинах, и базу я могу подправить ручками с NAS, а доступа к radutmp с машины NAS я не имею. В результате придётся городить всё, что ты описал (aliv-пакеты, snmp, etc.).
>>Можно, в конфиге все прозрачно в коментах расписано.
>>Но смысл?
>Смысл такой, что NAS и FreeRadius работают на разных машинах, и базу
>я могу подправить ручками с NAS, а доступа к radutmp с
>машины NAS я не имею. В результате придётся городить всё, что
>ты описал (aliv-пакеты, snmp, etc.).Ну если проблема только в том как отключить radutmp и держать активные сессии только в базе, то тут все просто. В секции accounting комментируем все, что относится к radutmp и дописываем sql.
Оно?
accounting {
# radutmp
# sradutmp
sql
}
>accounting {
># radutmp
># sradutmp
> sql
>}А в какой таблице оно это хранит?
>А в какой таблице оно это хранит?radacct
Ссессии с нулевым AcctStopTime и есть активные юзеры.
>У меня для аутентификации клиентов используется FreeRadius.
>При аутентификации я использую атрибут Simultaneous-Use:=1, для того, что бы более один
>клиент не открывал кучу сессий. Если я правильно понял, то freeradius
>"смотрит" информацию об активных аккаунтах из файла radutmp. К сожалению, иногда
>не проходят стоп-пакеты и аккаунт "подвисает" - юзер отключился но в
>radutmp он присутствует и при следующей аутентификации клиента отшивает с диагностикой
>"Вы уже зарегистрированы".
>Клиенты и аккаунтинг у меня ведётся в базе postgresql.
>Вопрос: Возможно ли избавиться от radutmp, чтобы учёт активных аккаунтов вёлся в
>таблице postgresql?
А как ты используешь Simultaneous-Use:=1? Я как ни бился, не могу подтянуть из базы этот параметр.
>А как ты используешь Simultaneous-Use:=1? Я как ни бился, не могу подтянуть
>из базы этот параметр.А никак не использую, нет такой необходимости.
Но видимо стоит посмотреть вот сюдаsession {
radutmp
sql
# nibs
}плюс поковырять checkrad.pl, ну и зачитать внимательно файлец Simultaneous-Use из доки
>А как ты используешь Simultaneous-Use:=1? Я как ни бился, не могу подтянуть из базы этот параметр.
Просто в дефолтовых параметрах у меня стоит одна из пар Simultaneous-Use:=1
FreeRadius 0.9.3 из поставки Alt Linux Master 2.2 Ничего напильником не обрабатывал. Работает.
>У меня для аутентификации клиентов используется FreeRadius.
>При аутентификации я использую атрибут Simultaneous-Use:=1, для того, что бы более один
>клиент не открывал кучу сессий.А как добиться того же эффекта, если аутентификация не использует базу, а берет имя/пароль из etc/passwd?