Биллинговая система Nodeny
22 Ноября 2024, 14:55:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2 3 4
  Печать  
Автор Тема: кто Radius использует  (Прочитано 23409 раз)
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« : 26 Ноября 2009, 16:55:23 »

Я тут тестирую работу NoDeny с Hotspot  столкнулся с одним моментом, на который, возможно, я раньше не обратил внимание, а возможно просто такой проблемы нет в ваших случаях. Вкратце, в биллинге есть несколько процедур написанных для Radius. При проверке логина запускается процедура radcheck. Если логин не верный - радиус отшивает клиента. Если логин верный, то радиус запускает процедуру radreply для получения параметров соединения. В этой процедуре, кроме параметров соединения, мы записывает в базу о том, что клиент авторизовался. Так вот, тестируя Hotspot я с толкнулся с тем, что вне зависимости от успешности авторизации, радиус запускает radreply хотя по логике не должен этого делать. В чем это отражается? В том, что с неверным паролем клиент становится авторизованным примерно на полторы минуты. Проверьте, пожалуйста эту ситуацию, т.е. попробуйте авторизоваться (например, по пппое) с неверный паролем. Соединение не должно создастся, но важно посмотреть появился ли зеленый ключик через несколько секунд напротив учетной записи в админке.

Если такая проблема подтвердится, то лечится она очень просто, путем переноса записи авторизации в процедуру старта accounting-update
Записан
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 973


Просмотр профиля
« Ответ #1 : 26 Ноября 2009, 17:00:55 »

Цитировать
1     18:02:16      PPPoE
Угу, загорается ключик при неверном пароле.
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1226

In LAN we trust!

358714596
Просмотр профиля
« Ответ #2 : 26 Ноября 2009, 17:07:43 »

Стас, а ты не придумал еще реализацию выдачи динамического ип адреса по пппое? Улыбающийся
Записан
Cell
Модератор
Спец
*****

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #3 : 26 Ноября 2009, 17:42:09 »

Проблему подтверждаю, авторизация vpn (mpd+radius). Ключик зеленый ровно 2 минуты.
Если можно, расскажи подробно как вылечить.
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1226

In LAN we trust!

358714596
Просмотр профиля
« Ответ #4 : 26 Ноября 2009, 17:54:51 »

Проблему подтверждаю, авторизация vpn (mpd+radius). Ключик зеленый ровно 2 минуты.
Если можно, расскажи подробно как вылечить.
скоро будет патч Улыбающийся
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #5 : 26 Ноября 2009, 18:13:18 »

Стас, а ты не придумал еще реализацию выдачи динамического ип адреса по пппое? Улыбающийся
я все придумал, только пока это не смогу выпустить т.к. 52 версия уже перековыряна значительно. Для "старых" версий у меня нет ресурсов дублировать нововведения. Так что придется подождать. Сколько - не знаю. Сейчас ковыряю хотспот, здесь  и протестирую новую версию. В хотспотах, как оказалось, не все так проблематично, например chilli берет на себя большую часть действий, например, перехват get-запросов, обращение к радиусу и, что мне очень нравится, мониторинг  освобождения dрcp-выданного адреса и блокирование ip спуффинга. Правда, из-за того, что chilli на себя взяла большую часть работы, есть некоторые сложности, например, она перехватывает только get-запросы, в результате не получится авторизоваться на opera-mini - эти кренделя забирают странички post-запросами. Так же есть проблема с килянием сессий, которую щас решаю.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #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 Offline

Сообщений: 1226

In LAN we trust!

358714596
Просмотр профиля
« Ответ #7 : 27 Ноября 2009, 00:31:10 »

я все придумал, только пока это не смогу выпустить т.к. 52 версия уже перековыряна значительно.
а можно получать как-то промежуточные версии для тестирования?
Записан
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 973


Просмотр профиля
« Ответ #8 : 27 Ноября 2009, 07:15:38 »

Кстати а финальный апдейт для 50й уже вышел? С блекджеком и девочками? Улыбающийся
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #9 : 27 Ноября 2009, 09:11:59 »

Кстати а финальный апдейт для 50й уже вышел? С блекджеком и девочками? Улыбающийся
планируется 50.33 сделать. Как только баг какойнить найдем и исправим - выпустим стейбл. А если баг не найдем - не выпустим. Так что ищите
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #10 : 27 Ноября 2009, 09:13:22 »

я все придумал, только пока это не смогу выпустить т.к. 52 версия уже перековыряна значительно.
а можно получать как-то промежуточные версии для тестирования?
дам, но не сейчас, сейчас 52 с развороченными кишками
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1226

In LAN we trust!

358714596
Просмотр профиля
« Ответ #11 : 27 Ноября 2009, 21:24:45 »

Стас, а какую процедуру в мускуле надо создать, чтобы при подключение клиента проверялся радиус-атрибут caller-station-id? или еще лучше физический интерфейс сервера доступа?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #12 : 27 Ноября 2009, 23:12:11 »

Стас, а какую процедуру в мускуле надо создать, чтобы при подключение клиента проверялся радиус-атрибут caller-station-id? или еще лучше физический интерфейс сервера доступа?
caller-station-id - это что за атрибут? Не мак-адрес случаем? В любом случае делается по стандартной схеме: в sql.conf в процедуру дописываешь этот атрибут, а в самой процедуре его проверяешь.
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1226

In LAN we trust!

358714596
Просмотр профиля
« Ответ #13 : 27 Ноября 2009, 23:57:43 »

Стас, а какую процедуру в мускуле надо создать, чтобы при подключение клиента проверялся радиус-атрибут caller-station-id? или еще лучше физический интерфейс сервера доступа?
caller-station-id - это что за атрибут? Не мак-адрес случаем? В любом случае делается по стандартной схеме: в sql.conf в процедуру дописываешь этот атрибут, а в самой процедуре его проверяешь.
мак адрес Улыбающийся для пппое
а как сделать, чтобы процедура из дополнительных данных вытаскивала последнюю ревизию мак-адреса?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #14 : 28 Ноября 2009, 00:21:45 »

сто раз это обсуждали:

Код:
SELECT * FROM dopdata WHERE revision=(SELECT MAX(revision) FROM dopdata WHERE parent_id=5 AND field_alias='_mac')

что-то типа такого, поиск рулит
Записан
Страниц: [1] 2 3 4
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!