Efendy
|
|
« Ответ #15 : 18 Октября 2017, 22:47:04 » |
|
Твоя процедура radupdate принимает 4 параметра, а передается 3. Возможно ты намудрил с процедурами (доступы, под каким пользователем были созданы и тд)
|
|
|
Записан
|
|
|
|
sedo26
|
|
« Ответ #16 : 19 Октября 2017, 09:48:10 » |
|
Твоя процедура radupdate принимает 4 параметра, а передается 3. Возможно ты намудрил с процедурами (доступы, под каким пользователем были созданы и тд)
Когда убрал post-auth { query = "call radupdate('%{User-Name}','%{reply:Framed-IP-Address}',\ 'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}')" }
- всё запустилось без ошибок, и адрес получил. Есть ещё вопросы по заглушке. Дабы не ставить насом фряху, решили установить микрот. Сервер с биллингом является одновременно и сервером доступа, на нём отлично проходит через заглушку регистрация маков. Но через микрот пока не удалось добиться. При заворачивании /ip firewall nat add action=dst-nat chain=dstnat dst-address=!10.30.40.50 src-address=!10.30.40.50 dst-port=80 fragment=no protocol=tcp src-address-list=!goodboys to-addresses=10.30.40.50 to-ports=8080
Перебрасывает на заглушку по реальному IP, а она в свою очередь на 1.1.1.1/cgi-bin/cap.pl (но микрот 1.1.1.1 не знает где, и опять перебрасывает на заглушку по реальному IP) при входе на 10.30.40.50/cgi-bin/cap.pl - биллинг говорит что мы зашли с реального IP. Получается биллинг не видит мак и ИП клиента подключенного к микроту. Куда копать?
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #17 : 19 Октября 2017, 10:32:41 » |
|
А ну правильно, что не работает, то не надо чинить, надо просто убрать. Ну ок, ждем твоего следующего вопроса "почему зеленый ключик пропадает через несколько минут"
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #18 : 19 Октября 2017, 11:07:18 » |
|
А ну правильно, что не работает, то не надо чинить, надо просто убрать. Ну ок, ждем твоего следующего вопроса "почему зеленый ключик пропадает через несколько минут"
это просто жесть какая то ))) и ничего что нужно радиус для дхцп просто по инструкции настроить )))
|
|
|
Записан
|
|
|
|
gudwin
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 85
|
|
« Ответ #19 : 21 Октября 2017, 21:49:34 » |
|
для dhcp cat /usr/local/etc/raddb/sites-enabled/nodenyserver default { listen { type = auth ipaddr = * port = 1812 } listen { type = acct ipaddr = * port = 0 } authorize { sql pap update control { Auth-Type := "Accept" } } authenticate { Auth-Type PAP { pap } } preacct { acct_unique preprocess } accounting { detail sql exec } session { radutmp sql } post-auth { sql } } cat /usr/local/etc/raddb/mods-enabled/sqlsql { driver = "rlm_sql_mysql" mysql { warnings = auto } server = "localhost" port = 3306 login = "nodeny" password = "hardpass" radius_db = "nodeny" authorize_check_query = "call radcheck('%{User-Name}')" authorize_reply_query = "call radreply('%{User-Name}')" accounting { query = "call radupdate('%{User-Name}','%{Framed-IP-Address}',\ 'nas=%{NAS-IP-Address}')" type { start { query = "call radupdate('%{User-Name}','%{Framed-IP-Address}',\ 'nas=%{NAS-IP-Address}')" } } } post-auth { query = "call radupdate('%{User-Name}','%{reply:Framed-IP-Address}',\ 'nas=%{NAS-IP-Address}')" } } Mysql процедурыALTER DATABASE nodeny CHARACTER SET utf8 COLLATE utf8_general_ci;
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_mac VARCHAR(12); DECLARE usr_ip VARCHAR(15); DECLARE usr_id INT; SELECT REPLACE(login, ':', '') INTO usr_mac; SELECT uid INTO usr_id FROM mac_uid WHERE mac=usr_mac; IF usr_id IS NOT NULL AND usr_id>0 THEN SELECT get_ip(usr_id) INTO usr_ip; UPDATE mac_uid SET ip=0 WHERE ip=INET_ATON(usr_ip) AND uid<>usr_id; UPDATE mac_uid SET ip=INET_ATON(usr_ip), time=UNIX_TIMESTAMP() WHERE uid=usr_id; ELSE UPDATE mac_uid SET ip=0 WHERE uid=0 AND time<(UNIX_TIMESTAMP()-3600); START TRANSACTION; SELECT INET_NTOA(ip) INTO usr_ip FROM ip_pool p WHERE uid=0 AND type='dynamic' AND NOT EXISTS (SELECT ip FROM mac_uid WHERE ip=p.ip) ORDER BY RAND() LIMIT 1 FOR UPDATE; INSERT INTO mac_uid VALUES( NULL, usr_mac, INET_ATON(usr_ip), 0, UNIX_TIMESTAMP(), 0, 0, 0) ON DUPLICATE KEY UPDATE ip=IF(ip>0,ip,INET_ATON(usr_ip)), time=UNIX_TIMESTAMP(); COMMIT; SELECT INET_NTOA(ip) INTO usr_ip FROM mac_uid WHERE mac=usr_mac; END IF; SELECT NULL, login, 'Framed-IP-Address', usr_ip, '='; SELECT NULL, login, 'Session-Timeout', '600', '='; END$$ DELIMITER ;
DROP PROCEDURE IF EXISTS `radupdate`; DELIMITER $$ CREATE PROCEDURE `radupdate`( IN login VARCHAR(64), IN ipa VARCHAR(16), IN properties VARCHAR(255)) BEGIN DECLARE usr_mac VARCHAR(16); SELECT REPLACE(login, ':', '') INTO usr_mac; CALL set_auth(ipa, CONCAT('mod=dhcp;user=', usr_mac, ';', REPLACE(properties,';',''))); UPDATE mac_uid SET time=UNIX_TIMESTAMP() WHERE ip=INET_ATON(ipa) LIMIT 1; END$$ DELIMITER ;
|
|
|
Записан
|
|
|
|
gudwin
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 85
|
|
« Ответ #20 : 21 Октября 2017, 21:54:49 » |
|
для pppoecat /usr/local/etc/raddb/sites-enabled/nodenyserver default { listen { type = auth ipaddr = * port = 1812 } listen { type = acct ipaddr = * port = 0 } authorize { sql pap } authenticate { Auth-Type PAP { pap } } preacct { acct_unique preprocess } accounting { detail sql exec } session { radutmp sql } post-auth { sql } } cat /usr/local/etc/raddb/mods-enabled/sqlsql { driver = "rlm_sql_mysql" mysql { warnings = auto } server = "localhost" port = 3306 login = "nodeny" password = "hardpass" radius_db = "nodeny" authorize_check_query = "call radcheck('%{User-Name}')" authorize_reply_query = "call radreply('%{User-Name}')" accounting { query = "call radupdate('%{User-Name}','%{Framed-IP-Address}',\ 'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}')" type { start { query = "call radupdate('%{User-Name}','%{Framed-IP-Address}',\ 'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}')" } } } post-auth { query = "call radupdate('%{User-Name}','%{reply:Framed-IP-Address}',\ 'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}')" } }
Mysql процедурыALTER DATABASE nodeny CHARACTER SET utf8 COLLATE utf8_general_ci;
DROP PROCEDURE IF EXISTS `radcheck`; DELIMITER $$ CREATE PROCEDURE `radcheck` (IN login VARCHAR(64)) BEGIN SELECT id,name,'Cleartext-Password' AS Attribute,AES_DECRYPT(passwd,'hardpass') AS Value,':=' FROM users WHERE name=login; 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 id INTO usr_id FROM users 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','='; 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 id INTO usr_id FROM users WHERE name=login LIMIT 1; SELECT get_ip(usr_id) INTO usr_ip; CALL set_auth(usr_ip, CONCAT('mod=pppoe;',REPLACE(properties,':',''))); END$$ DELIMITER ;
DROP PROCEDURE IF EXISTS `radstop`; DELIMITER $$ CREATE PROCEDURE `radstop`(IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1; DELETE FROM auth_now WHERE ip = get_ip(usr_id) LIMIT 1; END$$ DELIMITER ;
|
|
« Последнее редактирование: 21 Октября 2017, 22:15:59 от NoDeny support »
|
Записан
|
|
|
|
smollmd
|
|
« Ответ #21 : 29 Ноября 2017, 09:25:26 » |
|
Привет всем. Немного не в ту тему, но надеюсь кто-то поможет.
Пробую Nodeny 50.32+ freeradius3 согласно вашим советам:
authorize_check_query = "call radcheck('%{User-Name}')" authorize_reply_query = "call radreply('%{User-Name}')" accounting { query = "call radupdate('%{User-Name}')" type { start { query = "call radupdate('%{User-Name}')" } } } post-auth { query = "call radupdate('%{User-Name}')" }
на первый взгляд все работает, но нету информации в базе о том, что клиент отключал сессию(только те что по таймауту)
На первом фрирадиусе для моей версии биллинга использовалась функция accounting_stop_query = "call radstop('%{User-Name}')" тут все попытки ее подключить не дают результатов
Возможно я не совсем понимаю принципа работы, по сколько с ним до этого не работал. Буду рад любой помощи.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #22 : 29 Ноября 2017, 10:07:59 » |
|
я в н+ отключение по команде stop не использую, честно говоря я забыл почему, возможно чтобы риконнекты не забивали таблицу авторизаций или не высасывали пул ip. Пусть авторизация пропадает по таймауту, 2 минуты таймаута - это разве много?
|
|
|
Записан
|
|
|
|
smollmd
|
|
« Ответ #23 : 29 Ноября 2017, 18:31:54 » |
|
А где именно можно глянуть/сменить таймауты, по которым ядро принимает решение что клиент отключен? Бо по факту больше 10 мин.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #24 : 29 Ноября 2017, 18:41:28 » |
|
/usr/local/nodeny/kernel/auth.cfg
|
|
|
Записан
|
|
|
|
smollmd
|
|
« Ответ #25 : 29 Ноября 2017, 19:48:13 » |
|
это я так понимаю для nodeny+ на старой версии не нахожу, и не могу понять где в конфиге может быть этот параметр
|
|
|
Записан
|
|
|
|
gudwin
NoDeny
Пользователь
Карма: 0
Offline
Сообщений: 85
|
|
« Ответ #26 : 29 Ноября 2017, 22:17:11 » |
|
Ну вы же читали ветку, здесь обсуждается все касательно Nodeny plus)
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #27 : 30 Ноября 2017, 00:52:19 » |
|
Вероятно $Kern_t_to_deny
|
|
|
Записан
|
|
|
|
smollmd
|
|
« Ответ #28 : 30 Ноября 2017, 10:45:45 » |
|
$Kern_t_to_deny = 150; $Kern_t_chk_auth = 5; $Kern_t_traf = 30; $Kern_t_usr_reload = 60;
если так, то это 2,5 минуты, а сессию закрывает минут через 10 после дисконекта pppoe.
В mpd5 -> acct-update 45
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #29 : 30 Ноября 2017, 12:17:24 » |
|
Блин, тему засорили, людям понадобится узнать как настроить 3й радиус на н+, а получат историю борьбы в н50
|
|
|
Записан
|
|
|
|
|