boomer666
NoDeny
Постоялец
Карма: 1
Offline
Сообщений: 194
|
|
« Ответ #15 : 19 Января 2013, 16:20:26 » |
|
Ответ неверный. Они не будут проходить авторизацию, если ПРАВИЛЬНО изменить процедуру. Они будут получать отсос на авторизацию и ломиться на следующий нас
что имено надо изменить в процедуре?
|
|
|
Записан
|
|
|
|
Demeo
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 204
|
|
« Ответ #16 : 19 Января 2013, 16:33:05 » |
|
Я понял... Тебе надо поднять радиус на каждом насе. Сначала выносишь людей, которые должны висеть на определенном насе в отдельную группу. Первый нас, который обслуживает ВСЕХ настраивается по умолчанию (как в доке). Второй нас, который облуживает НЕ ВСЕХ, настраивается как сателлит. В доке написано как сделать вьюху для определенных групп (т.е. надо сделать вьюху из всех групп, но исключив номер нужной группы). Допустим вьюха будет иметь имя users1. Далее финты ушами. Первый нас не трогаешь вообще. На втором шлюзе: ee /usr/local/etc/raddb/sql.conf
authorize_check_query = "call radcheck1('%{SQL-User-Name}')" authorize_reply_query = "call radreply1('%{SQL-User-Name}')" accounting_update_query = "call radupdate1('%{SQL-User-Name}')" accounting_stop_query = "call radstop1('%{SQL-User-Name}')"
В mysql: use bill;
DROP PROCEDURE IF EXISTS `radcheck`; DELIMITER $$ CREATE PROCEDURE `radcheck` (IN login VARCHAR(64)) BEGIN SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass3') AS Value,'==' FROM users1 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);
SELECT id,ip INTO usr_id,usr_ip FROM users1 WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
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)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),47,unix_timestamp()); END$$ DELIMITER ;
DROP PROCEDURE IF EXISTS `radstop`; DELIMITER $$ CREATE PROCEDURE `radstop` (IN login VARCHAR(64)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),46,unix_timestamp()); END$$ DELIMITER ; Что получилось... На каждом насе свой радиус, который обращается к базе к СВОЕЙ процедуре.
|
|
|
Записан
|
|
|
|
boomer666
NoDeny
Постоялец
Карма: 1
Offline
Сообщений: 194
|
|
« Ответ #17 : 19 Января 2013, 16:38:36 » |
|
Я понял... Тебе надо поднять радиус на каждом насе. Сначала выносишь людей, которые должны висеть на определенном насе в отдельную группу. Первый нас, который обслуживает ВСЕХ настраивается по умолчанию (как в доке). Второй нас, который облуживает НЕ ВСЕХ, настраивается как сателлит. В доке написано как сделать вьюху для определенных групп (т.е. надо сделать вьюху из всех групп, но исключив номер нужной группы). Допустим вьюха будет иметь имя users1. Далее финты ушами. Первый нас не трогаешь вообще. На втором шлюзе: ee /usr/local/etc/raddb/sql.conf
authorize_check_query = "call radcheck1('%{SQL-User-Name}')" authorize_reply_query = "call radreply1('%{SQL-User-Name}')" accounting_update_query = "call radupdate1('%{SQL-User-Name}')" accounting_stop_query = "call radstop1('%{SQL-User-Name}')"
В mysql: use bill;
DROP PROCEDURE IF EXISTS `radcheck`; DELIMITER $$ CREATE PROCEDURE `radcheck` (IN login VARCHAR(64)) BEGIN SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass3') AS Value,'==' FROM users1 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);
SELECT id,ip INTO usr_id,usr_ip FROM users1 WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
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)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),47,unix_timestamp()); END$$ DELIMITER ;
DROP PROCEDURE IF EXISTS `radstop`; DELIMITER $$ CREATE PROCEDURE `radstop` (IN login VARCHAR(64)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),46,unix_timestamp()); END$$ DELIMITER ; Что получилось... На каждом насе свой радиус, который обращается к базе к СВОЕЙ процедуре. что то не то))))зачем радиус должен стоять на сателитах)))) запутал ты меня)))
|
|
|
Записан
|
|
|
|
Demeo
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 204
|
|
« Ответ #18 : 19 Января 2013, 16:45:34 » |
|
Цепочку авторизации представь. Идет запрос на рррое сервер, он отфутболивает к радиусу для авторизации. Так вот, если у тебя ОДИН радиус на все насы, то он будет обращаться ТОЛЬКО к общей базе пользователей, поскольку процедура проверки одна. Если у тебя отдельные радиусы для каждого наса, то можно заставить их хавать отдельные базы пользователей. В sql.conf второго наса я только добавил единичку в названии процедуры (radcheck 1). Только протупил с самими процедурами. Должно быть так use bill;
DROP PROCEDURE IF EXISTS `radcheck1`; DELIMITER $$ CREATE PROCEDURE `radcheck1` (IN login VARCHAR(64)) BEGIN SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass3') AS Value,'==' FROM users1 WHERE name=login; END$$ DELIMITER ;
DROP PROCEDURE IF EXISTS `radreply1`; DELIMITER $$ CREATE PROCEDURE `radreply1` (IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15);
SELECT id,ip INTO usr_id,usr_ip FROM users1 WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
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 `radupdate1`; DELIMITER $$ CREATE PROCEDURE `radupdate1` (IN login VARCHAR(64)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),47,unix_timestamp()); END$$ DELIMITER ;
DROP PROCEDURE IF EXISTS `radstop1`; DELIMITER $$ CREATE PROCEDURE `radstop1` (IN login VARCHAR(64)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),46,unix_timestamp()); END$$ DELIMITER ;
|
|
|
Записан
|
|
|
|
boomer666
NoDeny
Постоялец
Карма: 1
Offline
Сообщений: 194
|
|
« Ответ #19 : 19 Января 2013, 18:03:38 » |
|
Цепочку авторизации представь. Идет запрос на рррое сервер, он отфутболивает к радиусу для авторизации. Так вот, если у тебя ОДИН радиус на все насы, то он будет обращаться ТОЛЬКО к общей базе пользователей, поскольку процедура проверки одна. Если у тебя отдельные радиусы для каждого наса, то можно заставить их хавать отдельные базы пользователей. В sql.conf второго наса я только добавил единичку в названии процедуры (radcheck 1). Только протупил с самими процедурами. Должно быть так use bill;
DROP PROCEDURE IF EXISTS `radcheck1`; DELIMITER $$ CREATE PROCEDURE `radcheck1` (IN login VARCHAR(64)) BEGIN SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass3') AS Value,'==' FROM users1 WHERE name=login; END$$ DELIMITER ;
DROP PROCEDURE IF EXISTS `radreply1`; DELIMITER $$ CREATE PROCEDURE `radreply1` (IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15);
SELECT id,ip INTO usr_id,usr_ip FROM users1 WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
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 `radupdate1`; DELIMITER $$ CREATE PROCEDURE `radupdate1` (IN login VARCHAR(64)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),47,unix_timestamp()); END$$ DELIMITER ;
DROP PROCEDURE IF EXISTS `radstop1`; DELIMITER $$ CREATE PROCEDURE `radstop1` (IN login VARCHAR(64)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),46,unix_timestamp()); END$$ DELIMITER ; до что гемора много...а нельзя в mpd настроить как на микротиках пример: на 2 микротика создаешь 2 pppoe сервера в одну сеть если у абонента не прописано имя службы то ломятся кто куда попал) а если имя службы прописать определеного pppoe сервера то он будет ломится там где есть это имя службы) ?
|
|
|
Записан
|
|
|
|
Demeo
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 204
|
|
« Ответ #20 : 20 Января 2013, 02:40:54 » |
|
Это гемор? Чувак, тогда тебе тут делать нефик-то. Ищи админа. Этот гемор у меня занял минут 10 (с постановкой, осмыслением и разметкой задачи). Имя службы это типа Service-Name? Винда не хавает, т.е. люди не прописавшие сервис-нейм не смогут подключиться к этому насу. Можно юзать AC-name, но опять жеж - винда не хавает. А по сути вопроса... Ты сам определись тебе или бесплатно, или ехать. Тут вам не винда, и кнопки "сделать офигенно" нету. А если не хочешь работать - то тебе в банк или в депутаты
|
|
|
Записан
|
|
|
|
boomer666
NoDeny
Постоялец
Карма: 1
Offline
Сообщений: 194
|
|
« Ответ #21 : 20 Января 2013, 08:13:47 » |
|
Имя службы это типа Service-Name? Винда не хавает, т.е. люди не прописавшие сервис-нейм не смогут подключиться к этому насу. Можно юзать AC-name, но опять жеж - винда не хавает. наконецто я услышал ответ норм)... ee /usr/local/etc/raddb/sql.conf
authorize_check_query = "call radcheck1('%{SQL-User-Name}')" authorize_reply_query = "call radreply1('%{SQL-User-Name}')" accounting_update_query = "call radupdate1('%{SQL-User-Name}')" accounting_stop_query = "call radstop1('%{SQL-User-Name}')"
В mysql: use bill;
DROP PROCEDURE IF EXISTS `radcheck`; DELIMITER $$ CREATE PROCEDURE `radcheck` (IN login VARCHAR(64)) BEGIN SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass3') AS Value,'==' FROM users1 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);
SELECT id,ip INTO usr_id,usr_ip FROM users1 WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
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)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),47,unix_timestamp()); END$$ DELIMITER ;
DROP PROCEDURE IF EXISTS `radstop`; DELIMITER $$ CREATE PROCEDURE `radstop` (IN login VARCHAR(64)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),46,unix_timestamp()); END$$ DELIMITER ; а если так то получается при подключение абонентов(которые должны быть на nas1) к nas2 у них выбет ошибку 651,678 т.д и повторный звонок? а со второй попытки нажмут повторный звонок может попадут на nas1? или они сразу попадут куда им надо?
|
|
|
Записан
|
|
|
|
goletsa
NoDeny
Спец
Карма: 21
Offline
Сообщений: 973
|
|
« Ответ #22 : 20 Января 2013, 11:37:15 » |
|
Элемент рандома. Не изучал по какому алгоритму выбирается PPPoE концентратор, но скорее всего тот что раньше ответит. Т.е. в принципе с n'ой попытки он попадет на nas1.
|
|
|
Записан
|
|
|
|
boomer666
NoDeny
Постоялец
Карма: 1
Offline
Сообщений: 194
|
|
« Ответ #23 : 20 Января 2013, 11:41:31 » |
|
Элемент рандома. Не изучал по какому алгоритму выбирается PPPoE концентратор, но скорее всего тот что раньше ответит. Т.е. в принципе с n'ой попытки он попадет на nas1.
есть шанс что абонент даже не заметит что его не принял nas2
|
|
|
Записан
|
|
|
|
Demeo
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 204
|
|
« Ответ #24 : 20 Января 2013, 12:08:14 » |
|
Ответят все. А подключение установится с тем, который раньше подтвердит авторизацию. Не проверял, но по идее повторного звонка не потребуется
И проверь правильность вводимых процедур. Последние от меня вроде норм.
|
|
|
Записан
|
|
|
|
boomer666
NoDeny
Постоялец
Карма: 1
Offline
Сообщений: 194
|
|
« Ответ #25 : 20 Января 2013, 12:10:09 » |
|
Demeo спс)завтра на работе попробую) + карме
|
|
|
Записан
|
|
|
|
boomer666
NoDeny
Постоялец
Карма: 1
Offline
Сообщений: 194
|
|
« Ответ #26 : 21 Января 2013, 14:35:26 » |
|
Я понял... Тебе надо поднять радиус на каждом насе. Сначала выносишь людей, которые должны висеть на определенном насе в отдельную группу. Первый нас, который обслуживает ВСЕХ настраивается по умолчанию (как в доке). Второй нас, который облуживает НЕ ВСЕХ, настраивается как сателлит. В доке написано как сделать вьюху для определенных групп (т.е. надо сделать вьюху из всех групп, но исключив номер нужной группы). Допустим вьюха будет иметь имя users1. Далее финты ушами. Первый нас не трогаешь вообще. На втором шлюзе: ee /usr/local/etc/raddb/sql.conf
authorize_check_query = "call radcheck1('%{SQL-User-Name}')" authorize_reply_query = "call radreply1('%{SQL-User-Name}')" accounting_update_query = "call radupdate1('%{SQL-User-Name}')" accounting_stop_query = "call radstop1('%{SQL-User-Name}')"
В mysql: use bill;
DROP PROCEDURE IF EXISTS `radcheck`; DELIMITER $$ CREATE PROCEDURE `radcheck` (IN login VARCHAR(64)) BEGIN SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass3') AS Value,'==' FROM users1 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);
SELECT id,ip INTO usr_id,usr_ip FROM users1 WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());
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)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),47,unix_timestamp()); END$$ DELIMITER ;
DROP PROCEDURE IF EXISTS `radstop`; DELIMITER $$ CREATE PROCEDURE `radstop` (IN login VARCHAR(64)) BEGIN INSERT into dblogin (mid,act,time) VALUES ((SELECT id FROM users1 WHERE name=login LIMIT 1),46,unix_timestamp()); END$$ DELIMITER ; Что получилось... На каждом насе свой радиус, который обращается к базе к СВОЕЙ процедуре. хороший вариант))) но не подходит ошибка 691 и повторный звонок раз с 5-го срабатывает(((( есть еще варианты?
|
|
|
Записан
|
|
|
|
goletsa
NoDeny
Спец
Карма: 21
Offline
Сообщений: 973
|
|
« Ответ #27 : 21 Января 2013, 15:00:50 » |
|
хороший вариант))) но не подходит ошибка 691 и повторный звонок раз с 5-го срабатывает(((( есть еще варианты?
Прокидываете vlan до вип абонентов и заводите его только на 1 сервер.
|
|
|
Записан
|
|
|
|
boomer666
NoDeny
Постоялец
Карма: 1
Offline
Сообщений: 194
|
|
« Ответ #28 : 21 Января 2013, 15:07:53 » |
|
ча хороший вариант))) но не подходит ошибка 691 и повторный звонок раз с 5-го срабатывает(((( есть еще варианты?
Прокидываете vlan до вип абонентов и заводите его только на 1 сервер. я об этом уже думал) но нет частный сектор мыльницы кругом))) а если не мучатся дропать маки с со второго nas2?
|
|
|
Записан
|
|
|
|
goletsa
NoDeny
Спец
Карма: 21
Offline
Сообщений: 973
|
|
« Ответ #29 : 21 Января 2013, 15:09:44 » |
|
я об этом уже думал) но нет частный сектор мыльницы кругом)))
Теоретически на ближайшей умной железке сделать mac based vlan если она умеет но ни разу не проверял. PS: Для каких целей именно на nas1 надо? Внешки?
|
|
|
Записан
|
|
|
|
|