forum.bitel.ru
http://forum.bitel.ru/

radius, не работает checkDuplicate
http://forum.bitel.ru/viewtopic.php?f=44&t=8267
Страница 1 из 1

Автор:  borisk [ 13 июл 2013, 14:28 ]
Заголовок сообщения:  radius, не работает checkDuplicate

Добрый день!

Есть SE100, обеспечивающий доступ пользователям по PPPoE. Устройство использует SmartEdgeServiceActivator и SmartEdgeProtocolHandler. Настроено:
Код:
# Вендор атрибута, где хранится MAC-адрес
radius.macAddress.vendor=2352
# Код атрибута, где хранится MAC-адрес
radius.macAddress.type=145
# Префикс атрибута (если есть), где хранится MAC-адрес. Например, для cisco avpair
radius.macAddress.prefix=

radius.connection.checkDuplicate=3


Но, увы, получаем следующее. Почему же не работает checkDuplicate? Очень надо, дикие проблемы в сети.

Код:
Authenticator: {57 D0 23 65 A2 AA C6 83 72 21 B5 2E 25 D1 29 51}
Attributes:
  User-Name=viktorm
  NAS-Port-Id=2/16 vlan-id 100 pppoe 10242
  NAS-Identifier=bras0
  User-Password=123456
  NAS-IP-Address=91.217.108.128
  NAS-Port=536881154
  Service-Type=2
  Framed-Protocol=1
  NAS-Port-Type=5
  Platform-Type=4
  Medium-Type=11
  OS-Version=11.1.2.6
  Mac-Addr=c8-60-00-49-07-af
  NAS-Real-Port=536871012

07-13/11:58:35  INFO [rdsLstnr-p-8-t-364] InetRadiusProcessor - REQUEST_AFTER_PREPROCESS:
Packet type: Access-Request
Identifier: 78
Authenticator: {57 D0 23 65 A2 AA C6 83 72 21 B5 2E 25 D1 29 51}
Attributes:
  User-Name=viktorm
  NAS-Port-Id=2/16 vlan-id 100 pppoe 10242
  NAS-Identifier=bras0
  User-Password=123456
  NAS-IP-Address=91.217.108.128
  NAS-Port=536881154
  Service-Type=2
  Framed-Protocol=1
  Calling-Station-Id=c8-60-00-49-07-af
  NAS-Port-Type=5
  Platform-Type=4
  Medium-Type=11
  OS-Version=11.1.2.6
  Mac-Addr=c8-60-00-49-07-af
  NAS-Real-Port=536871012
Common options: {macAddress=c8-60-00-49-07-af}
07-13/11:58:35  INFO [rdsLstnr-p-8-t-364] InetNas - Search by username=viktorm
07-13/11:58:35  INFO [rdsLstnr-p-8-t-364] InetRadiusProcessor - [username=viktorm] Authenticated
 as inetServId:946
07-13/11:58:35  INFO [rdsLstnr-p-8-t-364] InetApplication - inetServ[id=946] balance ok: -98.20
[-300.00]
07-13/11:58:35  INFO [rdsLstnr-p-8-t-364] InetApplication - Too many sessions.
07-13/11:58:35  INFO [rdsLstnr-p-8-t-364] InetRadiusProcessor - Return code=3
07-13/11:58:35  INFO [rdsLstnr-p-8-t-364] InetRadiusProcessor - RESPONSE_BEFORE_POSTPROCESS:
Packet type: Access-Reject
Identifier: 78
Authenticator: {}
Attributes:
  Reply-Message=3

Process time auth: 3


Код:
Информация о версии:

  Клиент: вер. 5.2 сборка 1183 от 29.06.2013 11:05:32
    os: Windows XP; java: Java HotSpot(TM) Client VM, v.1.6.0_37
  Сервер: вер. 5.2 сборка 1517 от 03.07.2013 02:14:48
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_43

  card вер. 5.2 сборка 203 от 21.06.2013 20:24:27
  enaza вер. 5.2 сборка 47 от 26.12.2012 17:59:24
  gorod вер. 5.2 сборка 155 от 25.03.2013 14:32:28
  inet вер. 5.2 сборка 1201 от 27.06.2013 15:50:26
  mps вер. 5.2 сборка 169 от 24.04.2013 11:02:52
  npay вер. 5.2 сборка 203 от 27.05.2013 16:59:08
  rentsoft вер. 5.2 сборка 45 от 26.12.2012 17:59:45

Автор:  snark [ 13 июл 2013, 16:38 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

borisk писал(а):
Код:
07-13/11:58:35  INFO [rdsLstnr-p-8-t-364] InetRadiusProcessor - RESPONSE_BEFORE_POSTPROCESS:
Packet type: Access-Reject
Identifier: 78
Authenticator: {}
Attributes:
  Reply-Message=3


Вроде все нормально, т.к. для повторной сессии RADIUS отвечает Access-Reject.

Автор:  borisk [ 13 июл 2013, 17:55 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

Как нормально? :)
Код:
radius.connection.checkDuplicate=3


Должен сбросить предыдущую сессию и пустить новую. IMHO и AFAIK :)

Автор:  borisk [ 14 июл 2013, 17:49 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

Еще дополнительная информация, Calling-Station-Id устанавливается моим классом, вот таким:
Код:
package ru.usinsknet.modules.inet.dyn.redback;

import ru.bitel.bgbilling.modules.inet.dyn.device.redback.*;

import org.apache.log4j.Logger;

import ru.bitel.bgbilling.kernel.network.dhcp.DhcpProtocolHandler;
import ru.bitel.bgbilling.kernel.network.radius.RadiusDictionary;
import ru.bitel.bgbilling.kernel.network.radius.RadiusPacket;
import ru.bitel.bgbilling.kernel.network.radius.RadiusProtocolHandler;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetDevice;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetDeviceType;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServ;
import ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusProtocolHandler;
import ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.ParameterMap;
import ru.bitel.common.Utils;
import ru.bitel.common.sql.ConnectionSet;
import bitel.billing.server.radius.RadiusStandartAttributes;

public class SmartEdgeProtocolHandler
   extends ru.bitel.bgbilling.modules.inet.dyn.device.redback.SmartEdgeProtocolHandler
    implements RadiusProtocolHandler, DhcpProtocolHandler
{

      private static final Logger logger = Logger.getLogger( SmartEdgeProtocolHandler.class );

   @Override
   public void preprocessAccessRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
      throws Exception
   {
      super.preprocessAccessRequest( request, response, connectionSet );
      setCallingStationId( request );
   }

   @Override
   public void preprocessAccountingRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
       throws Exception
   {
      super.preprocessAccountingRequest( request, response, connectionSet );
      setCallingStationId( request );
   }

   /**
    * Установка MAC-адреса из RADIUS-атрибута.
    * @param request
    */
   protected void setCallingStationId( final RadiusPacket request )
   {
      final Object macAddress = getAttributeValue( request, 2352, 145, null );
      if( macAddress != null )
      {
         if( macAddress instanceof String )
         {
            request.setStringAttribute( -1, RadiusStandartAttributes.Calling_Station_Id, (String)macAddress);
         }
         else
         {
            logger.error( "Unknown type for macAddress attribute." );
         }
      }
   }

}

Автор:  Amir [ 14 июл 2013, 22:39 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

Сейчас все режимы закрывают/сбрасывают старую сессию, т.е. пустить должен только при следующей авторизации (как и в Dialup).

Автор:  borisk [ 14 июл 2013, 22:48 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

Не понял? Так в том то и дело что не пускает. Пользователь долбится до посинения, пока вручную сессию не прибьешь.

Автор:  borisk [ 15 июл 2013, 14:45 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

Amir, еще бы вот эту проблемку решить.

Автор:  Amir [ 15 июл 2013, 16:28 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

Выложили обновление, не забудьте сделать бэкап старых библиотек.
Цитата:
Inet: radius.connection.checkDuplicate=2|3 отрабатывал некорректно.
Inet: radius.connection.checkDuplicate=4 (попытаться закрыть, подождать 5с и завершить), 5 (попытаться закрыть, завершить и пустить), 6 (завершить и пустить).

Автор:  borisk [ 15 июл 2013, 16:29 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

Не совсем понял, то есть старые параметры 1-3 нельзя использовать? Или в чем тонкая разница между 3 и 6?

Автор:  Amir [ 15 июл 2013, 16:35 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

Цитата:
Не совсем понял, то есть старые параметры 1-3 нельзя использовать?
Можно, те исправили и добавили новые.
Цитата:
Или в чем тонкая разница между 3 и 6?
1-3 (и теперь 4), как писал ранее, возвращают ошибку при авторизации, т.е. первый раз абонента не пустит, на второй должно пустить. 5 и 6 тоже самое, что 2 и 3, только должно пустить абонента сразу (как-будто нет ошибки "превышено кол-во соединений").

Автор:  borisk [ 15 июл 2013, 16:42 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

Понял, спасибо! Сейчас будем тестировать.

Автор:  borisk [ 15 июл 2013, 17:55 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

Спасибо, работает!

Автор:  borisk [ 30 июл 2013, 21:25 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

Возник странный эффект. Пока не могу понять связано это или нет. В момент когда сессия у пользователя уже есть (например подвисла), а на сервисе назначен статический IP, то система сессию старую заканчивает, но выдает IP из динамического пула :(

Цитата:
radius.connection.checkDuplicate=5


Цитата:
Клиент: вер. 5.2 сборка 1185 от 15.07.2013 15:12:43
os: Windows XP; java: Java HotSpot(TM) Client VM, v.1.6.0_37
Сервер: вер. 5.2 сборка 1519 от 15.07.2013 15:13:06
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_43

card вер. 5.2 сборка 203 от 21.06.2013 20:24:27
enaza вер. 5.2 сборка 47 от 26.12.2012 17:59:24
gorod вер. 5.2 сборка 155 от 25.03.2013 14:32:28
inet вер. 5.2 сборка 1206 от 15.07.2013 16:17:21
mps вер. 5.2 сборка 169 от 24.04.2013 11:02:52
npay вер. 5.2 сборка 203 от 27.05.2013 16:59:08
rentsoft вер. 5.2 сборка 45 от 26.12.2012 17:59:45

Автор:  a.vozny [ 11 дек 2013, 13:43 ]
Заголовок сообщения:  Re: radius, не работает checkDuplicate

как в логах отражается срабатывание radius.connection.checkDuplicate ?

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/