BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 21 июн 2025, 05:03

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: [6.0] Inet - странный поиск NAS
СообщениеДобавлено: 04 окт 2013, 20:29 
Появилась необходимость завести несколько NAS с одинаковыми NAS-IP-Address, но разными NAS-Identifier.
Фактически железяка одна - сервисы разные.
Предварительно настроили один NAS-1 и прицепили на него сервис - все ОК - авторизация есть....
Добавляем второй NAS-2 c таким же IP, но другим идентификатором... и начались чудеса - "InetServ not found".
Меняем IP на NAS-2 на другой - опять все ОК.
Возвращаем IP на NAS-2, как NAS-1 - опять "InetServ not found".
Перекидываем сервис с NAS-1, на NAS-2 и о чудо - авторизация есть...
Согласно документации:
Код:
Поиск NAS'а для пришедшего пакета производится сначала по атрибуту NAS-Identifier с поиском по идентификатору устройства, затем по NAS-IP-Address с поиском по хостам устройств. Сессия сервиса относится к устройству, представляющему NAS.

По факту NAS-Identifier вообще не используется для поиска, а поиск по NAS-IP-Address возвращает NAS с максимальным deviceId.


Вернуться к началу
  
 
 Заголовок сообщения: Re: [6.0] Inet - странный поиск NAS
СообщениеДобавлено: 04 окт 2013, 22:44 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
А уверен что пакеты, приходящие с одного физического NAS имеют разные NAS-Identifier ? (и вообще имеют ли) В студию оба запроса РАДИУСа.
Цитата:
Добавляем второй NAS-2 c таким же IP, но другим идентификатором... и начались чудеса - "InetServ not found".

Вполне логично. Сервис то остался к NAS-1 привязан, а при загрузке НАСов Аксес запомнил последний с этим же NAS-IP, т.е. NAS-2, вот на нем и ищет сервис.

Я вроде уже писал что в случае НАСов финт одно физическое - несколько логических не прокатит. В плане NetFlow, ServiceActivator - тут пожалуйста, потому что от обратного идёт, от сервиса идем устройство и что-то с ним делаем и можем для разных сервисов (разных логических устройств) выполнять разные действия на одном физическом. У тебя же поиск сервиса по НАСу, и определить какое же это логическое устройство по пакету с физического, ИМХО - задача нерешаемая.

P.S. Мне кажется что начало пропущено. Лучше расскажи ДЛЯ ЧЕГО такая необходимость? Может есть другой вариант решения задачи, которая не озвучена, а озвучен только путь решения, причем тупиковый.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Inet - странный поиск NAS
СообщениеДобавлено: 05 окт 2013, 00:22 
barguzin2 писал(а):
А уверен что пакеты, приходящие с одного физического NAS имеют разные NAS-Identifier ? (и вообще имеют ли) В студию оба запроса РАДИУСа.
Цитата:
Добавляем второй NAS-2 c таким же IP, но другим идентификатором... и начались чудеса - "InetServ not found".

Вполне логично. Сервис то остался к NAS-1 привязан, а при загрузке НАСов Аксес запомнил последний с этим же NAS-IP, т.е. NAS-2, вот на нем и ищет сервис.

Я вроде уже писал что в случае НАСов финт одно физическое - несколько логических не прокатит. В плане NetFlow, ServiceActivator - тут пожалуйста, потому что от обратного идёт, от сервиса идем устройство и что-то с ним делаем и можем для разных сервисов (разных логических устройств) выполнять разные действия на одном физическом. У тебя же поиск сервиса по НАСу, и определить какое же это логическое устройство по пакету с физического, ИМХО - задача нерешаемая.

P.S. Мне кажется что начало пропущено. Лучше расскажи ДЛЯ ЧЕГО такая необходимость? Может есть другой вариант решения задачи, которая не озвучена, а озвучен только путь решения, причем тупиковый.

100% имеют разный NAS-Identifier, та как я их сам в обработчике устанавливаю...
Код:
  User-Name=00:BD:3A:E0:39:61
  NAS-Identifier=BG-1
  User-Password=
  NAS-Port-Id=BG-1
  NAS-IP-Address=192.168.1.174
  NAS-Port=0
  Service-Type=2
  Calling-Station-Id=00-BD-3A-E0-39-61
  Acct-Session-Id=82400524
  NAS-Port-Type=19
  Called-Station-Id=02-1B-B1-02-AA-54:BG-1
Common options: {macAddress=00:BD:3A:E0:39:61}
radius 10-04/16:43:57 DEBUG [rdsLstnr-p-8-t-1] RadiusProcessor - Create new radius session.
radius 10-04/16:43:57  INFO [rdsLstnr-p-8-t-1] InetNas - Search by mac on device=00bd3ae03961
radius 10-04/16:43:57  INFO [rdsLstnr-p-8-t-1] InetRadiusProcessor - [username=00:BD:3A:E0:39:61] InetServ not found (and is not card).
radius 10-04/16:43:57  INFO [rdsLstnr-p-8-t-1] InetRadiusProcessor - Return code=1

Код:
  User-Name=00:BD:3A:E0:39:61
  NAS-Identifier=BG-2
  User-Password=
  NAS-Port-Id=BG-2
  NAS-IP-Address=192.168.1.174
  NAS-Port=0
  Service-Type=2
  Calling-Station-Id=00-BD-3A-E0-39-61
  Acct-Session-Id=82400527
  NAS-Port-Type=19
  Called-Station-Id=02-1B-B1-02-AA-55:BG-2
Common options: {macAddress=00:BD:3A:E0:39:61}
radius 10-04/17:16:09 DEBUG [rdsLstnr-p-8-t-4] RadiusProcessor - Create new radius session.
radius 10-04/17:16:09  INFO [rdsLstnr-p-8-t-4] InetNas - Search by mac on device=00bd3ae03961
radius 10-04/17:16:09 DEBUG [rdsLstnr-p-8-t-4] InetRadiusProcessor - Password verification disabled.
radius 10-04/17:16:09  INFO [rdsLstnr-p-8-t-4] InetRadiusProcessor - [username=00:BD:3A:E0:39:61] Authenticated as inetServId:16

Все равно не могу понять почему нельзя найти NAS, с IP которого пришел запрос...
Согласно доке ищем NAS по идентификатору: находим (можем еще и IP проверить) или если не находим, то ищем дальше по IP.
Исходная задача: беспроводная точка доступа с двумя секторами. Доступна радиус авторизация. Но нужно закрепить сервис клиента за конкретным сектором.
Вот и получается: два NAS c одним IP, но разными идентификаторами. Все логично. Вот только поиск по NAS-Identifier не работает.
Странно почему Inet запоминает последний IP, ведь NAS инициализирутся парой NAS-Identifier и IP:
Код:
radius-processor 10-04/16:44:39  INFO [event-proc-p-2-t-1] NasList - LOADED NAS: Nas id: BG-1; ip: 192.168.1.174
radius-processor 10-04/16:44:39  INFO [event-proc-p-2-t-1] NasList - LOADED NAS: Nas id: BG-2; ip: 192.168.1.174


Вернуться к началу
  
 
 Заголовок сообщения: Re: [6.0] Inet - странный поиск NAS
СообщениеДобавлено: 05 окт 2013, 08:58 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Поиск по NAS-Identifier можно проверить, если в preprocessRequest удалить атрибут NAS-IP-Address. Это будет 100%-ная проверка. Хотя в первом посте подозрения на неработоспособность этого типа поиска есть, но лучше еще раз убедиться. А вдруг сработает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Inet - странный поиск NAS
СообщениеДобавлено: 07 окт 2013, 13:39 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
preprocessRequest вызывается у обработчика установленного в типе устройства, т.е. устройство уже определено (найдено) - поздно менять идентификатор.
А что-то еще необходимо, кроме указания привязки сервисов к разным секторам? Если только привязка, можно два дочерних устройства создать и к ним сервис привязывать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Inet - странный поиск NAS
СообщениеДобавлено: 07 окт 2013, 16:19 
Amir писал(а):
preprocessRequest вызывается у обработчика установленного в типе устройства, т.е. устройство уже определено (найдено) - поздно менять идентификатор.
А что-то еще необходимо, кроме указания привязки сервисов к разным секторам? Если только привязка, можно два дочерних устройства создать и к ним сервис привязывать.

Я понял, что обработчик запускается позже чем, чем происходит происходит поиска по идентификатору - установка его в обработчике уже значения не имеет.
Получается возможны 3 варианта:

1) Создается База(NAS c IP, radius.servSearchMode=6) и к ней 2 сектора, как дочерние устройства (с любым идентификатором и без IP)
Клиентов привязываем к секторам. В мониторе видно сколько всего на базе (NAS) + сколько на каждом секторе(по привязанным сервисам).
Все бы ничего, но клиент может авторизоваться на любом секторе и реальная картина по авторизации по секторам не будет соответствовать действительности.

2) Фактически в radius-access (и также в radius-accounting) приходит идентификатор сектора, но он находится в NAS-Port-Id. А вот NAS-Identifier у них одинаковый. Возможно ли как-то переопределить NAS-Identifier=NAS-Port-Id до поиска устройства? Я это делал в обработчике, но он вызывался уже после поиска устройства. Тогда клиент и привязан и может зарегистрироваться только на своем секторе.

3) Использовать Radius-proxy, в котором переписывать NAS-Identifier=NAS-Port-Id. Правда реализация этого еще под вопросом...

Очень бы хотелось реализацию по п.2


Вернуться к началу
  
 
 Заголовок сообщения: Re: [6.0] Inet - странный поиск NAS
СообщениеДобавлено: 07 окт 2013, 16:41 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Вроде бы должно получиться, если сектора использовать как агентские устройства - в предобработке извлечь идентификатор сектора и подставить его в request.setOption( InetRadiusProcessor.AGENT_REMOTE_ID, sector );
Тогда сессии будут привязаны как обычно к NAS'у, но дополнительно у них будет agentDeviceId - id сектора и если в мониторе выбрать сектор - то эти сессии отобразятся.

У вас используется serv.device.link? Если указать serv.device.link=1 или 2 и сервис будет привязан к сектору, то его не пустит в другой сектор.
Если сервис будет привязан к NAS'у - то пустит в оба сектора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Inet - странный поиск NAS
СообщениеДобавлено: 07 окт 2013, 17:49 
Amir писал(а):
Вроде бы должно получиться, если сектора использовать как агентские устройства - в предобработке извлечь идентификатор сектора и подставить его в request.setOption( InetRadiusProcessor.AGENT_REMOTE_ID, sector );
Тогда сессии будут привязаны как обычно к NAS'у, но дополнительно у них будет agentDeviceId - id сектора и если в мониторе выбрать сектор - то эти сессии отобразятся.

У вас используется serv.device.link? Если указать serv.device.link=1 или 2 и сервис будет привязан к сектору, то его не пустит в другой сектор.
Если сервис будет привязан к NAS'у - то пустит в оба сектора.

Спасибо за подсказку AGENT_REMOTE_ID - попробовал: кое-что вышло, но дальше тупик.
1) в обработчике для БС (она же NAS) устанавливается request.setOption( InetRadiusProcessor.AGENT_REMOTE_ID, sector )
2) radius.servSearchMode=1 - сектор находится, но вот сервис не находится, так как он его нужно искать по MAC.
Код:
Common options: {agentRemoteId=BG-1, macAddress=00:BD:3A:E0:39:61}
radius 10-07/14:19:34 DEBUG [rdsLstnr-p-9-t-5] RadiusProcessor - Create new radius session.
radius 10-07/14:19:34 DEBUG [rdsLstnr-p-9-t-5] InetNas - agentRemoteId=BG-1
radius 10-07/14:19:34  INFO [rdsLstnr-p-9-t-5] InetNas - Found agentDevice:12
radius 10-07/14:19:34 DEBUG [rdsLstnr-p-9-t-5] InetNas - findServ agentDeviceRuntime=ru.bitel.bgbilling.modules.inet.runtime.device.InetDeviceRuntime@169674
radius 10-07/14:19:34  INFO [rdsLstnr-p-9-t-5] InetNas - Search serv on deviceId=12; interfaceId=-1
radius 10-07/14:19:34  INFO [rdsLstnr-p-9-t-5] InetNas - Search by mac on device=00bd3ae03961
radius 10-07/14:19:34  INFO [rdsLstnr-p-9-t-5] InetRadiusProcessor - [username=00:BD:3A:E0:39:61] InetServ not found (and is not card).
radius 10-07/14:19:34  INFO [rdsLstnr-p-9-t-5] InetRadiusProcessor - Return code=1
radius 10-07/14:19:34  INFO [rdsLstnr-p-9-t-5] InetRadiusProcessor - RESPONSE_BEFORE_POSTPROCESS:
Packet type: Access-Reject

Здесь получается radius.servSearchMode=1 не совсем правильный. Так как нужно сначала искать устройство по agentRemoteId, а вот уже потом на этом устройстве по MAC. Как такой поиск указать?

Спасибо за напоминание про serv.device.link - буду его использовать для ограничения, но сначала авторизацию доделать надо.


Вернуться к началу
  
 
 Заголовок сообщения: Re: [6.0] Inet - странный поиск NAS
СообщениеДобавлено: 07 окт 2013, 18:20 
Вроде добил авторизацию:
1) в обработчике для БС (она же NAS) устанавливается request.setOption( InetRadiusProcessor.AGENT_REMOTE_ID, sector ) для поиска сектора
2) на NAS radius.servSearchMode=6 (поиск сервиса по MAC на устройстве и подчиненных - поиск на секторах)
3) на сервисе вешаем serv.device.link=1 (авторизация только на привязанном устройстве, которая берется с п.1)
Итого клиент может авторизоваться только на определенном секторе.


Вернуться к началу
  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.069s | 25 Queries | GZIP : On ]