LINUX.ORG.RU
ФорумAdmin

Freeradius, Unifi и 4Gb

 ,


0

1

Есть сеть из точек Unifi. В качестве RADIUS выступает freeradius и radiusDESK чтоб смотреть красивые графики потребления трафика и прочие логи авторизаций и т.д. И есть очень неприятная штука с этими Unifi. А именно некорретная работа accounting при потреблении пользователем более 4GB. Проблема именно с юнифай, потому что микротик в качестве точки доступа правильно работает с Gigawords. А unifi имеют баг. Причем судя по форуму unifi у них прям камень преткновения он. Уже очень давно не могут исправить. В том числе и на последних прошивка. В итоге графики у меня неправильные. Пока исправят этот баг работать как-то надо, и решил сделать костыль. Сбрасывать соединение, когда потребленный трафик превысит например 3.5GB. После этого клиент пусть подключается по новой. Сессия у него будет новая, и в графиках не будет отрицательных значений по потреблению трафику. Но знаний по радиусу не хватает, а поиском подобное не нашел. И возможно ли вообще сделать такое? После определенного уровня потребленного трафика сбросить клиенту сессию?

★★

Задумка интересная, но есть нюансы: как часто точка доступа присылает аккаунтинг, зачастую только при разрыве сессии; второе - сколько я помню, большинство точек доступа кладут болт на Disconnect-Request от radius сервера.

Bloody ★★
()
Ответ на: комментарий от Bloody

второе - сколько я помню, большинство точек доступа кладут >>болт на Disconnect-Request от radius сервера.

Наверное, это все-таки зависит от конкретных реализаций как raduis-серверов, так и прошивок устройств доступа, а не потому что они «тупо кладут болт». И скорее всего, этот вопрос не так сложно решить.

ChAnton ★★
()
Последнее исправление: ChAnton (всего исправлений: 1)
Ответ на: комментарий от Bloody

Кроме как через radclient disconnect можно принудительно сбросить клиента? Хотя бы по таймауту? Например через полчаса. За полчаса не думаю что успеют выкачать 4GB. Но при этом сессия будет новая и статистика не будет кривая.

as_lan ★★
() автор топика
Ответ на: комментарий от as_lan

Насколько я помню, по аккунтингу не программируется отключение. Можно писать в БД, обсчитывать агрегат, отправлять дисконнект. Но для начала я бы отправил ручками дисконнект и посмотрел на реакцию точки. Весь гугл завален вопросами: отправляю запрос, {vendor name} игнорирует.

Bloody ★★
()
Ответ на: комментарий от Bloody

У Unifi вообще нет возможности как я понял. Поэтому и интересовался можно ли просто таймаут соединения ставить. Чтоб каждые полчаса словно клиент по новой подлючался.

as_lan ★★
() автор топика
Ответ на: комментарий от as_lan

Если сброс соединения это допустимое решение и если есть snmp, то наверняка можно сделать велосипед, который смотрит счетчики байт на коннектах и сбрасывает соединение.

В худшем случае написать модуль (на базе attr_rewrite) для обработки аккаунтинга чтобы отдавать нормальные значения с учетом переполнения.

vel ★★★★★
()
Ответ на: комментарий от as_lan

Ну вопрос в том как сделать этот вопрос.

на точке есть поддержка snmp?

MIB-ы к точкам есть?

freeradius поддерживает perl/python, так что писать свою логику значительно проще чем на C.

https://wiki.freeradius.org/modules/Rlm_perl

vel ★★★★★
()
Ответ на: комментарий от vel

SNMPSET вроде как нет. По крайней мере я не нашел информации. Вроде как из cli можно сбрасывать по мак. Но это получается уже большой велосипед.

as_lan ★★
() автор топика
Последнее исправление: as_lan (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.