Назад | Перейти на главную страницу

Сервер FreeRadius: атрибут RadGroupReply для максимального количества подключенных пользователей?

У меня есть сервер FreeRadius, и я хотел бы установить ограничение на количество пользователей, подключенных к определенному NAS. Моя текущая настройка такова, что каждый пользователь, который подключается к определенному NAS, добавляется в группу пользователей Radius, которая присоединена к этому NAS. Затем RadGroupReply выполняет то, что я хочу делать для пользователей конкретного NAS. В настоящее время я могу установить ограничение максимальной скорости загрузки, а также тайм-аут сеанса, но мне интересно, какой атрибут использовать, если бы я ограничивал максимальное количество пользователей, которым разрешено подключаться к определенному NAS.

Спасибо.

Конечно, сначала вам нужно настроить учет RADIUS с базой данных SQL, такой как postgresql или MySQL.

Затем вам нужно реализовать решение для обнаружения устаревших сеансов. Это может быть так же просто, как включение промежуточных обновлений и закрытие сеансов, в которых последнее обновление было раньше. (NOW() - <interim time>) с помощью задания cron. Как рассчитать время в прошлом сильно различается от базы данных к базе данных, поэтому вам нужно будет найти правильный синтаксис для используемой базы данных.

Наконец, вам нужно будет написать политику unlang, которая получает текущее количество сеансов для NAS и сравнивает его с настроенным максимумом. В FreeRADIUS v3.0.x вы можете связать произвольные пары с NAS, добавив их в клиентские разделы.

Пример клиентского раздела:

client test {
    ipaddr = 127.0.0.1
    secret = 'testing123'
    max_users = 10
}

Пример политики:

authorize {
    if ("%{sql:SELECT COUNT(*) FROM radacct WHERE nasipaddress = '%{NAS-IP-Address}' AND acctstoptime != NULL}" > "%{client:max_users}") {
        update reply {
            Reply-Message := 'Sorry, too many users connected, please try again later'
        }
        reject
    }
}