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

Главная категория => Nodeny 50 => Тема начата: goletsa от 26 Сентября 2012, 16:52:56



Название: Radius + Opt82
Отправлено: goletsa от 26 Сентября 2012, 16:52:56
Никто не занимался вопрос разбора радиусом opt82?
Какими средствами лучше это сделать? Самим радиусом или можно както mysql'ом?
Просто судя по всему часть полей закодирована в hex, т.е. надо както конвертировать и выделять значения порт,влан.
Вот пример запроса со свича с 26 порта, 80 vlan:
"0800.27a8.fc67.00040050011A.00067072CF7149E0"
Где:
0800.27a8.fc67 мак юзера
7072CF7149E0 мак свича
0050 vid
1A port
Причем последние два значения в hex...

Неясно как это в автоматическом режиме разбирать (где и как). И сравнивать допустим с дополнительными полями.



Название: Re: Radius + Opt82
Отправлено: stix от 26 Сентября 2012, 18:40:14
Можно sql процедурами многое делать


Название: Re: Radius + Opt82
Отправлено: 0xbad0c0d3 от 26 Сентября 2012, 23:40:46
Да, если лень разбираться, то проще всего - мускуль. Но я бы покопал radius. Не ставил связки DHCP+RADIUS потому не знаю какие там механизмы задействованы. Может котортко опишите - подумаем


Название: Re: Radius + Opt82
Отправлено: goletsa от 27 Сентября 2012, 12:37:28
Да, если лень разбираться, то проще всего - мускуль. Но я бы покопал radius. Не ставил связки DHCP+RADIUS потому не знаю какие там механизмы задействованы. Может котортко опишите - подумаем
Ну есть железка - Juniper MX80
Там есть DHCP сервер который умеет забирать данные с radius сервера.
В качестве UserName он передает строку которую можно настроить в конфиге, в данном случае склеивается mac клиента, circuit id и remote id.
От Radius'а в атрибутах он должен получить адрес, маску, днс и так далее.

MySQL'ом я в принципе разобрался как разделить строку, получилось что-то типа такого:

Цитировать
DROP PROCEDURE IF EXISTS `mx80radcheck`;
DELIMITER $$ 
CREATE PROCEDURE `mx80radcheck` (IN login VARCHAR(64))
BEGIN
 DECLARE usr_id INT; 
 DECLARE usr_mac VARCHAR(12);
 DECLARE usr_vid INT;
 DECLARE usr_port INT;
 DECLARE usr_swmac VARCHAR(12);
 
SELECT UPPER(REPLACE(SUBSTRING(login,1,14),'.','')) INTO usr_mac;
SELECT CONV(SUBSTRING(login,20,4),16,10) INTO usr_vid;
SELECT CONV(SUBSTRING(login,26,2),16,10) INTO usr_port;
SELECT SUBSTRING(login,33,12) INTO usr_swmac;


  SELECT usr_mac AS 'MAC', usr_vid AS 'VID', usr_port AS 'PORT', usr_swmac AS 'SWMAC';
END$$
DELIMITER ;

Но оно пока заточено на железо Edge-Core, при других форматах Opt82 скорее всего работать не будет.