BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 29 мар 2024, 01:28

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




Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
 Заголовок сообщения: Рестарт Inet-сессии
СообщениеДобавлено: 25 сен 2017, 17:27 
Не в сети

Зарегистрирован: 05 дек 2016, 12:10
Сообщения: 87
Карма: 0
Добрый день,
для абонентов СКД (через портал BGInetWiFiAgent) количество сессий в модуле Inet = 1.
Это правильно, но в случае когда абонент, не закрыв сессию, пытается вводить логин/пароль с другого устройства или через другую точку доступа, то соответственно получает отлуп и авторизация не проходит, приходится ждать пока она по таймауту отвалится сама.

Нужно, чтобы, в таких случаях, активная сессия обрывалась и стартовала новая, как это можно реализовать?
Вероятно в WiFiServiceActivator нужно как-то такое поведение обрабатывать?

Спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 26 сен 2017, 06:56 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
https://docs.bitel.ru/pages/diffpagesby ... Versions=6

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 26 сен 2017, 12:39 
Не в сети

Зарегистрирован: 05 дек 2016, 12:10
Сообщения: 87
Карма: 0
Спасибо, подскажите точнее, если не сложно.
У нас версия сервера 7.0.1267
В приимере конфигурации устройства (https://docs.bitel.ru/pages/viewpage.ac ... getreemode) сказано:
Код:
# Проверка на повторную аутентификацию при Access-Request. Бывает нужна в случаях, когда NAS сбрасывает (теряет) сессию, но
# Stop-пакет не присылает и клиент пытается подключиться повторно, но у него стоит ограничение на максимум одну сессию. При совпадении
# callingStationId с одной из активных сессий и установленным параметром: 1 - осуществляется попытка закрытия старой сессии (connectionClose),
# 2 - попытка закрытия сессии (connectionClose) и завершение ее в базе, не дожидаясь стоп пакета, 3 - завершение в базе.
#radius.connection.checkDuplicate=0

т.е. я ставлю radius.connection.checkDuplicate=2, чтобы был безусловный разрыв сессии, так?

Но вот здесь сказано:
Код:
Без атрибута Calling-Station-Id в Access-Request-пакете данная функция работать не будет. При невозможности присылать Calling-Station-Id в Access-Request можно настроить подмену в обработчике процессора протокола (в предобработке RADIUS-запросов).


Вот пример моего Access-Request, там нет Calling-Station-Id:
Код:
Time: 26.09.2017 01:15:17
Packet type: Access-Request
Identifier: 4
Authenticator: {A2 E8 B0 AA 38 B3 D2 38 63 C1 58 DB 59 AF E0 CD}
Attributes:
  NAS-Identifier=Multiple_access_portal
  User-Name=id1000000
  User-Password=0000000
  NAS-Port=167772167
  Framed-IP-Address=10.0.0.7
  Acct-Session-Id=10.0.0.7_1506377717357

Time: 26.09.2017 01:15:17
Packet type: Access-Accept
Identifier: 4
Authenticator: {A7 B7 F7 E7 D2 29 AF 5A 9D 3D F7 47 90 6E 6B FA}
Attributes:

Process time auth: 0


Time: 26.09.2017 01:15:17
Packet type: Accounting-Request
Identifier: 5
Authenticator: {BB 75 D2 73 71 C7 50 E0 79 07 51 5C 45 AD 4D DE}
Attributes:
  NAS-Identifier=Multiple_access_portal
  User-Name=id1000000
  NAS-Port=167772167
  Framed-IP-Address=10.0.0.7
  Acct-Status-Type=1
  Acct-Session-Id=10.0.0.7_1506377717357


обязательно нужно подменять Calling-Station-Id в Access-Request можно настроить подмену в обработчике процессора протокола (в предобработке RADIUS-запросов)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 26 сен 2017, 13:23 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Код:
radius.connection.checkDuplicate=898

Код:
package ru.skyb.modules.inet.dyn.device;

import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.log4j.Logger;

import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSetRealmMap;
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.access.sa.ProtocolHandlerAdapter;
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.api.common.bean.InetServType;
import ru.bitel.bgbilling.modules.inet.api.server.InetUtils;
import ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor;
import ru.bitel.bgbilling.modules.inet.radius.RadiusAccessRequestHandler;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.ParameterMap;
import ru.bitel.common.Utils;
import ru.bitel.common.inet.IpAddress;
import ru.bitel.common.inet.IpNet;
import ru.bitel.common.sql.ConnectionSet;

public class EricssonRadiusProtocolHandler extends ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusProtocolHandler
{
    @Override
    public void setMacAddress(final RadiusPacket request)
    {
        String macAddress = request.getStringAttribute(2352, 145, null);
        if(macAddress != null)
        {
            String callingStationId = macAddress.replaceAll("\\-", "");
            request.setStringAttribute(-1, 31, callingStationId);
        }
    }
}

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 26 сен 2017, 14:53 
Не в сети

Зарегистрирован: 05 дек 2016, 12:10
Сообщения: 87
Карма: 0
К сожалению, не работает.
Выставляю в конфигурации устройства radius.connection.checkDuplicate=898, задаю обработчик процессора протокола в "Типах устройств", но переопределение MAC-адреса не отрабатывает почему-то, и в лог ничего не пишет.
Подскажите на что еще обратить внимание? Может какой-то связаный параметр в конфигурации пропущен?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 26 сен 2017, 17:42 
Не в сети

Зарегистрирован: 05 дек 2016, 12:10
Сообщения: 87
Карма: 0
Обработчик процессора протокола в типе устройства не удается переопределить, почему-то.
Еще один вопрос, Calling-Station-Id обязательно должен быть MAC-адресом или я могу User-Name туда подставить если разберусь с обработчиком?

Спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 26 сен 2017, 18:23 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
да что угодно можно туда, главное чтобы уникальное, не работает потому что нету Calling-Station-Id
можно на nas атрибут туда подставить, я так и не увидел что в качестве nas у вас, этот пример с redback'a

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 26 сен 2017, 18:31 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Если что checkDuplicate подробно описан на этой странице :
https://docs.bitel.ru/pages/viewpage.ac ... d=73597961


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 26 сен 2017, 18:38 
Не в сети

Зарегистрирован: 05 дек 2016, 12:10
Сообщения: 87
Карма: 0
stark писал(а):
Если что checkDuplicate подробно описан на этой странице :
https://docs.bitel.ru/pages/viewpage.ac ... d=73597961


да, спасибо, что в нужную сторону направили, как раз читаю.
От конечных абонентов MAC-адреса не приходят, попробую переопределить обработчик протокола, только его неудобно отлаживать конечно, каждый раз bgbilling перезапускать приходится.
Можно как-то без перезагрузки инициировать изменения в этом классе?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 26 сен 2017, 18:46 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
a.vo писал(а):
От конечных абонентов MAC-адреса не приходят, попробую переопределить обработчик протокола, только его неудобно отлаживать конечно, каждый раз bgbilling перезапускать приходится.
Можно как-то без перезагрузки инициировать изменения в этом классе?

Надо нажать "перечитать конфигурацию на серверах " в дереве устройств. Там ошибка была- не перечитывало, и это недавно относительно исправляли, может быть у вас старая версия.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 28 сен 2017, 16:46 
Не в сети

Зарегистрирован: 05 дек 2016, 12:10
Сообщения: 87
Карма: 0
stark писал(а):
Надо нажать "перечитать конфигурацию на серверах " в дереве устройств. Там ошибка была- не перечитывало, и это недавно относительно исправляли, может быть у вас старая версия.

Спасибо, все перечитывается, но никак не удается переопределить Calling-Station-Id
Код:
public class InetRadiusProtocolProcessor
   extends ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusProtocolHandler {
   
    @Override
    public void setMacAddress(final RadiusPacket request)
    {
    }

    @Override
    public void setCallingStationId(final RadiusPacket request)
    {
        String userName = request.getStringAttribute(-1, RadiusStandartAttributes.User_Name, null);
        String userPassword = request.getStringAttribute(-1, RadiusStandartAttributes.User_Password, null);
        if (userName != null && userPassword != null)
        {
         String callingStationId = userName + userPassword;
           request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, callingStationId);
        }
    }
}


пробую через request.setOption( InetRadiusProcessor.MAC_ADDRESS, (String) callingStationId );, тоже тишина, там где не было атрибута в request-пакете там и дальше пусто, там где был остается прежний.

Куда копать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 28 сен 2017, 17:56 
Не в сети

Зарегистрирован: 05 дек 2016, 12:10
Сообщения: 87
Карма: 0
в самой функции предобработки Calling-Station-Id проставляется, а в мониторе Inet я потом этого атрибута не вижу.

Код:
preprocessAccessRequest responce: Packet type: Access-Request
Identifier: 117
Authenticator: {89 DB D2 17 52 22 E4 FC D7 45 22 8A 86 02 17 08}
Attributes:
  NAS-Identifier=Multiple_access_portal
  User-Name=id14005
  User-Password=5cBP
  NAS-Port=180880739
  Framed-IP-Address=10.200.5.99
  Acct-Session-Id=10.200.5.99_1506599683764
  Calling-Station-Id=id140055cBP


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 29 сен 2017, 06:58 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
ну дайте скрин этой сессии полностью в мониторе

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 29 сен 2017, 11:07 
Не в сети

Зарегистрирован: 05 дек 2016, 12:10
Сообщения: 87
Карма: 0
Приветствую!
Вот RadiusPacket, которые формируется в предообработке:
Код:
Packet type: Access-Request
Identifier: 96
Authenticator: {95 02 3B 87 3A 9E D9 79 2B 4C 70 C4 47 03 DE 5B}
Attributes:
  NAS-Identifier=Multiple_access_portal
  User-Name=id8544
  User-Password=XhCpe5
  NAS-Port=167839254
  Framed-IP-Address=10.1.6.22
  Acct-Session-Id=10.1.6.22_1506661290287
  Calling-Station-Id=id8544XhCpe5
Вот что вижу в мониторе:
Код:
Time: 29.09.2017 08:01:30
Packet type: Access-Request
Identifier: 96
Authenticator: {95 02 3B 87 3A 9E D9 79 2B 4C 70 C4 47 03 DE 5B}
Attributes:
  NAS-Identifier=Multiple_access_portal
  User-Name=id8544
  User-Password=XhCpe5
  NAS-Port=167839254
  Framed-IP-Address=10.1.6.22
  Acct-Session-Id=10.1.6.22_1506661290287

Time: 29.09.2017 08:01:30
Packet type: Access-Accept
Identifier: 96
Authenticator: {A0 EE 97 35 B1 5B 90 71 A4 3D 5A E8 36 8F AC 5D}
Attributes:

Process time auth: 0

Time: 29.09.2017 08:01:30
Packet type: Accounting-Request
Identifier: 97
Authenticator: {43 D6 53 16 98 B5 55 93 89 94 0D C9 2C B6 02 0F}
Attributes:
  NAS-Identifier=Multiple_access_portal
  User-Name=id8544
  NAS-Port=167839254
  Framed-IP-Address=10.1.6.22
  Acct-Status-Type=1
  Acct-Session-Id=10.1.6.22_1506661290287
Самое интересное, что рестарт сессии в случае даблирования работает, но почему монитор не показывает подмену? Он раньше предобработки забирает данные?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 29 сен 2017, 11:20 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
я просил скрин, а не вывод лога

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 29 сен 2017, 11:31 
Не в сети

Зарегистрирован: 05 дек 2016, 12:10
Сообщения: 87
Карма: 0
skyb писал(а):
я просил скрин, а не вывод лога

пожалуйста, а в чем разница?


Вложения:
inet_monitor.PNG
inet_monitor.PNG [ 18.36 КБ | Просмотров: 6367 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 29 сен 2017, 13:28 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
a.vo писал(а):
skyb писал(а):
я просил скрин, а не вывод лога

пожалуйста, а в чем разница?

ну тут видно что действительно нет мака в нужных полях

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 29 сен 2017, 13:44 
Не в сети

Зарегистрирован: 05 дек 2016, 12:10
Сообщения: 87
Карма: 0
Да, к сожалению в мониторе подменные маки не видны, хотя они меняются и схема работает.
Вероятно монитор отражает оригинальные сессии, до препроцесса.
В любом случае, решение работает, спасибо за помощь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 29 сен 2017, 16:41 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
В мониторе не отображается, потому что у вас не сохраняется информация о выданном Access-Accept.
connection.start.fromAccept=1
И потому что в Accounting-пакетах нет User-Password, соответственно (userName != null && userPassword != null) будет false, соответственно при старте сессии туда уже ничего не подставляется.

Должно быть достаточно добавить
connection.start.fromAccept=1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рестарт Inet-сессии
СообщениеДобавлено: 29 сен 2017, 16:50 
Не в сети

Зарегистрирован: 05 дек 2016, 12:10
Сообщения: 87
Карма: 0
Amir писал(а):
Должно быть достаточно добавить
connection.start.fromAccept=1


Отлично, теперь все отображается.
Спасибо!


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

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


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

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


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

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