Jump to content

Ubilling_Freeradius+mikrotik


Recommended Posts

Подскажите кто знает, я так понял, что модули хранятся в /usr/lib/stg

Потом мне надо в старгейзер.конф в секции модуль прописать модуль radius. И после этого будут отдаваться команды из биллинга на radius клиенты?

Link to post
Share on other sites

Чтобы было понятно, Радиус нужен для передачи информации для НАС не только МАС IP и скорость, а еще и BURST. При чем не хочется каждый раз после обновления редактироваться конфигурационные файлы управления НАС.

Link to post
Share on other sites

Подскажите кто знает, я так понял, что модули хранятся в /usr/lib/stg

Потом мне надо в старгейзер.конф в секции модуль прописать модуль radius. И после этого будут отдаваться команды из биллинга на radius клиенты?

Если коротко — нет.
Link to post
Share on other sites

1. stg не отдает команд. Концепция RADIUS состоит в предоставлении AAA, а не в управлении клиентским оборудованием.

2. Модуль mod_radius в stg не работает сам по себе - он работает в связке с rlm_stg для freeradius. Начиная с версии 2.408 он сломан (спасибо автору FreeRADIUS Алану ДеКоку).

3. Есть его рабочая замена в ветке stg-2.409-radius. Но она существенно отличается от старого mod_radius и rlm_stg.

Link to post
Share on other sites

 

 

stg не отдает команд. Концепция RADIUS состоит в предоставлении AAA, а не в управлении клиентским оборудованием.

Клиент авторизовался, потом ему сменили настройки (тариф например) или МАС, а открытая сессия не завершается. Разве не должно дропать сессию и пересоздать новую с актуальными параметрами? 

Link to post
Share on other sites

 

stg не отдает команд. Концепция RADIUS состоит в предоставлении AAA, а не в управлении клиентским оборудованием.

Клиент авторизовался, потом ему сменили настройки (тариф например) или МАС, а открытая сессия не завершается. Разве не должно дропать сессию и пересоздать новую с актуальными параметрами? 

 

Радиус только аутентифицирует, авторизует и проводит аккаунтинг. Он не дропает сессии. Он вообще пассивное звено - только отвечает на запросы радиус-клиентов.

Если радиус-клиент шлет регулярные interim-update запросы на радиус-сервер - можно попытаться дропнуть сессию ответом на interim-update. Но нет никакой гарантии что радиус-клиент в этом случае будет делать реконнет. interim-update служит для передачи статистической информации и вполне может игнорироваться.

Link to post
Share on other sites

Получается: абонент прошел авторизацию, потом у него кончились деньги, но он будет работать. Правильно?

Добро пожаловать в мир радиуса. Посмотрите "небыло разрыва" на ютубе, можт поймете, откуда эта тема, с таймаутами сессий.
Link to post
Share on other sites

Получается: абонент прошел авторизацию, потом у него кончились деньги, но он будет работать. Правильно?

Именно. Если, конечно, хак с interim-update не прокатил.

Link to post
Share on other sites

 

 

Добро пожаловать в мир радиуса. Посмотрите "небыло разрыва" на ютубе, можт поймете, откуда эта тема, с таймаутами сессий.

 

Таким образом не хотелось бы делать. Потому и решил узнать есть ли какой-то механизм реализации без тамаута сессий. Видимо, самый оптимальный вариант использоваться встроенный механизм управления Микротами. Просто есть некие неудобства, связанные со статическими записями, а также ограничениями в количестве передаваемых "атрибутов" 

Link to post
Share on other sites

 

 

можно попытаться дропнуть сессию ответом на interim-update.

 

А можно коротко, как можно попытаться это сделать? Я так понимаю, что не просто установкой интервала на Микроте в профайле Хотспот 

Link to post
Share on other sites

 

можно попытаться дропнуть сессию ответом на interim-update.

 

А можно коротко, как можно попытаться это сделать? Я так понимаю, что не просто установкой интервала на Микроте в профайле Хотспот 

 

Вдумчивым программированием.

Link to post
Share on other sites

С этим пока понятно, а как быть с пустой строкой сервис? У кого-то было что-то похожее?

 

При чем, на некоторых уже существующий сетях меняю на "use radius" yes и сервис написано название услуги, а на некоторых - пусто. В чем дело может быть? И не тех сетях, где строка пустая, в таблицу БД заносить данные о атрибутах, но на самом НАСе выдает ошибку, такие чувства, что макрос не считывает

Edited by Golthana
Link to post
Share on other sites

Проблема с сервисом решена. Обязательное требования для работы Freeradius чтобы ID сети соответствовало ID названия услуги, иначе макросы не работают.

Link to post
Share on other sites

Теперь просто маросы не работают. В частности {nethosts[mac]}. А если в строку значение вставляю мас пользователя, то авторизация проходит

 

Извиняюсь, макрос работает, проблема в том, что на Микроте МАС в верхнем регистре, а в Ubilling - в нижнем, потом авторизация не проходит. Это можно как-то исправить?

 

Как можно во freeradius перевести передаваемый Cleartext-Password в верхний регистр?

Edited by Golthana
Link to post
Share on other sites

Скорее всего, вопрос разработчикам. Где описаны макросы? Нужно, например, в запрос к БД касательно МАСа добавить параметр ucase, чтобы МАС выдавался в верхнем регистре.

Link to post
Share on other sites

С макросами тоже разобрался. А при смене тех параметров, при которых вызывается ресет. Все они вызывают один модуль reset?

Коротко говоря нужно вместе с ресетом выполнить еще один скрипт, который будет сбрасывать сессию на NAS для применения актуальных параметров.

Edited by Golthana
Link to post
Share on other sites

Вообщем удалось сделать так: на удаленный NAS передаются атрибуты: для авторизации {nethost[mac]}, потом Mikrotik-Address-List передаю состояние пользователя {user[state]} (далее в зависимости от названия листа, перенаправляю на нужную страницу(у кого нет денег - страница о уведомлении о состоянии счета, кто заморожен - уведомление о том, что, вероятнее всего, абонент приостановил услуги и так далее), потом передаю Mikrotik-Rate-Limit, здесь я добавил макрос {speed[burst]}, которых в одной строке передает: "скорость отдачи/скорость приема+бурст лимт(скорость приема+128)+бурст трешолд(скорость приема-128)+бурст тайм 30 сек". 

 

Все это работает нормально, теперь надо, чтобы во всех тех случаях, когда при смене параметров выполняется сброс пользователя, еще и (в случае включенного radius в alter.ini) выполнялся еще один скрипт, который в текстовый файл вносит нужные параметры. Вот пример файла

User-Name=MAC of users
NAS-IP-Address=IP of NAS
Framed-IP-Address=User's ip address
 
И далее должна выполнится команда cat /part-to-txtfile |  radclient -r 1 ip_of_nas:pod_port(default 1700) 'disconnect' 'secret for nas'
 
Сам скрипт я напишу, мне нужна помощь, в частности подсказать куда вписывать или нужно вписывать в каждый модуль, где предусмотрен reset user?
Обратил внимание на $billing->resetuser($login). Где он описан?
 
Кроме того, все те строки, которые я впишу в модули, удалятся вместе в обновлением. Уважаемые разработчики, можно ли данный механизм включить в официальный релиз, с учетом того, что скрипт, который я попытаюсь сделать будет выполнятся только если включен radius в alter.ini, то есть, кому не надо, тому мешать не будет, а кто все же будет использовать radius авторизацию на Mikrotik, тому, может, и пригодится. Заранее спасибо за ответ. 
 
P.S. Все скрипты и изменения я готов предоставить для проверки со стороны разработчиков
Edited by Golthana
Link to post
Share on other sites

.../billing/api/api.stargazer там есть функция resetuser. Я так понимаю, это то место, где мне надо дописать. Вопрос остался только с обновлением, а точнее включением всего этого в релиз

Link to post
Share on other sites

Все готово и работает. Если, все же, есть вероятность внесение в оф. релиз, то дайте знать. Я напишу какие изменения я внес. Всем спасибо за помощь.

Также, если тема будет кому-то актуальна, тоже дайте знать. А то писать много, если никому не надо... ну сами понимаете.

Link to post
Share on other sites

Вопрос с обновлениями снят, так как все изменения перенес в скрипты OnConnect OnDisconnect. Если я правильно понял, то они не попадают под автообновления.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...