forum.bitel.ru http://forum.bitel.ru/ |
|
[6.0] Inet - странный поиск NAS http://forum.bitel.ru/viewtopic.php?f=44&t=8530 |
Страница 1 из 1 |
Автор: | nik247 [ 04 окт 2013, 20:29 ] |
Заголовок сообщения: | [6.0] Inet - странный поиск NAS |
Появилась необходимость завести несколько 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. |
Автор: | barguzin2 [ 04 окт 2013, 22:44 ] |
Заголовок сообщения: | Re: [6.0] Inet - странный поиск NAS |
А уверен что пакеты, приходящие с одного физического NAS имеют разные NAS-Identifier ? (и вообще имеют ли) В студию оба запроса РАДИУСа. Цитата: Добавляем второй NAS-2 c таким же IP, но другим идентификатором... и начались чудеса - "InetServ not found". Вполне логично. Сервис то остался к NAS-1 привязан, а при загрузке НАСов Аксес запомнил последний с этим же NAS-IP, т.е. NAS-2, вот на нем и ищет сервис. Я вроде уже писал что в случае НАСов финт одно физическое - несколько логических не прокатит. В плане NetFlow, ServiceActivator - тут пожалуйста, потому что от обратного идёт, от сервиса идем устройство и что-то с ним делаем и можем для разных сервисов (разных логических устройств) выполнять разные действия на одном физическом. У тебя же поиск сервиса по НАСу, и определить какое же это логическое устройство по пакету с физического, ИМХО - задача нерешаемая. P.S. Мне кажется что начало пропущено. Лучше расскажи ДЛЯ ЧЕГО такая необходимость? Может есть другой вариант решения задачи, которая не озвучена, а озвучен только путь решения, причем тупиковый. |
Автор: | nik247 [ 05 окт 2013, 00:22 ] |
Заголовок сообщения: | Re: [6.0] Inet - странный поиск NAS |
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 |
Автор: | barguzin2 [ 05 окт 2013, 08:58 ] |
Заголовок сообщения: | Re: [6.0] Inet - странный поиск NAS |
Поиск по NAS-Identifier можно проверить, если в preprocessRequest удалить атрибут NAS-IP-Address. Это будет 100%-ная проверка. Хотя в первом посте подозрения на неработоспособность этого типа поиска есть, но лучше еще раз убедиться. А вдруг сработает. |
Автор: | Amir [ 07 окт 2013, 13:39 ] |
Заголовок сообщения: | Re: [6.0] Inet - странный поиск NAS |
preprocessRequest вызывается у обработчика установленного в типе устройства, т.е. устройство уже определено (найдено) - поздно менять идентификатор. А что-то еще необходимо, кроме указания привязки сервисов к разным секторам? Если только привязка, можно два дочерних устройства создать и к ним сервис привязывать. |
Автор: | nik247 [ 07 окт 2013, 16:19 ] |
Заголовок сообщения: | Re: [6.0] Inet - странный поиск NAS |
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 |
Автор: | Amir [ 07 окт 2013, 16:41 ] |
Заголовок сообщения: | Re: [6.0] Inet - странный поиск NAS |
Вроде бы должно получиться, если сектора использовать как агентские устройства - в предобработке извлечь идентификатор сектора и подставить его в request.setOption( InetRadiusProcessor.AGENT_REMOTE_ID, sector ); Тогда сессии будут привязаны как обычно к NAS'у, но дополнительно у них будет agentDeviceId - id сектора и если в мониторе выбрать сектор - то эти сессии отобразятся. У вас используется serv.device.link? Если указать serv.device.link=1 или 2 и сервис будет привязан к сектору, то его не пустит в другой сектор. Если сервис будет привязан к NAS'у - то пустит в оба сектора. |
Автор: | nik247 [ 07 окт 2013, 17:49 ] |
Заголовок сообщения: | Re: [6.0] Inet - странный поиск NAS |
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 - буду его использовать для ограничения, но сначала авторизацию доделать надо. |
Автор: | nik247 [ 07 окт 2013, 18:20 ] |
Заголовок сообщения: | Re: [6.0] Inet - странный поиск NAS |
Вроде добил авторизацию: 1) в обработчике для БС (она же NAS) устанавливается request.setOption( InetRadiusProcessor.AGENT_REMOTE_ID, sector ) для поиска сектора 2) на NAS radius.servSearchMode=6 (поиск сервиса по MAC на устройстве и подчиненных - поиск на секторах) 3) на сервисе вешаем serv.device.link=1 (авторизация только на привязанном устройстве, которая берется с п.1) Итого клиент может авторизоваться только на определенном секторе. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |