fet4
|
|
« Ответ #60 : 06 Декабря 2016, 20:27:27 » |
|
Сделал так вообщем. DROP PROCEDURE IF EXISTS `radcheck`; DELIMITER $$ CREATE PROCEDURE `radcheck` (IN login VARCHAR(64)) BEGIN SELECT Null, login, 'Cleartext-Password' AS Attribute, 'ipoe' AS Value,':='; END$$ DELIMITER ;
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #61 : 07 Декабря 2016, 17:44:33 » |
|
username=ifname #password=empty У меня работает так
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #62 : 08 Декабря 2016, 10:57:01 » |
|
+ в радиусе users.conf DEFAULT Auth-Type := Accept
|
|
|
Записан
|
|
|
|
fet4
|
|
« Ответ #63 : 08 Декабря 2016, 12:14:40 » |
|
+ в радиусе users.conf DEFAULT Auth-Type := Accept Да. То что нужно. Спасибо.
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #64 : 09 Декабря 2016, 15:32:00 » |
|
Почемуто не срабатывает процедура 'radstop', в следствии чего ключик продолжает горет зелёным после того, как на NASe сессии уже нет. 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 ; mysql> select * from auth_now where ip='10.10.44.21'; +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ | id | ip | start | last | properties | +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ | 11448 | 10.10.44.21 | 1481287197 | 1481288941 | mod=ipoe;user=0025b35c0899;nas=192.168.242.152;ses=6ec228e3b4cdebee;nid=NAS2 | +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> CALL radstop('10.10.44.21'); Query OK, 0 rows affected, 3 warnings (0.05 sec)
mysql> Сессия продолжает жить своей жизнью mysql> select * from auth_now where ip='10.10.44.21'; +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ | id | ip | start | last | properties | +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ | 11448 | 10.10.44.21 | 1481287197 | 1481288941 | mod=ipoe;user=0025b35c0899;nas=192.168.242.152;ses=6ec228e3b4cdebee;nid=NAS2 | +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ 1 row in set (0.00 sec)
mysql> А прибивается только так mysql> DELETE from auth_now WHERE ip='10.10.44.21'; Query OK, 1 row affected (0.05 sec)
mysql> Что я делаю не так?
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #65 : 09 Декабря 2016, 16:11:40 » |
|
Почемуто не срабатывает процедура 'radstop', в следствии чего ключик продолжает горет зелёным после того, как на NASe сессии уже нет. 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 ; mysql> select * from auth_now where ip='10.10.44.21'; +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ | id | ip | start | last | properties | +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ | 11448 | 10.10.44.21 | 1481287197 | 1481288941 | mod=ipoe;user=0025b35c0899;nas=192.168.242.152;ses=6ec228e3b4cdebee;nid=NAS2 | +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> CALL radstop('10.10.44.21'); Query OK, 0 rows affected, 3 warnings (0.05 sec)
mysql> Сессия продолжает жить своей жизнью mysql> select * from auth_now where ip='10.10.44.21'; +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ | id | ip | start | last | properties | +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ | 11448 | 10.10.44.21 | 1481287197 | 1481288941 | mod=ipoe;user=0025b35c0899;nas=192.168.242.152;ses=6ec228e3b4cdebee;nid=NAS2 | +-------+--------------+------------+------------+-----------------------------------------------------------------------------+ 1 row in set (0.00 sec)
mysql> А прибивается только так mysql> DELETE from auth_now WHERE ip='10.10.44.21'; Query OK, 1 row affected (0.05 sec)
mysql> Что я делаю не так? у Вас наверно модуль dhcp тоже запущен на сервере с радиус и биллингом? если да то я так как у вас изменил название модуля авторизации заместо dhcp у вас ipoe а в модуле dhcp файлик create.kernel.dhcp.pm изменил у меня 45-я строчка Db->do("CALL set_auth(?,?)", $p{ipa}, '');
на Db->do("CALL set_auth(?,?)", $p{ipa}, 'mod=dhcp');
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #66 : 09 Декабря 2016, 17:07:33 » |
|
у Вас наверно модуль dhcp тоже запущен на сервере с радиус и биллингом? если да то я так как у вас изменил название модуля авторизации заместо dhcp у вас ipoe а в модуле dhcp файлик create.kernel.dhcp.pm изменил у меня 45-я строчка
Db->do("CALL set_auth(?,?)", $p{ipa}, '');
на Db->do("CALL set_auth(?,?)", $p{ipa}, 'mod=dhcp');
Да помогло, спасибо А вопрос относительно входа клиента в билинг без непосредственного ввода логина/пароля как организован? Если username и password для каждого клиент1 /login stat.3001.3849 /pass stat.3001.3849 клиент2 /login stat.3001.3850 /pass stat.3001.3850 Радиус авторизация также проходит по username=ifname, password=username
|
|
|
Записан
|
|
|
|
fet4
|
|
« Ответ #67 : 09 Декабря 2016, 20:56:59 » |
|
у Вас наверно модуль dhcp тоже запущен на сервере с радиус и биллингом? если да то я так как у вас изменил название модуля авторизации заместо dhcp у вас ipoe а в модуле dhcp файлик create.kernel.dhcp.pm изменил у меня 45-я строчка Цитировать Db->do("CALL set_auth(?,?)", $p{ipa}, ''); на Цитировать Db->do("CALL set_auth(?,?)", $p{ipa}, 'mod=dhcp'); Т.е. теперь модуль dhcp будет продлевать только тем у кого mod=dhcp? Если например для accel я сделаю mod=ipoe, то ключик будет правильно отрабатывать?
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #68 : 12 Декабря 2016, 08:38:21 » |
|
у Вас наверно модуль dhcp тоже запущен на сервере с радиус и биллингом? если да то я так как у вас изменил название модуля авторизации заместо dhcp у вас ipoe а в модуле dhcp файлик create.kernel.dhcp.pm изменил у меня 45-я строчка Цитировать Db->do("CALL set_auth(?,?)", $p{ipa}, ''); на Цитировать Db->do("CALL set_auth(?,?)", $p{ipa}, 'mod=dhcp'); Т.е. теперь модуль dhcp будет продлевать только тем у кого mod=dhcp? Если например для accel я сделаю mod=ipoe, то ключик будет правильно отрабатывать? Нужно ещё процедуры поменять. 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=ipoe;',REPLACE(properties,':',''))); END$$ DELIMITER ; Работает нормально. Может повлиять на то, что рррое сессии останутся без ключика.
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #69 : 12 Декабря 2016, 10:32:04 » |
|
у Вас наверно модуль dhcp тоже запущен на сервере с радиус и биллингом? если да то я так как у вас изменил название модуля авторизации заместо dhcp у вас ipoe а в модуле dhcp файлик create.kernel.dhcp.pm изменил у меня 45-я строчка Цитировать Db->do("CALL set_auth(?,?)", $p{ipa}, ''); на Цитировать Db->do("CALL set_auth(?,?)", $p{ipa}, 'mod=dhcp'); Т.е. теперь модуль dhcp будет продлевать только тем у кого mod=dhcp? Если например для accel я сделаю mod=ipoe, то ключик будет правильно отрабатывать? Нужно ещё процедуры поменять. 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=ipoe;',REPLACE(properties,':',''))); END$$ DELIMITER ; Работает нормально. Может повлиять на то, что рррое сессии останутся без ключика. если Вы лично мне то спасибо но я не использую эти процедуры, только функции get_ip_w_net и set_auth
|
|
|
Записан
|
|
|
|
fet4
|
|
« Ответ #70 : 12 Декабря 2016, 11:57:09 » |
|
Нет это мне У меня вообще так сейчас pppoe + isc_dhcp + accel-ppp-ipoe+radius. Так вот у клиентов accel-ppp-ipoe+radius неправильно отрабатывает ключик, видимо от модуля dhcp или забить пока не переведу с isc_dhcp на accel и выключу модуль dhcp или подправить как-то это дело. Так все-таки нужен ли запущенный модуль если связка dhcp+radius ? Может повлиять на то, что рррое сессии останутся без ключика.
Ну это если одна процедура на то и другое? у меня разные.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #71 : 12 Декабря 2016, 13:02:10 » |
|
Если речь идет о модуле ядра dhcp, то все, что делает этот модуль - периодически запускает CALL set_auth(?,?). Нужен он вам или нет - думайте исходя из логики того, что вы соорудили. Если то, что вы сконструировали, периодически посылает "сигнал" на радиус, то он вам не нужен. Он нужен только в том случае: клиент авторизовался, проходит несколько минут и модуль auth удаляет по таймауту авторизацию у абона. Модуль dhcp просто "поддерживает" эту авторизацию.
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #72 : 12 Декабря 2016, 15:27:11 » |
|
А вопрос относительно входа клиента в билинг без непосредственного ввода логина/пароля как организован? Если username и password для каждого клиент1 /login stat.3001.3849 /pass stat.3001.3849 клиент2 /login stat.3001.3850 /pass stat.3001.3850
Радиус авторизация также проходит по username=ifname, password=username
Сам ответил на свой вопрос. в файле ip.pl замена строки my %p = Db->line("SELECT uid FROM v_ips WHERE auth=1 AND type='static' AND ip=?", $ses::ip); на my %p = Db->line("SELECT uid FROM v_ips WHERE auth=1 AND type='dynamic' AND ip=?", $ses::ip);
|
|
|
Записан
|
|
|
|
fet4
|
|
« Ответ #73 : 12 Декабря 2016, 19:29:13 » |
|
Если речь идет о модуле ядра dhcp, то все, что делает этот модуль - периодически запускает CALL set_auth(?,?). Нужен он вам или нет - думайте исходя из логики того, что вы соорудили. Если то, что вы сконструировали, периодически посылает "сигнал" на радиус, то он вам не нужен. Он нужен только в том случае: клиент авторизовался, проходит несколько минут и модуль auth удаляет по таймауту авторизацию у абона. Модуль dhcp просто "поддерживает" эту авторизацию.
Просто в данным момент авторизация по dhcp происходит двумя способами с радиусом и без. Так вот те кто с радиусом, у них после окончания сессии не пропадает ключ.
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #74 : 08 Февраля 2017, 16:08:30 » |
|
Выявился глюк взаимодейтсвия nodeny - accel-ppp в режиме рррое Абонент прошедший авторизацию получил из динамического пула адрес Так вот адрес, выделенный абоненту в билинге, не соответствует адресу, выданным accel
к примеру в билинге вижу, login_A динамически выделен адрес 1.х.х.27, mac fc:f5:28:48:b5:61
# accel-cmd show sessions | grep "1.x.x.27" ppp465 | login_D | 14:d6:4d:2d:c5:6b | 1.x.x.27 | | pppoe | | active | 1.19:25:05
# accel-cmd show sessions | grep "fc:f5:28:48:b5:61" ppp441 | login_A | fc:f5:28:48:b5:61 | 1.x.x.4 | | pppoe | | active | 2.03:17:25
|
|
|
Записан
|
|
|
|
|