FreeRADIUS. rlm_sql - нет авторизации

Довелось тут разбираться с одной проблемой – у одного из заказчиков заглючила авторизация через rlm_sql на одном из серверов биллинга.

Сначала заказчик попросил сделать ему авторизацию по MAC-адресам. Сделали. Проверили. Отдали на тестирование. Через время заказчик пожаловался – перестала работать авторизация.

Начал разбираться. Сначала убрал авторизацию по MAC-ам. Вроде заработало, но через время опять поломалось. Похоже не в этом дело. Сервер новый, пока пользователей было мало, все работало. Теперь же число пользователей подросло и появилась эта проблема. После рестарта FreeRADIUS некоторое время все работает нормально, потом ломается. Вывод отладочной информации ничем не помог. Все идет по плану, как положено. Запросы к PostgreSQL, ответы. Только вот через некоторое время непонятно почему радиус перестает пускать клиентов.

Типовая настройка под FreeRADIUS 1.1.7, используется где-то на десятке серверов биллинга. Везде работает, а на этом сервере – нет. Правда здесь пока первая инсталляция под FreeBSD 7.2 и платформу amd64. Но дело похоже не в этом.

Методом тыка была найдена причина этой проблемы. Все дело оказалось в параметрах authorize_check_query и authorize_reply_query. Значения этих параметров – sql-запросы к БД и записаны были в несколько строк при помощи символа / (как в shell-скриптах). Примерно вот так:

authorize_check_query = "SELECT id,UserName,Attribute,Value,Op \
        FROM ${authcheck_table} \
        WHERE Username='%{SQL-User-Name}' \
        ORDER BY id"

Стоило запросы записать одной строкой, как ПРОБЛЕМА исчезла. Работает как часики!

Виноватого не искал. Метод тыка измотал.


Комментарии

Оставить комментарий

Ответ на FreeRADIUS. rlm_sql - нет авторизации