Биллинговая система Nodeny
25 Ноября 2024, 17:08:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 2 3 [4] 5 6
  Печать  
Автор Тема: Nodeny plus + Debain + Accel-ppp  (Прочитано 40182 раз)
Warlock
NoDeny
Старожил
*

Карма: 8
Offline Offline

Сообщений: 367


Просмотр профиля
« Ответ #45 : 25 Октября 2016, 17:30:05 »

Стас, могу ошибаться, но в доке может быть ошибка, если ты модуль после меня не переделывал, то $coa_disconnect посылается авторизованному клиенту, у которого изменился статус.
Записан
sever
Пользователь
**

Карма: 1
Offline Offline

Сообщений: 82


Просмотр профиля
« Ответ #46 : 25 Октября 2016, 18:52:11 »

А как правильно выдрать тариф через радиус.

Код:
mysql> select param from services;
 $VAR1 = {'script' => '','min_traf' => '','period' => 2592000,'mode' => '2','speed_out4' => '','speed_in4' => '','speed_out1' => 1024000,'speed_in1' => 1024000,'tags' => 'medium','speed_out3' => '','speed_out2' => '','speed_in2' => '','wait_pos_balance' => '0','speed_in3' => ''};
есть такие значение в тарифе  'speed_out1' => 1024000,'speed_in1' => 1024000,'tags' => 'medium'

Как правильно в mysql-процедуре radreply передать эти параметры.

Нечто, вроде
Код:
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$
CREATE PROCEDURE `radreply`(IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  DECLARE s_param VARCHAR(15) DEFAULT 1024;

  SELECT users.id,services.param INTO usr_id,s_param  FROM users,services WHERE name=login LIMIT 1;
  SELECT get_ip(usr_id) INTO usr_ip;

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Framed-Protocol','PPP','=';
  SELECT NULL,login,'PPPD-Downstream-Speed-Limit','s_param','=';
  SELECT NULL,login,'PPPD-Upstream-Speed-Limit','s_param','=';


END$$
DELIMITER ;



« Последнее редактирование: 25 Октября 2016, 19:26:26 от sever » Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1226

In LAN we trust!

358714596
Просмотр профиля
« Ответ #47 : 25 Октября 2016, 19:35:00 »

А как правильно выдрать тариф через радиус.

Код:
mysql> select param from services;
 $VAR1 = {'script' => '','min_traf' => '','period' => 2592000,'mode' => '2','speed_out4' => '','speed_in4' => '','speed_out1' => 1024000,'speed_in1' => 1024000,'tags' => 'medium','speed_out3' => '','speed_out2' => '','speed_in2' => '','wait_pos_balance' => '0','speed_in3' => ''};
есть такие значение в тарифе  'speed_out1' => 1024000,'speed_in1' => 1024000,'tags' => 'medium'

Как правильно в mysql-процедуре radreply передать эти параметры.

Нечто, вроде
Код:
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$
CREATE PROCEDURE `radreply`(IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  DECLARE s_param VARCHAR(15) DEFAULT 1024;

  SELECT users.id,services.param INTO usr_id,s_param  FROM users,services WHERE name=login LIMIT 1;
  SELECT get_ip(usr_id) INTO usr_ip;

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Framed-Protocol','PPP','=';
  SELECT NULL,login,'PPPD-Downstream-Speed-Limit','s_param','=';
  SELECT NULL,login,'PPPD-Upstream-Speed-Limit','s_param','=';


END$$
DELIMITER ;




наверное, нужно на perl радиус перевести
Записан
Warlock
NoDeny
Старожил
*

Карма: 8
Offline Offline

Сообщений: 367


Просмотр профиля
« Ответ #48 : 25 Октября 2016, 20:47:27 »

А как правильно выдрать тариф через радиус.

Код:
mysql> select param from services;
 $VAR1 = {'script' => '','min_traf' => '','period' => 2592000,'mode' => '2','speed_out4' => '','speed_in4' => '','speed_out1' => 1024000,'speed_in1' => 1024000,'tags' => 'medium','speed_out3' => '','speed_out2' => '','speed_in2' => '','wait_pos_balance' => '0','speed_in3' => ''};
есть такие значение в тарифе  'speed_out1' => 1024000,'speed_in1' => 1024000,'tags' => 'medium'

Как правильно в mysql-процедуре radreply передать эти параметры.

Нечто, вроде
Код:
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$
CREATE PROCEDURE `radreply`(IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  DECLARE s_param VARCHAR(15) DEFAULT 1024;

  SELECT users.id,services.param INTO usr_id,s_param  FROM users,services WHERE name=login LIMIT 1;
  SELECT get_ip(usr_id) INTO usr_ip;

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Framed-Protocol','PPP','=';
  SELECT NULL,login,'PPPD-Downstream-Speed-Limit','s_param','=';
  SELECT NULL,login,'PPPD-Upstream-Speed-Limit','s_param','=';


END$$
DELIMITER ;




Есть модуль радиус аттрибуты. Или же через CoA.
Записан
sever
Пользователь
**

Карма: 1
Offline Offline

Сообщений: 82


Просмотр профиля
« Ответ #49 : 26 Октября 2016, 03:59:16 »


Как правильно в mysql-процедуре radreply передать эти параметры.

Разобрался, вариант такой годится

Код:
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$
CREATE PROCEDURE `radreply`(IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  DECLARE usr_tarif VARCHAR(15) DEFAULT NULL;

  SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1;
  SELECT get_ip(usr_id) INTO usr_ip;
  SELECT service_id INTO usr_tarif from users_services LIMIT 1;

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Framed-Protocol','PPP','=';

 IF usr_tarif = 1 THEN
    SELECT NULL,login,'PPPD-Downstream-Speed-Limit','1024','=';
    SELECT NULL,login,'PPPD-Upstream-Speed-Limit','1024','=';
 END IF;

 IF usr_tarif = 2 THEN
  SELECT NULL,login,'PPPD-Downstream-Speed-Limit','2048','=';
  SELECT NULL,login,'PPPD-Upstream-Speed-Limit','2048','=';
 END IF;

 IF usr_tarif = 3 THEN
  SELECT NULL,login,'PPPD-Downstream-Speed-Limit','4096','=';
  SELECT NULL,login,'PPPD-Upstream-Speed-Limit','4096','=';
 END IF;

END$$
DELIMITER ;

Завтра надо с тегами попробовать
Не зря же они в тарифе указаны.
Записан
sever
Пользователь
**

Карма: 1
Offline Offline

Сообщений: 82


Просмотр профиля
« Ответ #50 : 27 Октября 2016, 11:39:06 »

В тарифе указываем теги тарифа.
Конечный вариант таков.

Код:
DROP PROCEDURE IF EXISTS `radreply`;
DELIMITER $$
CREATE PROCEDURE `radreply`(IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  DECLARE usr_tarif VARCHAR(15) DEFAULT NULL;

  SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1;
  SELECT get_ip(usr_id) INTO usr_ip;
  SELECT tags INTO usr_tarif FROM users_services LIMIT 1;

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Framed-Protocol','PPP','=';
  SELECT NULL,login,'Acct-Interim-Interval','60','=';

 IF usr_tarif  LIKE '%,medium,%' THEN
    SELECT NULL,login,'PPPD-Downstream-Speed-Limit','21504','=';
    SELECT NULL,login,'PPPD-Upstream-Speed-Limit','21504','=';
 END IF;

 IF usr_tarif  LIKE '%,fast,%' THEN
    SELECT NULL,login,'PPPD-Downstream-Speed-Limit','51200','=';
    SELECT NULL,login,'PPPD-Upstream-Speed-Limit','51200','=';
 END IF;

 IF usr_tarif  LIKE '%,ultra,%' THEN
    SELECT NULL,login,'PPPD-Downstream-Speed-Limit','102400','=';
    SELECT NULL,login,'PPPD-Upstream-Speed-Limit','102400','=';
  ELSE
    SELECT NULL,login,'PPPD-Downstream-Speed-Limit','2048','=';
    SELECT NULL,login,'PPPD-Upstream-Speed-Limit','2048','=';
 END IF;

END$$
DELIMITER ;

Заметил особенность или глюк
При изменении тега тарифа в вебе, в mysql он не меняется до тех пор, пока не переназначишь услугу.

К примеру
Код:
mysql> SELECT tags   FROM users_services WHERE tags LIKE '%,speed,%';
+----------------------------------+
| tags                             |
+----------------------------------+
| ,medium,inet,speed,start_traf=0, |
+----------------------------------+
1 row in set (0.00 sec)


Меняем тег в морде на medium_new
получаем
Код:
mysql> SELECT tags   FROM users_services WHERE tags LIKE '%,speed,%';
+----------------------------------+
| tags                             |
+----------------------------------+
| ,medium,inet,speed,start_traf=0, |
+----------------------------------+
1 row in set (0.00 sec)



Переназначачем услугу
И только теперь получаем изменённый тег.
Код:
mysql> SELECT tags   FROM users_services WHERE tags LIKE '%,speed,%';
+--------------------------------------+
| tags                                 |
+--------------------------------------+
| ,medium_new,inet,speed,start_traf=0, |
+--------------------------------------+
1 row in set (0.00 sec)

Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #51 : 27 Октября 2016, 13:20:28 »

Заметил особенность или глюк
особенность. Теги и радиус-атрибуты устанавливаются в момент подключения услуги
Записан
sever
Пользователь
**

Карма: 1
Offline Offline

Сообщений: 82


Просмотр профиля
« Ответ #52 : 28 Октября 2016, 17:29:02 »


Стас, могу ошибаться, но в доке может быть ошибка, если ты модуль после меня не переделывал, то $coa_disconnect посылается авторизованному клиенту, у которого изменился статус.
[/quote]

У меня disconnect срабатывает при изменении абонента с статуса ON в статус OFF
В бебаге сделал меседжи когда ON и OFF

OFF => ON
Код:
  sending:  = 'NAS-Port-Id=eth0.3001.202, PPPD-Upstream-Speed-Limit=21504, PPPD-Downstream-Speed-Limit=21504,Message=state_ON'

ON => OFF
Код:
 sending:  = 'NAS-Port-Id=eth0.3001.202,Message="state_disconnect"
Записан
fet4
Старожил
****

Карма: 2
Offline Offline

Сообщений: 326


Просмотр профиля Email
« Ответ #53 : 29 Октября 2016, 11:37:23 »

Ребята поделитесь опытом, а кто в каком режиме accel-ppp-ipoe использует? Сейчас использую isc-dhcp option82 параллельно с pppoe, хотелось бы и ipoe перевести на accel, т.к. шейперов не хватает.
Записан
Pa4ka
Старожил
****

Карма: 4
Offline Offline

Сообщений: 281

591884591
Просмотр профиля Email
« Ответ #54 : 29 Октября 2016, 14:08:44 »

Ребята поделитесь опытом, а кто в каком режиме accel-ppp-ipoe использует? Сейчас использую isc-dhcp option82 параллельно с pppoe, хотелось бы и ipoe перевести на accel, т.к. шейперов не хватает.
Я использую accel-ppp ipoe, в каком режиме это как я наверно понял связку сказать.
Поменял с rlm_sql на rlm_perl для связки NAS->freeradius->база биллинга.
Ну а accel-ppp пока что в мод L2
Цитировать
interface=re:bond1\.17[0-35],mode=L2,shared=1,start=dhcpv4,ifcfg=1
Скоро буду на qinq vlan peer user доделывать, ну это изза специфики сети трудновато пока.
Или я не верно понял?
Записан
fet4
Старожил
****

Карма: 2
Offline Offline

Сообщений: 326


Просмотр профиля Email
« Ответ #55 : 29 Октября 2016, 16:42:11 »

Да, в accel-ppp-ipoe есть несколько вариантов использования L2,L3 и другие, я пока что не могу определиться какой мне подходит больше.
Цитировать
Поменял с rlm_sql на rlm_perl для связки NAS->freeradius->база биллинга.
Зачем поменяли, что конкретно не получалось, вроде все ж возможно и на sql?

Для qinq нужна же поддержка коммутатора доступа?
Записан
sever
Пользователь
**

Карма: 1
Offline Offline

Сообщений: 82


Просмотр профиля
« Ответ #56 : 02 Ноября 2016, 08:46:16 »

Цитировать
Для qinq нужна же поддержка коммутатора доступа?

Да ты же на свиче все вланы будешь заворачивать в влан qinq.
А коммутатор доступа это или агрегации - зависит от твоей схемы.
На циске этот режим называется mode dot1q-tunnel.
Записан
Pa4ka
Старожил
****

Карма: 4
Offline Offline

Сообщений: 281

591884591
Просмотр профиля Email
« Ответ #57 : 14 Ноября 2016, 12:16:28 »

Да, в accel-ppp-ipoe есть несколько вариантов использования L2,L3 и другие, я пока что не могу определиться какой мне подходит больше.
Цитировать
Поменял с rlm_sql на rlm_perl для связки NAS->freeradius->база биллинга.
Зачем поменяли, что конкретно не получалось, вроде все ж возможно и на sql?

Для qinq нужна же поддержка коммутатора доступа?
Можно но мне удобнее в perl менять и отправлять всё/как/когда нужно.
Не обязательно, в qinq можно упаковывать уже на агрегации.
Записан
fet4
Старожил
****

Карма: 2
Offline Offline

Сообщений: 326


Просмотр профиля Email
« Ответ #58 : 05 Декабря 2016, 18:02:23 »

А кто как передает пустой пароль в accel ?

У меня не получается, если через radtest то все ок.
Код:
rad_recv: Access-Request packet from host 172.20.0.2 port 41480, id=202, length=87
        User-Name = "74:e5:43:8f:c1:17"
        User-Password = ""
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
        Message-Authenticator = 0x4dec5f0c6bc36e1653f0698ffb57f63e
# Executing section authorize from file /etc/freeradius/sites-enabled/default
+group authorize {
rlm_sql (sql): Reserving sql socket id: 31
[sql]   expand: call radcheck_dhcp('%{User-Name}') -> call radcheck_dhcp('74:e5:43:8f:c1:17')
[sql] User found in radcheck table
[sql]   expand: call radreply_dhcp('%{User-Name}') -> call radreply_dhcp('74:e5:43:8f:c1:17')
rlm_sql (sql): Released sql socket id: 31
++[sql] = ok
+} # group authorize = ok
WARNING: Please update your configuration, and remove 'Auth-Type = Local'
WARNING: Use the PAP or CHAP modules instead.
User-Password in the request is correct.
# Executing section post-auth from file /etc/freeradius/sites-enabled/default
+group post-auth {
[sql]   expand: call radupdate_dhcp('%{User-Name}','%{reply:Framed-IP-Address}',                'nas=%{NAS-IP-Address}') -> call radupdate_dhcp('74:e5:43:8f:c1:17','10.194.13.234',                'nas=127.0.1.1')
rlm_sql (sql) in sql_postauth: query is call radupdate_dhcp('74:e5:43:8f:c1:17','10.194.13.234',                'nas=127.0.1.1')
rlm_sql (sql): Reserving sql socket id: 30
rlm_sql (sql): Released sql socket id: 30
++[sql] = ok
+} # group post-auth = ok
Sending Access-Accept of id 202 to 172.20.0.2 port 41480
        Framed-IP-Address = 10.194.13.234
        Session-Timeout = 600
Finished request 0.
Going to the next request
Waking up in 4.9 seconds.
Cleaning up request 0 ID 202 with timestamp +9

А accel дает reject, если указать password=empty в [ipoe], то User-Password атрибута вообще нет, если password убрать то там мак-устройства в пароле, если  password="" то кавычки экранируются слэшами.
Код:
rad_recv: Access-Request packet from host 172.20.0.2 port 45003, id=1, length=110
        User-Name = "74:e5:43:8f:c1:17"
        NAS-Identifier = "accel-ppp-ipoe"
        NAS-IP-Address = 172.20.0.2
        NAS-Port = 211
        NAS-Port-Id = "ipoe0"
        NAS-Port-Type = Ethernet
        Calling-Station-Id = "74:e5:43:8f:c1:17"
        Called-Station-Id = "vlan200"
# Executing section authorize from file /etc/freeradius/sites-enabled/default
+group authorize {
rlm_sql (sql): Reserving sql socket id: 30
[sql]   expand: call radcheck_dhcp('%{User-Name}') -> call radcheck_dhcp('74:e5:43:8f:c1:17')
[sql] User found in radcheck table
[sql]   expand: call radreply_dhcp('%{User-Name}') -> call radreply_dhcp('74:e5:43:8f:c1:17')
rlm_sql (sql): Released sql socket id: 30
++[sql] = ok
+} # group authorize = ok
WARNING: Please update your configuration, and remove 'Auth-Type = Local'
WARNING: Use the PAP or CHAP modules instead.
No User-Password or CHAP-Password attribute in the request.
Cannot perform authentication.
Failed to authenticate the user.
Using Post-Auth-Type REJECT
  WARNING: Unknown value specified for Post-Auth-Type.  Cannot perform requested action.
# Executing group from file /etc/freeradius/sites-enabled/default
Delaying reject of request 1 for 1 seconds
Going to the next request
Waking up in 0.9 seconds.
Sending delayed reject for request 1
Sending Access-Reject of id 1 to 172.20.0.2 port 45003
        Framed-IP-Address = 10.194.7.128
        Session-Timeout = 600
Waking up in 4.9 seconds.
Cleaning up request 1 ID 1 with timestamp +10

Записан
Pa4ka
Старожил
****

Карма: 4
Offline Offline

Сообщений: 281

591884591
Просмотр профиля Email
« Ответ #59 : 06 Декабря 2016, 11:14:21 »

А кто как передает пустой пароль в accel ?

У меня не получается, если через radtest то все ок.
Код:
rad_recv: Access-Request packet from host 172.20.0.2 port 41480, id=202, length=87
        User-Name = "74:e5:43:8f:c1:17"
        User-Password = ""
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
        Message-Authenticator = 0x4dec5f0c6bc36e1653f0698ffb57f63e
# Executing section authorize from file /etc/freeradius/sites-enabled/default
+group authorize {
rlm_sql (sql): Reserving sql socket id: 31
[sql]   expand: call radcheck_dhcp('%{User-Name}') -> call radcheck_dhcp('74:e5:43:8f:c1:17')
[sql] User found in radcheck table
[sql]   expand: call radreply_dhcp('%{User-Name}') -> call radreply_dhcp('74:e5:43:8f:c1:17')
rlm_sql (sql): Released sql socket id: 31
++[sql] = ok
+} # group authorize = ok
WARNING: Please update your configuration, and remove 'Auth-Type = Local'
WARNING: Use the PAP or CHAP modules instead.
User-Password in the request is correct.
# Executing section post-auth from file /etc/freeradius/sites-enabled/default
+group post-auth {
[sql]   expand: call radupdate_dhcp('%{User-Name}','%{reply:Framed-IP-Address}',                'nas=%{NAS-IP-Address}') -> call radupdate_dhcp('74:e5:43:8f:c1:17','10.194.13.234',                'nas=127.0.1.1')
rlm_sql (sql) in sql_postauth: query is call radupdate_dhcp('74:e5:43:8f:c1:17','10.194.13.234',                'nas=127.0.1.1')
rlm_sql (sql): Reserving sql socket id: 30
rlm_sql (sql): Released sql socket id: 30
++[sql] = ok
+} # group post-auth = ok
Sending Access-Accept of id 202 to 172.20.0.2 port 41480
        Framed-IP-Address = 10.194.13.234
        Session-Timeout = 600
Finished request 0.
Going to the next request
Waking up in 4.9 seconds.
Cleaning up request 0 ID 202 with timestamp +9

А accel дает reject, если указать password=empty в [ipoe], то User-Password атрибута вообще нет, если password убрать то там мак-устройства в пароле, если  password="" то кавычки экранируются слэшами.
Код:
rad_recv: Access-Request packet from host 172.20.0.2 port 45003, id=1, length=110
        User-Name = "74:e5:43:8f:c1:17"
        NAS-Identifier = "accel-ppp-ipoe"
        NAS-IP-Address = 172.20.0.2
        NAS-Port = 211
        NAS-Port-Id = "ipoe0"
        NAS-Port-Type = Ethernet
        Calling-Station-Id = "74:e5:43:8f:c1:17"
        Called-Station-Id = "vlan200"
# Executing section authorize from file /etc/freeradius/sites-enabled/default
+group authorize {
rlm_sql (sql): Reserving sql socket id: 30
[sql]   expand: call radcheck_dhcp('%{User-Name}') -> call radcheck_dhcp('74:e5:43:8f:c1:17')
[sql] User found in radcheck table
[sql]   expand: call radreply_dhcp('%{User-Name}') -> call radreply_dhcp('74:e5:43:8f:c1:17')
rlm_sql (sql): Released sql socket id: 30
++[sql] = ok
+} # group authorize = ok
WARNING: Please update your configuration, and remove 'Auth-Type = Local'
WARNING: Use the PAP or CHAP modules instead.
No User-Password or CHAP-Password attribute in the request.
Cannot perform authentication.
Failed to authenticate the user.
Using Post-Auth-Type REJECT
  WARNING: Unknown value specified for Post-Auth-Type.  Cannot perform requested action.
# Executing group from file /etc/freeradius/sites-enabled/default
Delaying reject of request 1 for 1 seconds
Going to the next request
Waking up in 0.9 seconds.
Sending delayed reject for request 1
Sending Access-Reject of id 1 to 172.20.0.2 port 45003
        Framed-IP-Address = 10.194.7.128
        Session-Timeout = 600
Waking up in 4.9 seconds.
Cleaning up request 1 ID 1 with timestamp +10


У меня никак не получалось пароль в запросе "опустошить)". Сделал временно в конфиге радиуса, ну и это временно до сих пор работает
В секции authorize site-enabled - если NAS-Port-Type не Virtual
Код:
                                    update request {
                                                User-Password = ""
                                                }
                                     perl
                                    }

Записан
Страниц: 1 2 3 [4] 5 6
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!