Биллинговая система Nodeny

Главная категория => Модули NodenyPlus => Тема начата: fet4 от 18 Марта 2016, 12:13:42



Название: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 18 Марта 2016, 12:13:42
Здравствуйте!
Расскажите что умеет, как использовать.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 18 Марта 2016, 12:29:30
Модуль умеет то, что умеет этот протокол)

Изначально протокол radius работал в одном направлении: устройство делает запрос на радиус-сервер и в ответ получает какие-то атрибуты текущего подключения, например скорость. Если же мы захотим послать на устройство какую-то команду, то у нас ничего не получится - нам нужно ждать пока само устройство не запросит что-либо у радиуса. Представьте, что у нас на устройстве (на NAS-е) запущен dhcp-сервер - пока не выйдет время аренды ip, NAS ничего не пошлет на радиус. Получается что мы не сможем ни заблочить абона, ни изменить его скорость несколько минут. Поэтому приходится отдельными средствами (скриптом noserver) управлять либо фаерволом либо по api заходить на микротик и там крутить правила, либо по ssh или telnet заходить на свич и там что-то крутить.

Осознав гемор, мировая общественность придумала расширение COA для радиуса, которое позволяет в любой момент времени послать команду от радиуса в сторону устройства. Тут есть ложка дегтя - не все устройства поддерживают это расширение, в частности Микротик не поддерживает, а в нем очень бы хотелось поиметь эту фичу ибо он хреново переваривает API-запросы.

Но нормальные устройства, циски там всякие и им подобные, поддерживают COA. Вот для них модуль дает хороший профит - не нужно городить костыли с заходом по ssh или telnet. Достаточно запустить модуль COA и он будет давать команды: сделай то, сделай это. Для примера конфиг COA одной сети:

Код:
$coa_connect__state_on = {
    type     => 'coa',
    template => 'Acct-Session-Id={{auth_ses}}, ERX-Service-Activate:1="pppoe_local({{speed_in1_mb}}m,{{speed_out1_mb}}m)"',
};

$coa_connect__state_off = {
    type     => 'coa',
    template => 'Acct-Session-Id={{auth_ses}}, ERX-Service-Activate:1="svc-guest-pppoe"',
};



$coa_disconnect = [
    {
        type     => 'coa',
        template => 'Acct-Session-Id={{auth_ses}}, ERX-Service-Deactivate="pppoe_local"',
    },
    {
        type     => 'coa',
        template => 'Acct-Session-Id={{auth_ses}}, ERX-Service-Deactivate="svc-guest"',
    }
];

Если клиент подключается и у него включен доступ, посылаются команды в coa_connect__state_on. Если у него вдруг доступ блокируется - посылается команда coa_connect__state_off. Если клиент вообще отконнекчивается - запускается coa_disconnect


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 18 Марта 2016, 12:37:22
Здравствуйте!
Расскажите что умеет, как использовать.
я еще на тесте сервак запустил Debian+accel-ppp(IPOE) и все чётенко через CoA кручу верчу шейпер/доступ


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 18 Марта 2016, 17:58:36
Здравствуйте!
Расскажите что умеет, как использовать.
я еще на тесте сервак запустил Debian+accel-ppp(IPOE) и все чётенко через CoA кручу верчу шейпер/доступ
А как доступ через CoA работает?
А можно ваши конфиги accel и модуля.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 18 Марта 2016, 18:12:35
Здравствуйте!
Расскажите что умеет, как использовать.
я еще на тесте сервак запустил Debian+accel-ppp(IPOE) и все чётенко через CoA кручу верчу шейпер/доступ
А как доступ через CoA работает?
А можно ваши конфиги accel и модуля.
пока что не очень доработано и не проверялось на пользователях, только на пару человек пробовал, потому что сеть местами не управляемая, а гте то ОНУшки
ну модуль нодени запускаеться и отсылает атрибуты из конфига к примеру для запрета доступа клиенту
Цитировать
$coa_connect__state_off = {
    type     => 'coa',
     template => 'Acct-Session-Id={{auth_ses}}, L4-Redirect="1"',
    },
на сервере с ацеелем принимаю и делаю уже что нужно, будь-то сменить ему ИП на гостевой, или же в табличку для редиректа на заглушку.
Повторюсь ето у меня на тесте, допиливаем под свои нужды, толком не проверено, времени нету((


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Warlock от 18 Марта 2016, 21:32:59
Блин, в первый раз от Стаса вижу такой развернутый ответ :-)


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 19 Марта 2016, 10:59:34
Значит это ему интересно  :)
А вообще нужный модуль, я бы сказал изначально необходимый, открывает много возможностей, жаль что поздно так появился.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: elite от 26 Апреля 2016, 16:47:44
Если бы еще саму процедуру radius-авторизации сделали на rlm_perl, чтобы сразу выставляло нужные параметры, то цены бы не было


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 27 Апреля 2016, 20:41:40
Если бы еще саму процедуру radius-авторизации сделали на rlm_perl, чтобы сразу выставляло нужные параметры, то цены бы не было
+
было бы отличненько


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Sis от 29 Апреля 2016, 01:22:07
угу и я надумал Radius использовать.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 29 Апреля 2016, 08:15:23
угу и я надумал Radius использовать.
ну радиус всеравно работает только через sql без rlm_perl


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 03 Сентября 2016, 13:43:21
Если кто использует модуль CoA, поделитесь как дропаете или добавляете в список заблокированных, тех у кого замораживаеться услуга! ;)


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Warlock от 04 Сентября 2016, 07:33:25
Если кто использует модуль CoA, поделитесь как дропаете или добавляете в список заблокированных, тех у кого замораживаеться услуга! ;)
На каком оборудовании?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 04 Сентября 2016, 16:20:08
Если кто использует модуль CoA, поделитесь как дропаете или добавляете в список заблокированных, тех у кого замораживаеться услуга! ;)
На каком оборудовании?
NAS с accel-ipoe.
Проблема в том что просто когда услуга замораживаеться то модуль не выбирает из таблицы Acct-Session-Id={{auth_ses}}.
И естественно не отправляеться L4-redirect.
Когда авторизируеться все верно срабатывает.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 06 Сентября 2016, 15:47:23
UP
помогите пожалуйста у кого работает
я настраивал все на стенде, но вместо модуля CoA просто отправлял запросы с консоли.
Начал внедрение и пробую сделать через модуль CoA
Модуль при отключении абоненту доступа в биллинге делает следующее:
Цитировать
SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' GROUP BY uid
Строк: 1309. Время выполнения sql: 0.0008 сек

 SELECT u.id, u.balance, u.name, u.state, a.auth_start, a.ip, a.properties FROM ( SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE TRUE  AND u.state='on' AND (i.tags LIKE '%,dulovo,%')
Строк: 0. Время выполнения sql: 0.0642 сек

SELECT SQL_BUFFER_RESULT uid, SUM(in1+in2+in3+in4) AS traf_in, SUM(out1+out2+out3+out4) AS traf_out FROM users_trf GROUP BY uid
Строк: 1739. Время выполнения sql: 0.0012 сек

Fw Off uid: 329, ip: 100.64.60.4,100.64.60.4

ip: 100.64.60.4 , auth properies:

  sending:  = 'Acct-Session-Id=, L4-Redirect="2"'
  to:       = '/usr/local/bin/radclient -x 172.22.2.251:3799 coa pass'

radclient:: Expected end of line or comma
radclient: Nothing to send.

ip: 100.64.60.4 , auth properies:

  sending:  = 'Acct-Session-Id=, L4-Redirect="2"'
  to:       = '/usr/local/bin/radclient -x 172.22.2.251:3799 coa pass'

radclient:: Expected end of line or comma
radclient: Nothing to send.
При разрешение доступа все отличненько:
Цитировать
SELECT uid FROM v_services WHERE tags LIKE '%,inet,%' GROUP BY uid
Строк: 1309. Время выполнения sql: 0.0008 сек

 SELECT u.id, u.balance, u.name, u.state, a.auth_start, a.ip, a.properties FROM ( SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE TRUE  AND u.state='on' AND (i.tags LIKE '%,dulovo,%')
Строк: 2. Время выполнения sql: 0.0599 сек

Fw On uid: 329, ip: 100.64.60.4,100.64.60.4, вх.скор: 0 КБит/с

ip: 100.64.60.4 , auth properies: mod=dhcp;user=c8600093a224;nas=172.22.2.251;ses=b679f57e1706017b;

  sending:  = 'Acct-Session-Id=b679f57e1706017b, L4-Redirect="0"'
  to:       = '/usr/local/bin/radclient -x 172.22.2.251:3799 coa pass'

Sending CoA-Request of id 106 to 172.22.2.251 port 3799
        Acct-Session-Id = "b679f57e1706017b"
        L4-Redirect = 0

rad_recv: CoA-ACK packet from host 172.22.2.251 port 3799, id=106, length=20
ip: 100.64.60.4 , auth properies: mod=dhcp;user=c8600093a224;nas=172.22.2.251;ses=b679f57e1706017b;

  sending:  = 'Acct-Session-Id=b679f57e1706017b, L4-Redirect="0"'
  to:       = '/usr/local/bin/radclient -x 172.22.2.251:3799 coa pass'

Sending CoA-Request of id 87 to 172.22.2.251 port 3799
        Acct-Session-Id = "b679f57e1706017b"
        L4-Redirect = 0
rad_recv: CoA-ACK packet from host 172.22.2.251 port 3799, id=87, length=20
Посмотрев в коде и попробовал закоментить в noserver.pl строчку где то 67-я по порядку
Цитировать
#$sql_get_auth_usr .= " AND u.state='on'" if !$Allow_off_state;

И в биллинге Заблокирован = Да то модуль отправляет атрибуты.
А вот при замороженной услуге в учетке пользователя Заблокирован=НЕТ и модуль ничего не делает.
Где же я ошибся не пойму(
Сам конфиг модуля CoA:
Цитировать
$coa_connect__state_on = {
    type     => 'coa',
    template => 'Acct-Session-Id={{auth_ses}}, L4-Redirect="0"',
};
$coa_connect__state_off = {
    type     => 'coa',
    template => 'Acct-Session-Id={{auth_ses}}, L4-Redirect="1"',
};
$coa_disconnect =
    {
        type     => 'coa',
        template => 'Acct-Session-Id={{auth_ses}}, L4-Redirect="2"',
    };


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: sever от 28 Октября 2016, 17:13:43
UP
помогите пожалуйста у кого работает


Замени в coa.cfg.pm
template => 'Acct-Session-Id={{auth_ses}}
на
template => 'User-Name={{name}}

В моём случае username = ifname и для меня годится параметр
template => 'NAS-Port-Id={{name}}

а "Acct-Session-Id "
в базе просто не находится это параметр  auth_ses
вот к пример user ON
Код:
mysql> SELECT u.id, u.balance, u.name, u.state, a.auth_start, a.ip, a.properties FROM ( SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE TRUE  AND u.state='on';
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
| id | balance | name          | state | auth_start | ip         | properties                                |
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
|  1 |  -32.60 | eth0.3001.202 | on    | 1477660948 | 172.22.0.2 | mod=pppoe;user=0025b35c0899;nas=127.0.0.1 |
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
1 row in set (0.00 sec)

Вот user OFF
Код:
mysql> SELECT u.id, u.balance, u.name, u.state, a.auth_start, a.ip, a.properties FROM ( SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE TRUE  AND u.state='off';
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
| id | balance | name          | state | auth_start | ip         | properties                                |
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
|  1 |  -32.60 | eth0.3001.202 | off   | 1477660948 | 172.22.0.2 | mod=pppoe;user=0025b35c0899;nas=127.0.0.1 |
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
1 row in set (0.00 sec)

Параметра auth_ses  вообще нет, возможно это тольок с IPOE.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 28 Октября 2016, 20:22:19
UP
помогите пожалуйста у кого работает


Замени в coa.cfg.pm
template => 'Acct-Session-Id={{auth_ses}}
на
template => 'User-Name={{name}}

В моём случае username = ifname и для меня годится параметр
template => 'NAS-Port-Id={{name}}

а "Acct-Session-Id "
в базе просто не находится это параметр  auth_ses
вот к пример user ON
Код:
mysql> SELECT u.id, u.balance, u.name, u.state, a.auth_start, a.ip, a.properties FROM ( SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE TRUE  AND u.state='on';
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
| id | balance | name          | state | auth_start | ip         | properties                                |
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
|  1 |  -32.60 | eth0.3001.202 | on    | 1477660948 | 172.22.0.2 | mod=pppoe;user=0025b35c0899;nas=127.0.0.1 |
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
1 row in set (0.00 sec)

Вот user OFF
Код:
mysql> SELECT u.id, u.balance, u.name, u.state, a.auth_start, a.ip, a.properties FROM ( SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE TRUE  AND u.state='off';
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
| id | balance | name          | state | auth_start | ip         | properties                                |
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
|  1 |  -32.60 | eth0.3001.202 | off   | 1477660948 | 172.22.0.2 | mod=pppoe;user=0025b35c0899;nas=127.0.0.1 |
+----+---------+---------------+-------+------------+------------+-------------------------------------------+
1 row in set (0.00 sec)

Параметра auth_ses  вообще нет, возможно это тольок с IPOE.
Я для себя тогда решил что буду создавать интерфейсы radius атрибутом при аторизации. ipoeX где X id учетки абонента(по имени интерйфейса прибиваю или изменяю параметры "сессии").
А весть процес авторизации написал на rlm_perl, так передаю абоненту любые параметры сразу при авторизации как и в PPP  (кривоватенько но работает уже скоро два месяца в боевом режиме).
А Acct-Session-Id должен быть и при PPP, и я его тоже пишу в базу из rlm_perl.

За ответ спасибо, хотя и довольно позно)




Название: Re: Модуль RADIUS Change of Authorization
Отправлено: sever от 31 Октября 2016, 15:03:41
Из моих тестов модуль до конца ещё не допилян.
Если у кого-то другие результаты - поделитесь.

1. Берём состояние COA модуль не запущен, состояние клиента меняем с ON на OFF, запускаем COA модуль
    Клиент так и не заблокируется. Хотя должен.
2. Берём состояние COA модуль не запущен, состояние клиента меняем с OFF на ON, запускаем COA модуль
    Клиент разблокируется нормально.

При выключении абонента срабатывает параметр $coa_disconnect, а не $coa_connect__state_off
Параметры $coa_connect__state_off  не передаются вообще, пока временно блокирую дисконнектом.

Я предполагаю что п.1 и п.2 реигируют именно так, потому что, выборка из кода ниже идёт по параметру u.state='on'.

Код:
 SELECT u.id, u.balance, u.name, u.state, a.auth_start, a.ip, a.properties FROM ( SELECT INET_NTOA(i.ip) AS ip, '' as properties, UNIX_TIMESTAMP() AS auth_start FROM users u JOIN ip_pool i ON i.uid=u.id WHERE u.lstate=1 UNION ALL SELECT ip, properties, start AS auth_start FROM auth_now ) a JOIN ip_pool i ON INET_ATON(a.ip)=i.ip JOIN users u ON i.uid=u.id WHERE TRUE  AND u.state='on'


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 31 Октября 2016, 15:52:31
В документации четко прописано:

Цитировать
В $coa_connect__state_off атрибуты, которые посылаются когда авторизуется абонент, которому запрещен доступ в интернет
В $coa_disconnect атрибуты, которые посылаются когда абонент отключается (перестает быть авторизованным)

Абонент АВТОРИЗОВАН, ДОСТУП ВЫКЛЮЧЕН - $coa_connect__state_off
Абонент НЕ авторизован, ДОСТУП похую - $coa_disconnect


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: sever от 31 Октября 2016, 18:57:48
В документации четко прописано:

Цитировать
В $coa_connect__state_off атрибуты, которые посылаются когда авторизуется абонент, которому запрещен доступ в интернет
В $coa_disconnect атрибуты, которые посылаются когда абонент отключается (перестает быть авторизованным)

Абонент АВТОРИЗОВАН, ДОСТУП ВЫКЛЮЧЕН - $coa_connect__state_off
Абонент НЕ авторизован, ДОСТУП похую - $coa_disconnect

Описано да, но по факту параметры функции $coa_connect__state_off  не передаются.
Вместо него передаётся $coa_disconnect,
Допустим на пальцах:

$coa_connect__state_on = {L4-Redirect=0};
$coa_connect__state_off = {L4-Redirect=1};
$coa_disconnect = {L4-Redirect=2};

Если Абонент авторизован и доступ изменить на запрещён, должна сработать $coa_connect__state_off
Так вот вместо этого срабатывает $coa_disconnect и передаётся L4-Redirect=2

Доступ могу дать. Увидишь вживую.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 31 Октября 2016, 23:01:12
Ты выполнял sql, что дал Pa4ka?

Например, в поле properties записано: mod=pppoe;user=0025b35c0899;nas=127.0.0.1

В шаблоне, ты можешь обратиться к этим данным так:
{{auth_mod}}
{{auth_user}}
{{auth_nas}}

Если ты хочешь в coa пакет передать какие-либо другие данные, связанные с авторизацией, тебе нужно это инфу записать в поле properties таблицы auth_now. Это надо изменять mysql-процедуры и/или радиус настройки. Например, процедуру radupdate и/или accounting_update_query и postauth_query в радиусе


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: sever от 01 Ноября 2016, 11:36:41
Это надо изменять mysql-процедуры и/или радиус настройки. Например, процедуру radupdate и/или accounting_update_query и postauth_query в радиусе

Хорошо на данный момент в sql.conf (добавлен параметр {Acct-Session-Id})

Код:
postauth_query = "call radupdate('%{User-Name}','%{reply:Framed-IP-Address}',\
            'user=%{Calling-Station-Id};nas=%{NAS-IP-Address};ses=%{Acct-Session-Id}')"
accounting_update_query = "call radupdate('%{User-Name}','%{Framed-IP-Address}',\
            'user=%{Calling-Station-Id};nas=%{NAS-IP-Address};ses=%{Acct-Session-Id}')"

В Mysql параметры сессии в properties мы видим, добавился ses
Код:
mysql> mysql>  select * from auth_now;
+-------+------------+------------+------------+----------------------------------------------------------------+
| id    | ip         | start      | last       | properties                                                     |
+-------+------------+------------+------------+----------------------------------------------------------------+
| 13179 | 172.22.0.2 | 1477992246 | 1477992766 | mod=pppoe;user=0025b35c0899;nas=127.0.0.1;ses=b8585c1ab2ed0d3b |
+-------+------------+------------+------------+----------------------------------------------------------------+
1 row in set (0.00 sec)

1. Переключаю авторизированного клиента из status OFF => ON (отрабатывает на 100% все ок..)
Код:
ip: 172.22.0.2 , auth properies: mod=pppoe;user=0025b35c0899;nas=127.0.0.1;ses=b8585c1ab2ed0d3b

  sending:  = 'Acct-Session-Id=b8585c1ab2ed0d3b, PPPD-Upstream-Speed-Limit=21504, PPPD-Downstream-Speed-Limit=21504,L4-Redirect=0'
  to:       = '/usr/bin/radclient -x 127.0.0.1:3799 coa hardpass5'

Sending CoA-Request of id 171 to 127.0.0.1 port 3799
Acct-Session-Id = "b8585c1ab2ed0d3b"
PPPD-Upstream-Speed-Limit = 21504
PPPD-Downstream-Speed-Limit = 21504
L4-Redirect = 0
rad_recv: CoA-NAK packet from host 127.0.0.1 port 3799, id=171, length=20

2. Переключаю  авторизированного клиента из status ON => status OFF (передать должно L4-Redirect=1)
Код:
Fw Off uid: 1, ip: 172.22.0.2

ip: 172.22.0.2 , auth properies:

  sending:  = 'Acct-Session-Id=, PPPD-Upstream-Speed-Limit=2048, PPPD-Downstream-Speed-Limit=2048, L4-Redirect=2'
  to:       = '/usr/bin/radclient -x 127.0.0.1:3799 coa hardpass5'

radclient:: Expected end of line or comma
radclient: Nothing to send.


Вместо OFF - срабатывает disconnect, данные auth properies: не показывает.

Вот сам coa cfg

Код:
$coa_connect__state_on = {
    type     => 'coa',
    template => 'Acct-Session-Id={{auth_ses}}, PPPD-Upstream-Speed-Limit={{speed_in1_kb}}, PPPD-Downstream-Speed-Limit={{speed_out1_kb}},L4-Redirect=0',
};

$coa_connect__state_off = {
    type     => 'coa',
    template => 'Acct-Session-Id={{auth_ses}}, PPPD-Upstream-Speed-Limit={{speed_in1_kb}}, PPPD-Downstream-Speed-Limit={{speed_out1_kb}},L4-Redirect=1',
};

$coa_disconnect = {
    type     => 'coa',
    template => 'Acct-Session-Id={{auth_ses}}, PPPD-Upstream-Speed-Limit=2048, PPPD-Downstream-Speed-Limit=2048, L4-Redirect=2',
};



Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 01 Ноября 2016, 13:46:14
Я кажется понял в чем бок. У  noserver.pl есть дополнительные ключи, в частности:

Цитировать
    -a      : reconnect a user after his auth params were changed
    -i      : allow access if a user is blocked
Первый нужен чтобы noserver "передергивал" фаервол (ну или то, чем управляет) когда изменились параметры авторизации. Второй нужен чтоб управление работало и при состоянии когда юзер выключен. По идее оба флага нужно установить. Уточни у Pa4ka 


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Warlock от 01 Ноября 2016, 13:51:24
я запускаю так:
Код:
/usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.cfg.pm -d &


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: sever от 01 Ноября 2016, 13:57:58
О так это совем другое дело.
С ключами работает!!!
Спасибо.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 01 Ноября 2016, 16:01:15
Я до сегодня из самого noserver.pl делал что бы выдирались все пользователи изменял где было state='on'.)
Проблема была только если услуга замораживалась, сессию убивал coa_disconnect.
С ключами тоже норма)


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: NodenY45 от 02 Ноября 2016, 22:09:07
Я до сегодня из самого noserver.pl делал что бы выдирались все пользователи изменял где было state='on'.)
Проблема была только если услуга замораживалась, сессию убивал coa_disconnect.
С ключами тоже норма)

А с какими радиус процедурами? Выложите вариант как у вас настроено. Спасибо.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: NodenY45 от 06 Ноября 2016, 00:02:33
Хорошо, такой вопрос, если клиенту меняется тарифный план с другой скоростью, как скоро у него сменится скорость? или надо руками доступ отключать-включать?
тоесть согласно этому ключу скорость применится сразу?
Код:
-a      : reconnect a user after his auth params were changed
получается сервис деактивируется и снова активируется с новой скоростью?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Warlock от 06 Ноября 2016, 08:37:37
Деактивируется и активируется с новой скоростью в течении очень короткого промежутка времени.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: dimonous от 14 Ноября 2016, 10:54:23
Добрый день, коллеги.

Просьба помочь советом.

Использую модуль таким образом:
Код:
$coa_disconnect = {
        type     => 'disconnect',
        template => 'Framed-IP-Address={{ip}}',
    };

С той стороны - Accel-ppp. Проблема же в том, что в момент автопродления услуги inet_unlim, длительностью 24 часа, абоненты жалуется что роутер не может получить адрес в течение нескольких минут. Поскольку такое проявляется у единиц (но у самых назойливых, как всегда), то возможно связано с некорректной работой роутера абона с "coa". В момент смены услуги баланс положительный. Поэтому возникла идея пропатчить noserver.pl, чтобы он не посылал при автопродлении команду "fw_user_off" если баланс остается положительным. Чтобы посылался дисконнект на аксель только в тех случая когда абонента действительно нужно отключить.
Насколько верен такой путь и кто как борется иначе с описанной проблемой?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 14 Ноября 2016, 12:08:19
Добрый день, коллеги.

Просьба помочь советом.

Использую модуль таким образом:
Код:
$coa_disconnect = {
        type     => 'disconnect',
        template => 'Framed-IP-Address={{ip}}',
    };

С той стороны - Accel-ppp. Проблема же в том, что в момент автопродления услуги inet_unlim, длительностью 24 часа, абоненты жалуется что роутер не может получить адрес в течение нескольких минут. Поскольку такое проявляется у единиц (но у самых назойливых, как всегда), то возможно связано с некорректной работой роутера абона с "coa". В момент смены услуги баланс положительный. Поэтому возникла идея пропатчить noserver.pl, чтобы он не посылал при автопродлении команду "fw_user_off" если баланс остается положительным. Чтобы посылался дисконнект на аксель только в тех случая когда абонента действительно нужно отключить.
Насколько верен такой путь и кто как борется иначе с описанной проблемой?
Получаеться выдаеться гостевой IP абоненту или как?
Если я вас верно понял то у нас так - гостевые пулы используем только для не зарегистрированных юзеров, всё остальное ipset l4-redirect. Тогда при изменении чего либо у абонента(доступ/скорость) он попадает в ipset list только на мгновение и сразу удаляеться если доступ разрешен.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 14 Ноября 2016, 12:11:18
Я до сегодня из самого noserver.pl делал что бы выдирались все пользователи изменял где было state='on'.)
Проблема была только если услуга замораживалась, сессию убивал coa_disconnect.
С ключами тоже норма)

А с какими радиус процедурами? Выложите вариант как у вас настроено. Спасибо.
Вы имели ввиду mysql процедурами?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: dimonous от 15 Ноября 2016, 10:30:12
Добрый день, коллеги.

Просьба помочь советом.

Использую модуль таким образом:
Код:
$coa_disconnect = {
        type     => 'disconnect',
        template => 'Framed-IP-Address={{ip}}',
    };

С той стороны - Accel-ppp. Проблема же в том, что в момент автопродления услуги inet_unlim, длительностью 24 часа, абоненты жалуется что роутер не может получить адрес в течение нескольких минут. Поскольку такое проявляется у единиц (но у самых назойливых, как всегда), то возможно связано с некорректной работой роутера абона с "coa". В момент смены услуги баланс положительный. Поэтому возникла идея пропатчить noserver.pl, чтобы он не посылал при автопродлении команду "fw_user_off" если баланс остается положительным. Чтобы посылался дисконнект на аксель только в тех случая когда абонента действительно нужно отключить.
Насколько верен такой путь и кто как борется иначе с описанной проблемой?
Получаеться выдаеться гостевой IP абоненту или как?
Если я вас верно понял то у нас так - гостевые пулы используем только для не зарегистрированных юзеров, всё остальное ipset l4-redirect. Тогда при изменении чего либо у абонента(доступ/скорость) он попадает в ipset list только на мгновение и сразу удаляеться если доступ разрешен.

Нет. Гостевой выдается только когда обращается за адресом а там явно услуга "inet" не подключена/нет денег/отключен.

Проблема в том что услуга  выдается на 24 часа (тарифы с посуточным снятием) и по истечению времени   на accel  приходит пакет coa  и  рвет сессию.
В этот момент у  клиента обрывается сессия и  по истечению лизы (10минут)  клиент сам переполучает адрес.
Так вот, можно ли что бы пакет coa  приходил только тогда когда услуга заморожена или клиент заблокирован  ну или баланс стал отрицателен ?
L4 редирект не используем.
Проблема не в гостевом адресе, а в том что по истечению срока действия услуги рвется сессия даже если баланс положительный.

Я так понимаю, в noserver.pl :

sub proc_fw
...
        if( $old_fingerprint )
        {
            $new_fingerprint eq $old_fingerprint && next;
            debug("Данные uid $uid изменились - переподключаем");
            $M->fw_usr_off($uid);
        }



Название: Re: Модуль RADIUS Change of Authorization
Отправлено: sever от 25 Ноября 2016, 18:09:54
А если несколько НАС-ов
В конфигах как-то можно это указать в coa.cfg.pm??
$host = 'x.x.x.1:3799';
                    2
             
Или нужно только запускать несколько модулей СОА, каждый из которых будет обрабатывать свой собственный НАС?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: sever от 25 Ноября 2016, 18:47:38
А если несколько НАС-ов
В конфигах как-то можно это указать в coa.cfg.pm??
Код:
$host = 'x.x.x.1:3799';
$host = 'x.x.x.2:3799';
             
Или нужно только запускать несколько модулей СОА, каждый из которых будет обрабатывать свой собственный НАС?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 25 Ноября 2016, 23:59:57
не вникая в суть, сразу говорю в таком коде:
Код:
переменная = значение;
переменная = значение;
принимается только последний вариант всегда


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: sever от 28 Ноября 2016, 09:15:51
Это пример был.
Понятно что можно заморочиться с циклом ещё или в массив упаковать хосты.
Но если есть встроенный функционал... в общем возможности такой нет не пиляя код?
Было бы круто указать сразу все насы, если их несколько запустив при этом один экземпляр модуля coa.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 28 Ноября 2016, 11:51:32
Попробуй запустить несколько копий с разными конфигами


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 16 Января 2018, 15:50:18
Хочу в темплейте coa передать в произвольном атрибуте uid пользователя как это сделать?

Код:
$coa_connect__state_on = {
    type     => 'coa',
    template => 'User-Id=uid',
};

UPD. нашел User-Id={{id}}


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 08 Февраля 2018, 22:53:58
Если я хочу по coa передать какой-то меняющийся параметр клиента, который будет записываться внешне в базу т.к. в радиусе его нет. Правильно ли будет создать допустим столбец type в auth_now и добавлять туда значение, а потом в конфиге coa вытягивать например так User-type={{type}}, будет ли так работать?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 08 Февраля 2018, 23:57:14
Лучше самостоятельно не создавать поля в таблицах. Причин много, но я приведу первую попавшуюся. Зачастую в коде идет вставка записей в виде INSERT INTO tbl VALUES (val1, val2, val3). Здесь я точно знаю, что в таблице 3 поля. Если вы сами добавите 4-е, то запрос не будет выполнен. Если я в дальнейшем добавлю поле, то может произойти смещение полей. Короче не надо.

Важный вопрос по поводу "меняющийся параметр клиента" - необходимо мониторить этот параметр и при его изменение запускать coa либо же не надо менять логику и просто слать его дополнительным параметром? Если надо первый случай - необходимо править noserver.

Что это за параметр type? Он от радиуса приходит? Т.е это параметр авторизации? Его можно загнать в поле properties - оно для этого и создано, а потом я могу сделать правила в модуле coa для парсинга этого поля.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 09 Февраля 2018, 21:08:01
Цитировать
Лучше самостоятельно не создавать поля в таблицах. Причин много, но я приведу первую попавшуюся. Зачастую в коде идет вставка записей в виде INSERT INTO tbl VALUES (val1, val2, val3). Здесь я точно знаю, что в таблице 3 поля. Если вы сами добавите 4-е, то запрос не будет выполнен. Если я в дальнейшем добавлю поле, то может произойти смещение полей. Короче не надо.
Хорошо не буду.

Цитировать
Важный вопрос по поводу "меняющийся параметр клиента" - необходимо мониторить этот параметр и при его изменение запускать coa либо же не надо менять логику и просто слать его дополнительным параметром?
Да нужен первый вариант, если параметр поменялся отправить coa.

Цитировать
Что это за параметр type? Он от радиуса приходит? Т.е это параметр авторизации? Его можно загнать в поле properties - оно для этого и создано, а потом я могу сделать правила в модуле coa для парсинга этого поля.
type это просто для примера, это даже не параметр авторизации, а просто информация в каком адрес листе находится  src клиента на бордере, согласно этих листов выполняется маршрутизация по нескольким аплинкам. Мне просто нужна эта инфа на брасе для построения шейперов. Вот и думаю как ее передать?

coa высылается по изменению поля properties ? Если да, каким образом я могу добавить свой параметр в конец это поля в sql запросе?

Вообще было бы удобно если модуль мог мониторить указанный мной параметр.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 10 Февраля 2018, 09:41:30
Если это не параметр авторизации, то он должен храниться в data0 (дополнительных полях абонентов). В модуле noserver2 уже эта фича используется - там можно указать имя допполя, в котором будет указываться скорость. Правда там жостко принято, что это скорость, поэтому нужно слегка переделать. При этом не обязательно, чтобы все параметры, которые мониторятся были в sql,  который указан в начале файла noserver. noserver еще периодически делает выборку из таблицы users (и других), после чего формирует сигнатуру данных, которые мониторятся. Единственное, такие параметры мониторятся реже чем sql в начале файла.

Кроме того, не забывай, что при изменении данных noserver всегда выключает абона, затем сразу включает 


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 15 Февраля 2018, 18:44:46
noserver2 это я так понял - "Модуль noserver (управления фаерволом), который может брать скорость из допданных абонента" в личке?
Вообщем если возможность создать доп. поле и по нему отсылать coa если изменилось? Если да то как в кратце?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 16 Февраля 2018, 03:04:49
Лучше самостоятельно не создавать поля в таблицах. Причин много, но я приведу первую попавшуюся. Зачастую в коде идет вставка записей в виде INSERT INTO tbl VALUES (val1, val2, val3). Здесь я точно знаю, что в таблице 3 поля. Если вы сами добавите 4-е, то запрос не будет выполнен. Если я в дальнейшем добавлю поле, то может произойти смещение полей. Короче не надо.

Важный вопрос по поводу "меняющийся параметр клиента" - необходимо мониторить этот параметр и при его изменение запускать coa либо же не надо менять логику и просто слать его дополнительным параметром? Если надо первый случай - необходимо править noserver.

Что это за параметр type? Он от радиуса приходит? Т.е это параметр авторизации? Его можно загнать в поле properties - оно для этого и создано, а потом я могу сделать правила в модуле coa для парсинга этого поля.
Вітаю.
В звязку з вище описаним, хочу запитати чи є стандартний модуль, що буде відправцьовувати ситему qinq-accel-radius-coa-nodeny+? Бо постійне допилювання вручну, не то що б напрягало, але 300 разу думаєш, чи не буде подібних проблем.. Якщо є - де їх купити, в списку, нічого схожого не знайшов. Тобто чи реалізовано стандартними засобами авторизація по влану? Чи потрібно допилювати? Якщо потрібно, то є рекоментації по безпечному допилюваню? ))


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 16 Февраля 2018, 10:49:05
Цитировать
що буде відправцьовувати ситему qinq-accel-radius-coa-nodeny+
coa с accel работает хорошо.

для qinq готово решения нет в dhcp модуле, нужно выкручиваться, допиливать.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 16 Февраля 2018, 12:21:51
І тут же застереження про створення нових полів ))) Тому, може хоть рекомендації будуть. Я поки зробив наступний костиль, доки йде налаштування accel. Створив доп поле, де зберігається параметр авторизації типу vlan2111.101, який генерується при створенні клієнта із модуля dhcp (де вказується свіч до якого підключений клієнт і порт). Мак свіча вказую в форматі 00:00:00:00:21:11 і далі створюю строку - vlan2111.+номер порта+100.  Як ви реалізуєте авторизацію по вланах?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 16 Февраля 2018, 12:27:29
Давайте не здесь это тема по coa. Напишу тут h_t_t_p://forum.nodeny.com.ua/index.php?topic=3016.0


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 16 Февраля 2018, 13:57:06
Ок.
Модуль СоА знайшов. Проте жодної інструкції про інстал))


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 16 Февраля 2018, 14:36:43
Очки выпишите себе  ;D
h_t_t_p://nodeny.com.ua/wiki/index.php/COA


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 17 Февраля 2018, 21:41:33
Модуль WebCoa
Дает возможность через вебинтерфейс отключить абонента с помощью COA, например, сбросить pppoe-сессию в mpd

Модуль RADIUS Change of Authorization

Модуль Radius-атрибуты
Модуль позволяет добавлять произвольные атрибуты в radreply пакет radius-сервера в зависимости от тарифа абонента.

як на перший погляд, все про одне й теж саме )) тому й заплутався.. Пока не бухнеш, відразу не вїдеш))


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 25 Февраля 2018, 14:36:56
Было бы хорошо добавить отправку $coa_connect__state_off если
Цитировать
Dhcp выдал по данному маку ip = 10.194.7.118, однако пока еще клиент не зарегистрировался

Иначе в  системе когда всем разрешено и запрещается доступ только тем кто заблокирован клиент имеет доступ к сети.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: elite от 25 Февраля 2018, 21:05:08
ну незарегистрированным надо выдавать ип из отдельного пула


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 03 Марта 2018, 12:07:24
Стас подскажи при регистрации клиента по dhcp очень долго coa отсылает state_on, 2 мин. примерно. Так же если удалить мак с учетки и его ip, не отсылается state_off или disconnect или это происходит очень долго.

Можно как-то уменьшить тайм-ауты, а то дискомфорт? 


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 03 Марта 2018, 18:04:03
запусти noserver с ключом -u=id_тестируемого абона и ключем -v и дай лог с консоли


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 18 Марта 2018, 12:12:40
Стас подскажи, как правильно отправить disconnect предыдущей сессии пользователя который "Один на порту", в тот момент когда он пытается авторизоваться новым устройством на своем порту?

Возникла ситуация, клиент один на порту
Подключается роутером и имеет логин
Код:
507b9de829ec-8014a81f3a40-0/1:18

Затем он вдруг захотел подключить ноут напрямую или мастера пришли со своим оборудованием, его логин стал
Код:
048d38e29188-8014a81f3a40-0/1:18

radreply его пропускает, т.к. он один на порту и выдает его ip.

Но на брасе это две разные сессии и последнюю он не может поднять с тем же ip что у первой. Приходится ждать пока первая завершится по lease-time что не очень удобно.
Вот и думаю как отправить disconnect первой сессии по session id в момент завершения авторизации второй.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: elite от 18 Марта 2018, 13:12:19
fet4
попробуй single-session=replace
Цитировать
single-session=replace|deny
Указывает, следует ли контролировать количество сессии для кадого пользователя.
Если эта опция управления отсутствует контроль количество сессий на пользователя выключен.
Если эта опция replace - accel-ррр прекращает первую сессию, когда вторая выполяет подключение.
Если эта опция deny accel-ррр будет сбрасывать попытки авторизации второй сессии


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 18 Марта 2018, 13:16:37
Стоит, но он актуален для одинаковых логинов, а у меня разные они.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 10 Апреля 2018, 11:10:51
Стаст, а можно додати в білінг галочку у клієнати Proxy ARP? і при активації цієї фунції - відправляти через СоА атрибут?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 27 Мая 2018, 06:58:03
Уточнить, чи вірно роблю при використанні декількох НАС.
створюю і конфігурю файли
./modules/coa/create.cfg.coa.nas1.cfg.pm
./modules/coa/create.cfg.coa.nas2.cfg.pm
....
./modules/coa/create.cfg.coa.nasХ.cfg.pm

і після виконую
install.pl -x

Створюються різні конфіги, які окремо вже запускаю. Вроді піля такого, при наступнийх install.pl -x, конфіги насів не перезатираються.



Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 09 Июля 2018, 16:44:26
Вітаю.
Хтось мав проблему з тим, що падає демон СОА. Чи є якісь логи по цьому?
Запускаю так
/usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.nas9.cfg.pm -d &


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Warlock от 09 Июля 2018, 20:58:41
Он падает сразу после запуска?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 09 Июля 2018, 21:01:28
Вітаю.
Хтось мав проблему з тим, що падає демон СОА. Чи є якісь логи по цьому?
Запускаю так
/usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.nas9.cfg.pm -d &


А якщо запускати з -v то що у виводі?
Цитировать
/usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.nas9.cfg.pm -v


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 10 Июля 2018, 12:47:19
Ні, падає через пару днів.
з ключем -v видає стандартні логи, без помилок.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 10 Июля 2018, 15:39:30
Зараз ось 185 годин працює
root   54153  11.0 42.5 2760512 1770204  3- S    Mon03PM    185:44.14 /usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.nas9.cfg.pm -d
root   54541  10.0 41.3 2760512 1722628  4- S    Mon03PM    187:06.00 /usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.nas7.cfg.pm -d


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 10 Июля 2018, 23:44:55
2760512 - это 2 гига? в килобайтах значение?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 11 Июля 2018, 03:10:53
Походу да
USER     PID  %CPU %MEM     VSZ     RSS TT  STAT STARTED         TIME COMMAND
root      11 387.0  0.0       0      64  -  RL   12Jun18 155489:51.83 [idle]
root   54153  11.0 47.8 2760512 1990428  3- S    Mon03PM    272:01.93 /usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.nas9.cfg.pm -d
root   70584  10.0  1.6  122688   68588  5  S+    4:05AM      0:34.38 /usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.nas7.cfg.pm -v
root   46456   1.0  0.3   77632   10448  2- S    22Jun18    439:00.05 perl /usr/local/nodeny/nokernel.pl -d

і скільки йому тре памяті, щоб він не падав?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 11 Июля 2018, 13:27:03
Походу падає воно, через память, вижирає всю.. Це що на кожен модуль СОА тре по 3 гіга памяті? більше 2,7 не росте


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Pa4ka от 11 Июля 2018, 15:50:04
Походу падає воно, через память, вижирає всю.. Це що на кожен модуль СОА тре по 3 гіга памяті? більше 2,7 не росте
в мене 4 модулі коа, кожен в районі ~500М памяті забирає зараз, просто сьогодні переносив біллінг у віртуалку та на старому зупинив, там довго працювало і нічого не було, на память не звертав увагу


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 11 Июля 2018, 18:51:41
І як шукати причину витікання памяті? Чи де обмежується память? бо більше 2.7 не росте... і ще, коли запускаєеш модуль з ключеа d, він все рівно в консоль валить повідомлення. Може в цьому проблема?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 12 Июля 2018, 08:12:13
І як шукати причину витікання памяті? Чи де обмежується память? бо більше 2.7 не росте... і ще, коли запускаєеш модуль з ключеа d, він все рівно в консоль валить повідомлення. Може в цьому проблема?
а ты его не модифицировал? Прикрепи  как тхт файл


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 12 Июля 2018, 22:08:03
Які саме файли потрібні? Я змінював тільки параметри авторизації  NAS -  ip,login,secret ну і самі параметри CoA
Ось файл create.cfg.coa.nas9.cfg.pm
ht  tp s://pastebin.com/dNaA1iD4


radclient version 3.0.17, built on May 22 2018 at 15:12:39


Якщо має значення - білінг і Radius server на різних серверах.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Cell от 12 Июля 2018, 23:01:39
Якщо має значення - білінг і Radius server на різних серверах.
Бывают брасы, которые такого юмора кстати не понимают. Поэтому CoA может даже вообще не работать.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 13 Июля 2018, 00:22:12
СоА працює як має, але блін тільки випадає ))
Доречі, запустив в скріні  337:25.74 /usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.nas7.cfg.pm -v
вже 337 годин норм іде. А той що демоном - вже два раза падав.
Хоча це такий собі вихід - 3 гіга на брас...


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 13 Июля 2018, 11:03:49
А в процессах не висит много radclient с большим временем жизни?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 14 Июля 2018, 02:25:33
Зараз взагалі жодного процесу


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 15 Июля 2018, 13:17:54
В сscreen висів процес довго, але врешті-решт потух і він.
Killed
You have new mail.
ось з таким повідомленням.  Звичайно можна костилів на ставити, але це не вирішує проблему.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 17 Июля 2018, 12:47:53
Немає ідей?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 17 Июля 2018, 13:56:32
Немає ідей?
нету, потому что основной модуль - это noserver, который управляет coa. noserver проверен многократно, а coa слишком простой и там реально негде текти памяти. Остается один вариант - утечка памяти где-то при запуске/чтения результата  radclient


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 17 Июля 2018, 21:47:05
Пересетапити радіус?
radclient -v
radclient version 3.0.17, built on May 22 2018 at 15:12:39


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Cell от 17 Июля 2018, 22:04:34
Видимо начать нужно с того что 3й радиус это вообще недоразумение ходячее. Оно меня так задрало, что недавно собрался с мыслями и собрал из исходников радиус2 для дебиан9. Работает как часы...


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 17 Июля 2018, 22:44:25
Поки збільшив памяті до 8 гіг і ребутнув сервак. За пару годин споживання памяті модулем виросла до 268М. Побачимо, може ребут його спас/ )


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 18 Июля 2018, 01:54:39
Ситуація не змінилась (


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 18 Июля 2018, 02:39:35
Це не радіус, запускав пару раз з модуля ситуацію спрацювання - память не росла.. Тобто память модуля росте без спрацювання радклієнта. Все таки десь утєчка йде в самому noserver.
може через версію перла?
perl -v

This is perl 5, version 26, subversion 2 (v5.26.2) built for amd64-freebsd-thread-multi


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 18 Июля 2018, 13:49:26
Создай файл:

Код:
   my $cmd = "/usr/local/bin/radclient -x 127.0.0.1:3799 coa password";
   my $data = "User-Name = test";
   while( 1 )
   {
        if( open(my $fh, "| $cmd") )
        {
            print $fh $data;
            close $fh;
        }
        print '.';
        sleep(1);
   }

Измени только строку /usr/local/bin/radclient -x 127.0.0.1:3799 coa password - проверь путь к radclient, сервер радиуса, порт и пароль.

Запусти - каждую секунду должен посылаться запрос - это должно быть видно в консоли.

Параллельно время от времени смотри какой объем памяти потребляет этот скрипт. Только быстро не убивай, пусть поработает час, например


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 19 Июля 2018, 04:08:41
Received CoA-NAK Id 206 from 10.254.250.195:3799 to 10.254.250.221:28363 length 26
   Error-Cause = Session-Context-Not-Found
(0) -: Expected CoA-ACK got CoA-NAK
.Sent CoA-Request Id 252 from 0.0.0.0:24090 to 10.254.250.195:3799 length 26
   User-Name = "test"
Received CoA-NAK Id 252 from 10.254.250.195:3799 to 10.254.250.221:24090 length 26
   Error-Cause = Session-Context-Not-Found
(0) -: Expected CoA-ACK got CoA-NAK


root   22557   0.0  0.1   27344    4688  3  S+    3:42AM    0:00.24 /usr/bin/perl ./radtest.pl
root   22967   0.0  0.0   10652    2140  4  R+    3:48AM    0:00.00 grep test


root   22557   0.0  0.1   27344    4688  3  S+    3:42AM    0:01.56 /usr/bin/perl ./radtest.pl
root   25163   0.0  0.0   18844    2252  4  S+    4:24AM    0:00.00 grep test

Розмір памяті не змінився за весь час роботи скрипта


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Redmen от 19 Июля 2018, 09:13:16
Кстати в модуле управления МТ тоже утечки памяти, пробовал найти, не смог!
noserver2.pl - модифицированный noserver.pl для обработки абонов только всегда онлайн


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Redmen от 19 Июля 2018, 09:20:17
как же повезло что я решил ответить в теме, заметил что память закончилась за 12 дней!
при запуске процессы noserver.pl и  noserver2.pl -g=_mt194.cfg.pm -d имеют размер по 93 метра


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Cell от 19 Июля 2018, 12:23:18
Вот мне интересно, а дальше то что? проверяли?
Для юникс систем это НОРМАЛЬНО когда используются вся доступная память. Вот когда ее не хватает - тогда она начинает свапится и это пожалуй самый первый показатель что что-то не так. А то что память "закончилась" - это вообще ни о чем. Пасаны, ну не первый же день за рулем, ну елы-палы.
У меня эти модули микротиков годами работают. В одном месте есть где 10 штук одновременно трудятся на одном тазу и хоть бы хрен по деревне.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 19 Июля 2018, 19:16:01
В мене не мікротік. І процес вижирає не більше 2,7 гіг.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Redmen от 20 Июля 2018, 09:25:29
Вот мне интересно, а дальше то что? проверяли?
Для юникс систем это НОРМАЛЬНО когда используются вся доступная память. Вот когда ее не хватает - тогда она начинает свапится и это пожалуй самый первый показатель что что-то не так. А то что память "закончилась" - это вообще ни о чем. Пасаны, ну не первый же день за рулем, ну елы-палы.
У меня эти модули микротиков годами работают. В одном месте есть где 10 штук одновременно трудятся на одном тазу и хоть бы хрен по деревне.

Не важно как у меня оно работает! (kern.maxdsiz="4096M")
Оно живет на виртуалке, могу увеличить память хоть до 58 гб
мой пост к тому что присутствует факт утечки!
мне кажется проблема в самом noserver.pl, т.к. сам он тоже со временем набирает объем, скорее из-за некоректного наполнения хэшэй!
есть перловые модули для поиска различных утечек, только времени заниматься этим нет!
а так мы планируем отказаться от использования noserver.pl в пользу своих наработок (планирую ими поделиться когда все допилю)


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Cell от 20 Июля 2018, 09:43:20
да уж... беда.... ::)
Ок. Маленькая лекция для тех кто не в курсе:
Свободная память в Unix системе - это полная хрень, эта память не используется системой и не делает ее быстрее. Свободная память - это зло.
Память может быть активной, не активной и свободной.
Активная память - это память необходимая для работы процесса
Неактивная память - это память закрепленная за процессом но в данный момент не используемая. Такой вид памяти будет мговенно освобождаться для других процессов в случае такой необходимости. Во все остальное время данная память выполняет роль кэша, т.е. ускоряет доступ к данным, необходимым процессу если он ими пользуется часто.
Еще есть свап - это виртуальная память на диске, которая зачинает заполняться в случае реальной нехватки физической оперативной памяти.
Так вот судить о том хватает памяти или нет нужно не по тому сколько у вас используется физической памяти т.к. в нормальных системах через некоторое время после старта  этот показатель около 100% находится а свапится ли физическая память в виртуальную область или нет.
А так-то можно и 100 Гб сделать память ))) система все равно будет стараться заполнить ее на полную катушку.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 20 Июля 2018, 14:45:50
Вот мне интересно, а дальше то что? проверяли?
Для юникс систем это НОРМАЛЬНО когда используются вся доступная память. Вот когда ее не хватает - тогда она начинает свапится и это пожалуй самый первый показатель что что-то не так. А то что память "закончилась" - это вообще ни о чем. Пасаны, ну не первый же день за рулем, ну елы-палы.
У меня эти модули микротиков годами работают. В одном месте есть где 10 штук одновременно трудятся на одном тазу и хоть бы хрен по деревне.

Не важно как у меня оно работает! (kern.maxdsiz="4096M")
Оно живет на виртуалке, могу увеличить память хоть до 58 гб
мой пост к тому что присутствует факт утечки!
мне кажется проблема в самом noserver.pl, т.к. сам он тоже со временем набирает объем, скорее из-за некоректного наполнения хэшэй!
есть перловые модули для поиска различных утечек, только времени заниматься этим нет!
а так мы планируем отказаться от использования noserver.pl в пользу своих наработок (планирую ими поделиться когда все допилю)

в мене теж на віртуалці. Може в цьому проблема?!


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Redmen от 20 Июля 2018, 14:54:58
да уж... беда.... ::)
Ок. Маленькая лекция для тех кто не в курсе:
Свободная память в Unix системе - это полная хрень, эта память не используется системой и не делает ее быстрее. Свободная память - это зло.
Память может быть активной, не активной и свободной.
Активная память - это память необходимая для работы процесса
Неактивная память - это память закрепленная за процессом но в данный момент не используемая. Такой вид памяти будет мговенно освобождаться для других процессов в случае такой необходимости. Во все остальное время данная память выполняет роль кэша, т.е. ускоряет доступ к данным, необходимым процессу если он ими пользуется часто.
Еще есть свап - это виртуальная память на диске, которая зачинает заполняться в случае реальной нехватки физической оперативной памяти.
Так вот судить о том хватает памяти или нет нужно не по тому сколько у вас используется физической памяти т.к. в нормальных системах через некоторое время после старта  этот показатель около 100% находится а свапится ли физическая память в виртуальную область или нет.
А так-то можно и 100 Гб сделать память ))) система все равно будет стараться заполнить ее на полную катушку.

Спасибо за лекцию! Реально не знал! полезно!


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 25 Июля 2018, 12:39:57
Вже майже тиждень тримається і не падає модуль
root    6078   9.0 32.6 2768704 2723524  1- S    18Jul18  1345:44.84 /usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.nas7.cfg.pm -d
память не росте більеш 2.7 гіга. Може це якась змінна в системі, що дозволяє використати такий обєм? Може десь можна виставити 500м, і він буде радий цьому і відмінно працювати?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: elite от 26 Июля 2018, 09:19:02
а не дохрена ему 2.7 гига памяти? что он там такого хранит в ней?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Cell от 26 Июля 2018, 09:23:16
а не дохрена ему 2.7 гига памяти? что он там такого хранит в ней?
тебе какая разница? оно жрать не просит? и хвала Аллаху!


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 26 Июля 2018, 10:19:44
Разница велика
1) Коли було 4 гіга, модулі просто падали, коли закінчувався і свап.
2) 10 насов - 27 гігов памяті.

Я думаю тут причина не в модулі, а схоже десь в системі. Думаю, якщо хтось підніме собі віртуалку з
FreeBSD bill.web 10.4-STABLE FreeBSD 10.4-STABLE
і csh шелом, ситуація буде аналогічною.

пробував гратися з
kern.maxdsiz=1073741824
kern.dfldsiz=1073741824
kern.maxssiz=536870912
також з limit

Поки результату не дало. Продовжую пошуки, де воно обмежується...


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 26 Июля 2018, 11:03:49
у тебя, я так понял, несколько coa запущено? У всех одинаковое потребление вне зависимости от нагрузки или корреляция есть?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 26 Июля 2018, 18:59:09
Ось максимальне споживання. Більше не росте
root    1497  13.0 32.6 2776896 2729224  0- R     1:17AM  135:07.42 /usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.nas9.cfg.pm -d
root    3694  13.0 32.6 2776896 2729232  1- S     2:00AM  129:56.83 /usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.nas7.cfg.pm -d


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: elite от 09 Августа 2018, 17:04:34
есть ли возможность не посылать CoA при подключении пользователя, а только при изменении состояния


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 09 Августа 2018, 21:58:45
есть ли возможность не посылать CoA при подключении пользователя, а только при изменении состояния
вроде нет, надо править noserver.pl. Сейчас времени нет, ищи debug("Данные uid $uid изменились - переподключаем") в этом файле


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: fet4 от 21 Августа 2018, 10:37:49
Что-то где-то намудрено вот мое потребление
Код:
root      3587  1.6  3.8 196796 147844 ?       Ss   Мар23 3511:04 /usr/bin/perl /usr/local/nodeny/noserver.pl -a -i -g=_coa.cfg.pm -d &


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 21 Августа 2018, 15:31:12
Я думаю це повязано з ОС або з bash, або що це віртуалка...


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 01 Октября 2018, 22:39:58
Вітаю, проблему з виїданням памяті так і не вдалося вирішити. Можливо хтось має ідеї.

І ще питання, чи можна реалізувати модуль, щоб міг відпрацьовувати бекапне зєднання з НАСом?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: tom от 18 Ноября 2018, 11:06:04
Проблема з памятю зникла.. Навіть не знаю чому, здається після оновлень nodeny


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: goletsa от 28 Декабря 2019, 16:52:13
Попробуй запустить несколько копий с разными конфигами
Нет ли более правильного решения, так как в такой ситуации все логи BRAS забиты тем что сессии не сущесвует на текущем BRAS'е.
Например добавить возможность брать nas ip из таблицы в качестве адреса хоста, как это сделано для webcoa?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 04 Января 2020, 22:53:14
в конфиге для noserver можно добавить параметр:

Код:
$ip_tags    = 'тег';
и тогда noserver будет обрабатывать только те ip, которые имеют этот тег. Т.е если организовать выдачу ip в соответствии тегами (например (http://nodeny.com.ua/wiki/index.php/%D0%92%D1%8B%D0%B4%D0%B0%D1%87%D0%B0_ip_%D0%B2_%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8_%D0%BE%D1%82_%D1%82%D0%BE%D0%B3%D0%BE,_%D0%BA_%D0%BA%D0%B0%D0%BA%D0%BE%D0%BC%D1%83_NAS_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD_%D0%B0%D0%B1%D0%BE%D0%BD%D0%B5%D0%BD%D1%82)), то все должно работать корректно


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: goletsa от 05 Января 2020, 15:24:11
в конфиге для noserver можно добавить параметр:

Код:
$ip_tags    = 'тег';
и тогда noserver будет обрабатывать только те ip, которые имеют этот тег. Т.е если организовать выдачу ip в соответствии тегами (например (http://nodeny.com.ua/wiki/index.php/%D0%92%D1%8B%D0%B4%D0%B0%D1%87%D0%B0_ip_%D0%B2_%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8_%D0%BE%D1%82_%D1%82%D0%BE%D0%B3%D0%BE,_%D0%BA_%D0%BA%D0%B0%D0%BA%D0%BE%D0%BC%D1%83_NAS_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD_%D0%B0%D0%B1%D0%BE%D0%BD%D0%B5%D0%BD%D1%82)), то все должно работать корректно

Это не решает проблемы, когда оба NAS работают в режиме дублирования друг друга для резервирования.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Cell от 06 Января 2020, 09:21:25

Это не решает проблемы, когда оба NAS работают в режиме дублирования друг друга для резервирования.

Кстати так часто бывает, знаю и о 5-6 NAS работающих параллельно.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 06 Января 2020, 19:53:40
Попробуй запустить несколько копий с разными конфигами
Нет ли более правильного решения, так как в такой ситуации все логи BRAS забиты тем что сессии не сущесвует на текущем BRAS'е.
Например добавить возможность брать nas ip из таблицы в качестве адреса хоста, как это сделано для webcoa?
брать ip из таблицы авторизаций?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: goletsa от 06 Января 2020, 21:12:50
Попробуй запустить несколько копий с разными конфигами
Нет ли более правильного решения, так как в такой ситуации все логи BRAS забиты тем что сессии не сущесвует на текущем BRAS'е.
Например добавить возможность брать nas ip из таблицы в качестве адреса хоста, как это сделано для webcoa?
брать ip из таблицы авторизаций?
Ну по идее там есть nas=ip, как только его брать из модуля CoA, оно же не в чистом виде лежит в таблице.
Если нету - слать на дефолтовый из конфига например.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: elite от 06 Января 2020, 23:04:36
а может быть надо завести отдельное поле в таблице nas_ip и session_id ?
а также сделать таблицу NAS-ов с параметрами ип адрес, секрет, соа_секрет


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 06 Января 2020, 23:32:23
Попробуй запустить несколько копий с разными конфигами
Нет ли более правильного решения, так как в такой ситуации все логи BRAS забиты тем что сессии не сущесвует на текущем BRAS'е.
Например добавить возможность брать nas ip из таблицы в качестве адреса хоста, как это сделано для webcoa?
брать ip из таблицы авторизаций?
Ну по идее там есть nas=ip, как только его брать из модуля CoA, оно же не в чистом виде лежит в таблице.
Если нету - слать на дефолтовый из конфига например.
доступны проперти авторизации в noserver, слава богу я это предусмотрел


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: goletsa от 07 Января 2020, 02:18:31
Попробуй запустить несколько копий с разными конфигами
Нет ли более правильного решения, так как в такой ситуации все логи BRAS забиты тем что сессии не сущесвует на текущем BRAS'е.
Например добавить возможность брать nas ip из таблицы в качестве адреса хоста, как это сделано для webcoa?
брать ip из таблицы авторизаций?
Ну по идее там есть nas=ip, как только его брать из модуля CoA, оно же не в чистом виде лежит в таблице.
Если нету - слать на дефолтовый из конфига например.
доступны проперти авторизации в noserver, слава богу я это предусмотрел
Ок, как их использовать? Или ждать обновления модуля с данным функицоналом.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 07 Января 2020, 10:58:00
Обновите модуль coa. Обратите внимание, что ip сервера должен быть в параметре nas свойств авторизации, вот как здесь (http://nodeny.com.ua/wiki/images/9/96/Webcoa.png), например, он = 127.0.0.1


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: goletsa от 11 Марта 2020, 12:22:14
Можно уточнить по принципу, по которому coa отправляет запросы?
При перезапуске модуля он отправляет изменения параметров у текущих договоров, но похоже не по всем.

И можно ли как-то приостанавливать работу модуля в какие-то временные интервалы? Например я не хочу чтобы он 1 числа с 0:00 во время смены услуг дергал лишний раз клиентов.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: goletsa от 01 Мая 2020, 00:27:32
UP

В общем проблема с тем что при переходе на новый месяц CoA дергает всех клиентов что авторизованы, что приводит к отключению интернета на какое-то время. Можно ли как-то предусмотреть интервалы, чтобы избежать данного поведения при переустановке услуг первого числа (на те же самые и без блокировки доступа)?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Efendy от 03 Мая 2020, 22:07:41
Непонятно почему он дергает. Ведь для него "новый месяц" понятия не существует. Возможно дисконнект происходит в промежуток между отключением и подключением услуги. Но я думаю, что он очень маленький и вряд ли это привело бы к массовой проблеме. Это проблема массовая?


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: goletsa от 19 Мая 2020, 12:32:05
Непонятно почему он дергает. Ведь для него "новый месяц" понятия не существует. Возможно дисконнект происходит в промежуток между отключением и подключением услуги. Но я думаю, что он очень маленький и вряд ли это привело бы к массовой проблеме. Это проблема массовая?
Массовая, переход на новый месяц может достигать до 20 минут (из-за модуля смотрешки возможно, т.к. там тоже происходит переустановка услуг, а делается это не быстро).
Пока временно решил тем что выключаю CoA на этот период, но это не правильное решение.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: Maks от 24 Марта 2021, 11:14:00
Помогите решить задачу.

Есть несколько Accel которые слушают VLAN в котором QINQ к абонентам.
Nodeny выдает IP из пула без привязки к клиентам.
Абоненты могут мигрировать между Accel без смены IP (реальные IP)

Сейчас для СОА отключен параметр coa_disconnect , но я хочу его активировать т.к сейчас если выкинуть из интернета клиента через биллинг то биллинг очищает IP, но ацель про это не в курсе и клиент продолжает работать дальше.

Активация
$coa_disconnect = {
    type     => 'disconnect',
    template => <<TMPL,
Framed-IP-Address={{ip}}
TMPL
};


Вопрос с выкидыванием решает, но вылазит другой глюк.

Клиент авторизуется, Accel поднимает сессия. И через некоторое время прилетает СОА выдает скорость клиенту и помечает сессию как finish.
При этом в биллинге сессия продолжает быть активной зеленый ключ горит.

Вопрос, как и что нужно поправить, чтоб СОА отправляла finish когда клиент не активен в биллинге.


Название: Re: Модуль RADIUS Change of Authorization
Отправлено: veca16 от 29 Марта 2021, 16:53:00
Добрый день! Сам с Accel игрался немало. Отправлять нужно так как Стас реализовал для mpd:
Код:
accounting {
        sql
        exec
        if("%{sql:SELECT IF((SELECT 1 FROM v_ips i JOIN users u ON i.uid=u.id WHERE u.name='%{User-Name}' AND i.ip='%{Framed-IP-Address}'),1,0)}" < 1){
            update reply {
                mpd-drop-user = 1
            }
        }
    }
Это я вытащил с документации http_://nodeny.com.ua/wiki/index.php/Pppoe_(mpd5_%2B_freeradius_3)
По такому принципу я думаю было бы логично, но как это реализовать для Accel пока не придумал.