Биллинговая система Nodeny
19 Апреля 2024, 06:53:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: NoDeny NEXT + Freeradius3 + accel-ppp + QinQ (DHCP)  (Прочитано 2757 раз)
Maks
NoDeny
Ветеран
*

Карма: 13
Offline Offline

Сообщений: 575


Скажи спасибо - подними карму.

https://t.me/smv https://t.me/smv_wz
Просмотр профиля Email
« : 30 Января 2021, 00:26:39 »

Помогите в настройке такой схемы: NoDeny NEXT + Freeradius3 + accel-ppp + QinQ (DHCP)

NoDeny NEXT установил. Там кстати как задумано или ошибка, что каталога /usr/local/nodeny нет, но есть /usr/local/next
Но без каталога /usr/local/nodeny админка не запускалась, сделал симлик и все запустилось.

Установил Freeradius3 и сейчас прохожу авторизацию:

Код:
radtest 00:11:22:33:44:55 '' 127.0.0.1 0 hardpass5
Sent Access-Request Id 207 from 0.0.0.0:20280 to 127.0.0.1:1812 length 69
User-Name = "00:11:22:33:44:55"
User-Password = ""
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Message-Authenticator = 0x00
Cleartext-Password = ""
Received Access-Accept Id 207 from 127.0.0.1:1812 to 127.0.0.1:20280 length 32
Framed-IP-Address = 10.2.1.9
Session-Timeout = 600

А вот как быть дальше, что-то не могу понять.
Если я верно понял мне нужно по этой инструкции
http://nodeny.com.ua/wiki/index.php/Freebsd_%2B_Freeradius3_%2B_Nodeny_Plus

Использовать раздел для dhcp. Или я ошибаюсь ?

Искал по форуму, но чуть потерялся.
Натолкните на нужную ссылку.
Спасибо за помощь.
Записан

Nodeny общение
https://t.me/nodeny_chat
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 973


Просмотр профиля
« Ответ #1 : 02 Февраля 2021, 14:18:59 »

NoDeny NEXT установил. Там кстати как задумано или ошибка, что каталога /usr/local/nodeny нет, но есть /usr/local/next
Но без каталога /usr/local/nodeny админка не запускалась, сделал симлик и все запустилось.

Возможно вы репозиторий не в ту папку склонировали.


Смотреть в сторону http://nodeny.com.ua/wiki/index.php/Dhcp%2BRadius

Для QinQ процедура проверки должна примерно так выглядеть (_ipoe_svlan и _ipoe_cvlan заводятся в карточке клиента для хранения меток клиента).

Код:
DROP PROCEDURE IF EXISTS `radcheck`;
DELIMITER $$
CREATE PROCEDURE `radcheck` (IN svlan_cvlan VARCHAR(64))
BEGIN
    DECLARE svlan VARCHAR(12);
    DECLARE cvlan VARCHAR(12);
    SELECT strSplit(svlan_cvlan, '_', 1) INTO svlan;
    SELECT strSplit(svlan_cvlan, '_', 2) INTO cvlan;
    SELECT uid,svlan_cvlan AS name,'Cleartext-Password' AS Attribute,svlan_cvlan AS Value,':='
    FROM data0 WHERE _ipoe_svlan=svlan and _ipoe_cvlan=cvlan;
END$$
DELIMITER ;


call accel_radcheck('1000_10');
Записан
Maks
NoDeny
Ветеран
*

Карма: 13
Offline Offline

Сообщений: 575


Скажи спасибо - подними карму.

https://t.me/smv https://t.me/smv_wz
Просмотр профиля Email
« Ответ #2 : 04 Февраля 2021, 17:09:55 »

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

Выполнил глобально в базе
Код:
SET GLOBAL log_bin_trust_function_creators = 1;
Далее
Код:
DROP FUNCTION strSplit;
CREATE FUNCTION strSplit(x MEDIUMTEXT, delim MEDIUMTEXT, pos int) RETURNS MEDIUMTEXT
RETURN
    TRIM(BOTH '\r' FROM TRIM(
    REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos - 1)) + 1), delim, '')
    ));


После этого совет сработал.
Код:
radtest '1000_11' '' 127.0.0.1 0 hardpass5
Sent Access-Request Id 171 from 0.0.0.0:38952 to 127.0.0.1:1812 length 59
User-Name = "1000_11"
User-Password = ""
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Message-Authenticator = 0x00
Cleartext-Password = ""
Received Access-Accept Id 171 from 127.0.0.1:1812 to 127.0.0.1:38952 length 20

Также еще информация
http://nodeny.com.ua/wiki/index.php/Radius_%D0%B0%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D1%8B
http://nodeny.com.ua/wiki/index.php/Freebsd_%2B_Freeradius3_%2B_Nodeny_Plus
Записан

Nodeny общение
https://t.me/nodeny_chat
Maks
NoDeny
Ветеран
*

Карма: 13
Offline Offline

Сообщений: 575


Скажи спасибо - подними карму.

https://t.me/smv https://t.me/smv_wz
Просмотр профиля Email
« Ответ #3 : 06 Февраля 2021, 14:41:43 »

В сообщении выше ошибка.

Вот какой корректный ответ от радиуса.

Код:
	User-Name = "1000_10"
User-Password = ""
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Message-Authenticator = 0x00
Cleartext-Password = ""
Received Access-Accept Id 69 from 127.0.0.1:1812 to 127.0.0.1:16741 length 38
Framed-IP-Address = 10.0.0.4
Framed-IP-Netmask = 255.255.255.255
Framed-Protocol = PPP

Записан

Nodeny общение
https://t.me/nodeny_chat
Maks
NoDeny
Ветеран
*

Карма: 13
Offline Offline

Сообщений: 575


Скажи спасибо - подними карму.

https://t.me/smv https://t.me/smv_wz
Просмотр профиля Email
« Ответ #4 : 01 Ноября 2021, 12:17:37 »

Опишу тут что мне потребовалось изменить для корректного перехода с + на NEXT
Спасибо парням за помощь из группы https://t.me/nodeny_chat


На сервере с чистым NEXT

Код:
DROP DATABASE nodeny;
create database nodeny;
use nodeny;
source /usr/local/nodeny/bill.sql;
source /home/nodeny.sql;
---------------------------------
Пришлось поправить некоторые поля, иначе были ошибки по созданию пользователей, или изменения других полей

Код:
ALTER TABLE `admin`   CHANGE COLUMN `name` `name` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci' AFTER `passwd`;
ALTER TABLE `admin`   CHANGE COLUMN `post` `post` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci' AFTER `passwd`;
ALTER TABLE `admin`   CHANGE COLUMN `privil` `privil` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci' AFTER `passwd`;
ALTER TABLE `admin`   CHANGE COLUMN `usr_grps` `usr_grps` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci' AFTER `passwd`;
ALTER TABLE `admin`   CHANGE COLUMN `tunes` `tunes` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci' AFTER `passwd`;
ALTER TABLE `admin`   CHANGE COLUMN `ext` `ext` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci' AFTER `passwd`;
ALTER TABLE `admin`   CHANGE COLUMN `balance` `balance` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci' AFTER `passwd`;
ALTER DATABASE nodeny CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE services ADD `plain_description` varchar(512) NOT NULL DEFAULT '';
ALTER TABLE admin MODIFY COLUMN passwd varbinary(64) NOT NULL;
ALTER TABLE users MODIFY COLUMN comment varchar(8192) NOT NULL DEFAULT '';
ALTER TABLE `users_trf` ENGINE=InnoDB;
ALTER TABLE `data1` ENGINE=InnoDB;
ALTER TABLE `websessions` ENGINE=InnoDB;
ALTER TABLE `config` ENGINE=InnoDB;
ALTER TABLE `datasetup` ENGINE=InnoDB;
ALTER TABLE `dictionary` ENGINE=InnoDB;
ALTER TABLE `nets` ENGINE=InnoDB;
ALTER TABLE `ses_traf` ENGINE=InnoDB;
ALTER TABLE `user_grp` ENGINE=InnoDB;

MySQL процедуры для авторизации абонента по логину

Код:
DROP PROCEDURE IF EXISTS `radcheck`;
DELIMITER $$
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64))
BEGIN
  SELECT Null, login, 'Cleartext-Password' AS Attribute, '' AS Value,':=';
END$$
DELIMITER ;

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;

  SELECT uid INTO usr_id FROM data0 WHERE _name_radius=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,'Acct-Interim-Interval','120','=';

END$$
DELIMITER ;


DROP PROCEDURE IF EXISTS `radupdate`;
DELIMITER $$
CREATE PROCEDURE `radupdate`(IN login VARCHAR(64), IN ip VARCHAR(16), IN properties VARCHAR(255))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  SELECT uid INTO usr_id FROM data0 WHERE _name_radius=login LIMIT 1;
  SELECT get_ip(usr_id) INTO usr_ip;
  CALL set_auth(usr_ip, CONCAT('mod=pppoe;',REPLACE(properties,':','')));
  UPDATE data0 SET _name_radius=login WHERE _name_radius=login LIMIT 1;
END$$
DELIMITER ;


DROP PROCEDURE IF EXISTS `radstop`;
DELIMITER $$
CREATE PROCEDURE `radstop`(IN login VARCHAR(64))
BEGIN
 DECLARE usr_id INT;
  SELECT uid INTO usr_id FROM data0 WHERE _name_radius=login LIMIT 1;
  DELETE FROM auth_now WHERE ip = get_ip(usr_id) LIMIT 1;
END$$
DELIMITER ;

DROP FUNCTION IF EXISTS `normalize_ippool`;
DELIMITER $$
CREATE FUNCTION `normalize_ippool` ( )
    RETURNS TINYINT NO SQL
BEGIN
    DECLARE mid INTEGER UNSIGNED;

    SELECT MAX(id) into mid FROM ip_pool;
    UPDATE ip_pool SET id = id + mid;
    SET @i = 0;
    UPDATE ip_pool SET id = @i:=@i+1 ORDER BY realip, type, tags;

    RETURN 1;
END$$
DELIMITER ;

-----------------
Для работы работы модуля карт:

Код:
ALTER TABLE places CHANGE `img` `img` VARCHAR(5) NOT NULL DEFAULT '';
ALTER TABLE places CHANGE `descr` `descr` VARCHAR(4096) NOT NULL DEFAULT '';
ALTER TABLE places CHANGE `location` `location` VARCHAR(4096) NOT NULL DEFAULT '';
ALTER TABLE places CHANGE `gpsX` `gpsX` FLOAT NOT NULL DEFAULT 0;
ALTER TABLE places CHANGE `gpsY` `gpsY` FLOAT NOT NULL DEFAULT 0;

И главное не забыть в NEXT зайти: ядро - услуги - Запускать модуль при запуске ядра NoDeny.
Если его не включить то тариф завершаться не будет.

Также если у кого ЛК с изменениями и на NEXT при авторизации не будет редиректа то заходим в биллинг так:

http://192.168.1.1/cgi-bin/stat.pl?_uu=admin&_pp=pass
Далее в документах убераем теги с раздела авторизации и меняем код ЛК под NEXT
Записан

Nodeny общение
https://t.me/nodeny_chat
Страниц: [1]
  Печать  
 
Перейти в:  

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