Efendy
|
|
« : 26 Ноября 2009, 16:55:23 » |
|
Я тут тестирую работу NoDeny с Hotspot столкнулся с одним моментом, на который, возможно, я раньше не обратил внимание, а возможно просто такой проблемы нет в ваших случаях. Вкратце, в биллинге есть несколько процедур написанных для Radius. При проверке логина запускается процедура radcheck. Если логин не верный - радиус отшивает клиента. Если логин верный, то радиус запускает процедуру radreply для получения параметров соединения. В этой процедуре, кроме параметров соединения, мы записывает в базу о том, что клиент авторизовался. Так вот, тестируя Hotspot я с толкнулся с тем, что вне зависимости от успешности авторизации, радиус запускает radreply хотя по логике не должен этого делать. В чем это отражается? В том, что с неверным паролем клиент становится авторизованным примерно на полторы минуты. Проверьте, пожалуйста эту ситуацию, т.е. попробуйте авторизоваться (например, по пппое) с неверный паролем. Соединение не должно создастся, но важно посмотреть появился ли зеленый ключик через несколько секунд напротив учетной записи в админке.
Если такая проблема подтвердится, то лечится она очень просто, путем переноса записи авторизации в процедуру старта accounting-update
|
|
|
Записан
|
|
|
|
goletsa
NoDeny
Спец
Карма: 21
Offline
Сообщений: 973
|
|
« Ответ #1 : 26 Ноября 2009, 17:00:55 » |
|
1 18:02:16 PPPoE Угу, загорается ключик при неверном пароле.
|
|
|
Записан
|
|
|
|
elite
Начальник планеты
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1226
In LAN we trust!
|
|
« Ответ #2 : 26 Ноября 2009, 17:07:43 » |
|
Стас, а ты не придумал еще реализацию выдачи динамического ип адреса по пппое?
|
|
|
Записан
|
|
|
|
Cell
|
|
« Ответ #3 : 26 Ноября 2009, 17:42:09 » |
|
Проблему подтверждаю, авторизация vpn (mpd+radius). Ключик зеленый ровно 2 минуты. Если можно, расскажи подробно как вылечить.
|
|
|
Записан
|
|
|
|
elite
Начальник планеты
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1226
In LAN we trust!
|
|
« Ответ #4 : 26 Ноября 2009, 17:54:51 » |
|
Проблему подтверждаю, авторизация vpn (mpd+radius). Ключик зеленый ровно 2 минуты. Если можно, расскажи подробно как вылечить.
скоро будет патч
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #5 : 26 Ноября 2009, 18:13:18 » |
|
Стас, а ты не придумал еще реализацию выдачи динамического ип адреса по пппое? я все придумал, только пока это не смогу выпустить т.к. 52 версия уже перековыряна значительно. Для "старых" версий у меня нет ресурсов дублировать нововведения. Так что придется подождать. Сколько - не знаю. Сейчас ковыряю хотспот, здесь и протестирую новую версию. В хотспотах, как оказалось, не все так проблематично, например chilli берет на себя большую часть действий, например, перехват get-запросов, обращение к радиусу и, что мне очень нравится, мониторинг освобождения dрcp-выданного адреса и блокирование ip спуффинга. Правда, из-за того, что chilli на себя взяла большую часть работы, есть некоторые сложности, например, она перехватывает только get-запросы, в результате не получится авторизоваться на opera-mini - эти кренделя забирают странички post-запросами. Так же есть проблема с килянием сессий, которую щас решаю.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #6 : 26 Ноября 2009, 21:52:20 » |
|
ФИКС. 1) Меняем процедуры mysql: bash# mysql --password=`grep sql_root_pass /usr/local/nodeny/history.nod | sed s/\\\$sql_root_pass=\'//g | sed "s/\';//"` bill
попадаем в консоль mysql, выполняем: DROP PROCEDURE IF EXISTS `radreply`; DELIMITER $$ CREATE PROCEDURE `radreply` (IN login VARCHAR(64)) BEGIN DECLARE usr_ip VARCHAR(15);
SELECT ip INTO usr_ip FROM users WHERE name=login;
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 `radpostauth`; DELIMITER $$ CREATE PROCEDURE `radpostauth` (IN login VARCHAR(64)) BEGIN DECLARE usr_id INT; SELECT id INTO usr_id FROM users WHERE name=login; INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp()); END$$ DELIMITER ;
2) Правим конфиги: bash# ee /usr/local/etc/raddb/sql.conf в конце перед } вставляем: postauth_query = "call radpostauth('%{SQL-User-Name}')" bash# ee /usr/local/etc/raddb/radiusd.conf в секции post-auth расскоментируйте строку: sql 3) Рестартуйте radius: bash# /usr/local/etc/rc.d/radiusd restart 4) Проводите эксперимент и отписываетесь здесь
|
|
« Последнее редактирование: 26 Ноября 2009, 21:55:14 от Efendy »
|
Записан
|
|
|
|
elite
Начальник планеты
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1226
In LAN we trust!
|
|
« Ответ #7 : 27 Ноября 2009, 00:31:10 » |
|
я все придумал, только пока это не смогу выпустить т.к. 52 версия уже перековыряна значительно.
а можно получать как-то промежуточные версии для тестирования?
|
|
|
Записан
|
|
|
|
goletsa
NoDeny
Спец
Карма: 21
Offline
Сообщений: 973
|
|
« Ответ #8 : 27 Ноября 2009, 07:15:38 » |
|
Кстати а финальный апдейт для 50й уже вышел? С блекджеком и девочками?
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #9 : 27 Ноября 2009, 09:11:59 » |
|
Кстати а финальный апдейт для 50й уже вышел? С блекджеком и девочками? планируется 50.33 сделать. Как только баг какойнить найдем и исправим - выпустим стейбл. А если баг не найдем - не выпустим. Так что ищите
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #10 : 27 Ноября 2009, 09:13:22 » |
|
я все придумал, только пока это не смогу выпустить т.к. 52 версия уже перековыряна значительно.
а можно получать как-то промежуточные версии для тестирования? дам, но не сейчас, сейчас 52 с развороченными кишками
|
|
|
Записан
|
|
|
|
elite
Начальник планеты
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1226
In LAN we trust!
|
|
« Ответ #11 : 27 Ноября 2009, 21:24:45 » |
|
Стас, а какую процедуру в мускуле надо создать, чтобы при подключение клиента проверялся радиус-атрибут caller-station-id? или еще лучше физический интерфейс сервера доступа?
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #12 : 27 Ноября 2009, 23:12:11 » |
|
Стас, а какую процедуру в мускуле надо создать, чтобы при подключение клиента проверялся радиус-атрибут caller-station-id? или еще лучше физический интерфейс сервера доступа?
caller-station-id - это что за атрибут? Не мак-адрес случаем? В любом случае делается по стандартной схеме: в sql.conf в процедуру дописываешь этот атрибут, а в самой процедуре его проверяешь.
|
|
|
Записан
|
|
|
|
elite
Начальник планеты
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1226
In LAN we trust!
|
|
« Ответ #13 : 27 Ноября 2009, 23:57:43 » |
|
Стас, а какую процедуру в мускуле надо создать, чтобы при подключение клиента проверялся радиус-атрибут caller-station-id? или еще лучше физический интерфейс сервера доступа?
caller-station-id - это что за атрибут? Не мак-адрес случаем? В любом случае делается по стандартной схеме: в sql.conf в процедуру дописываешь этот атрибут, а в самой процедуре его проверяешь. мак адрес для пппое а как сделать, чтобы процедура из дополнительных данных вытаскивала последнюю ревизию мак-адреса?
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #14 : 28 Ноября 2009, 00:21:45 » |
|
сто раз это обсуждали: SELECT * FROM dopdata WHERE revision=(SELECT MAX(revision) FROM dopdata WHERE parent_id=5 AND field_alias='_mac') что-то типа такого, поиск рулит
|
|
|
Записан
|
|
|
|
|