Название: NoDeny NEXT + Freeradius3 + accel-ppp + QinQ (DHCP)
Отправлено: Maks от 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. Или я ошибаюсь ? Искал по форуму, но чуть потерялся. Натолкните на нужную ссылку. Спасибо за помощь.
Название: Re: NoDeny NEXT + Freeradius3 + accel-ppp + QinQ (DHCP)
Отправлено: goletsa от 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');
Название: Re: NoDeny NEXT + Freeradius3 + accel-ppp + QinQ (DHCP)
Отправлено: Maks от 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
Название: Re: NoDeny NEXT + Freeradius3 + accel-ppp + QinQ (DHCP)
Отправлено: Maks от 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
Название: Re: NoDeny NEXT + Freeradius3 + accel-ppp + QinQ (DHCP)
Отправлено: Maks от 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
|