Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    RADIUS: Атрибут Max-Session-Time не определен.

    RADIUS: Атрибут Max-Session-Time не определен.

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    RADIUS: Атрибут Max-Session-Time не определен., RouterOS
     
    NealC
    Guest
    #1
    0
    24.07.2006 11:55:00
    Привет всем! Мы настраиваем точку доступа. Хотим продавать пользователям ограниченное время использования, после чего им придется докупить время, чтобы снова подключиться. Мне кажется, что атрибут RADIUS, который мне нужен для передачи точке доступа, это Max-Session-Time. Однако, в руководстве написано: Max-Session-Time > - максимальная продолжительность сессии (время работы), которую разрешено пользователю. Получается, я просто предполагаю, что это должно работать как-то вроде «войдите и используйте». К сожалению, атрибут Max-Session-Time не объявлен ни в одном из словарей RADIUS, которые я посмотрел (те, которые идут с FreeRADIUS, и те, на которые есть ссылки на http://www.mikrotik.com/docs/ros/2.9/guide/aaa_radius). Не мог бы кто-нибудь подсказать: нужен ли мне именно этот атрибут? Поддерживается ли он на RB532? Каков его номер атрибута и тип (целое число?) — чтобы я мог добавить его в мои словари. Я нашел похостую тему с Nov 2005 на http://forum.mikrotik.com/t/max-session-time/3858/1. Тогда человек смог использовать атрибут Session-Timeout — но он не подходит мне (потому что пользователь может просто снова войти в систему с тем же именем пользователя/паролем). Заранее спасибо.

    P.S. RB532 с ROS2.9.27 на Firmware 1.13
     
     
     
    cmit
    Guest
    #2
    0
    24.07.2006 12:11:00
    Максимальное время сессии – это не то, что вам нужно, если использовать это значение отдельно. Этот атрибут сообщает RouterOS, как долго может длиться одна "сессия" входа, то есть, разрешает ли пользователю находиться онлайн не более, скажем, 1 (непрерывный) час. Но это не мешает ему зайти снова сразу же. То, что вам нужно, нужно делать через скрипты на вашем RADIUS-сервере. Вам нужна база данных, где для каждого пользователя настроено "общее оставшееся время онлайн". Затем отправьте ЭТО значение как Max-Session-Time на ваш Hotspot при входе. Таким образом, пользователь не сможет находиться онлайн дольше, чем у него есть кредит. При каждом выходе пользователя вам нужно, чтобы на вашем RADIUS-сервере скрипт вычитал время, которое пользователь фактически был онлайн (RADIUS: Acct-Session-Time), из его оставшегося кредита. Когда пользователь заходит снова, он получит Max-Session-Time, который отражает его предыдущее использование. Надеюсь, это было достаточно понятно – просто здесь слишком жарко, чтобы думать о чем-то слишком сложном… С уважением, Christian Meis
     
     
     
    savage
    Guest
    #3
    0
    24.07.2006 14:50:00
    Классический случай использования модуля sqlcounter (experimental.conf – хотя это уже не экспериментальный модуль).

    sqlcounter noresetcounter {
       counter-name = Max-All-Session-Time
       check-name = Max-All-Session
       sqlmod-inst = sql
       key = User-Name
       reset = never
       query = "SELECT SUM(AcctSessionTime) FROM RadiusAccounting WHERE UserName=TRIM(LOWER('%{%k}'))"
     }

     sqlcounter dailycounter {
       counter-name = Daily-Session-Time
       check-name = Max-Daily-Session
       sqlmod-inst = sql
       key = User-Name
       reset = daily
       query = "SELECT SUM(AcctSessionTime - GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) FROM RadiusAccounting WHERE UserName=TRIM(LOWER('%{%k}')) AND UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'"
     }

     sqlcounter monthlycounter {
       counter-name = Monthly-Session-Time
       check-name = Max-Monthly-Session
       sqlmod-inst = sql
       key = User-Name
       reset = monthly
       query = "SELECT SUM(AcctSessionTime - GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) FROM RadiusAccounting WHERE UserName=TRIM(LOWER('%{%k}')) AND UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'"
     }

    Просто небольшой пример… Очевидно, выше просто определяется его работа, я оставлю за вами конфигурацию, настройку атрибутов и соответствующие разделы в файле конфигурации radius.
     
     
     
    NealC
    Guest
    #4
    0
    24.07.2006 15:04:00
    Спасибо, Кристиан - твое объяснение по поводу скриптов было абсолютно понятным. Savage - спасибо за пример скрипта, очень ценно. Затем отправь ЭТО значение как Max-Session-Time. Ну, я бы отправил, но Max-Session-Time не обнаруживается в словарях... К тому же, я немного запутался в разнице между Max-Session-Time и Session-Timeout - согласно http://www.mikrotik.com/docs/ros/2.9/guide/aaa_radius: Session-Timeout - перезаписывает session-timeout в конфигурации по умолчанию и согласно http://www.mikrotik.com/docs/ros/2.9/guide/aaa_hotspot session-timeout > (время; по умолчанию: 0s) - время ожидания сессии (максимальное разрешенное время сессии) для клиента. По истечении этого времени пользователь будет автоматически выключен. Итак, похоже, Session-Timeout ведет себя так же, как и Max-Session-Time? Зачем иметь 2 атрибута RADIUS, которые делают одно и то же - я, должно быть, что-то упускаю. Кажется немного странным, что нет атрибута RADIUS, который соответствует опции ‘Limit Uptime’ для пользователей Hotspot - в конце концов, два других варианта на этой вкладке (‘Limit Bytes In’ и ‘Limit Bytes Out’) соответствуют атрибутам RADIUS (Recv-Limit и Xmit-Limit), и ‘Limit Uptime’ мне кажется довольно важной функциональностью для точки доступа. Я изучу скрипты, как и было предложено, но пока у меня ощущение, что я, вероятно, просто буду создавать пользователей на MT с установленным ‘Limit Uptime’ - мы небольшая WISP-компания, и это не убьет меня, если я буду делать это вручную вначале (и это обеспечит немного более быстрый запуск). Если у кого-либо из вас (или у кого-то еще!!) есть какие-либо дальнейшие мысли или идеи, я буду очень благодарен, если вы опубликуете их здесь. А пока еще раз спасибо за ваши ответы.
     
     
     
    savage
    Guest
    #5
    0
    24.07.2006 15:14:00
    Max-Session-Time — это элемент проверки, а не элемент ответа. Поэтому Radius-сервер получает этот атрибут откуда-то, проверяет его и разрешает или запрещает аутентификацию на его основе. В данном случае Max-Session-Time предоставляется непосредственно Radius-сервером на основе предоставленных мною настроек. Session-Timeout := 5 (Элемент ответа). Пользователь подключается, NAS разрешает пользователю оставаться подключенным в течение 5 секунд, а затем отключает пользователя. Как только пользователь переподключается, он снова будет отключен через 5 секунд и так далее. Max-All-Session := 500 (Элемент проверки). Пользователь подключается, Radius проверяет через свою базу данных учёта, как долго пользователь был в сети. Если пользователь находится в сети более 500 секунд, Radius-сервер запретит аутентификацию пользователя. Поскольку это элемент проверки, он не имеет никакого отношения к NAS. Max-Daily-Session := 500 (Элемент проверки). Пользователь подключается, Radius проверяет через свою базу данных учёта, как долго пользователь был в сети. Если пользователь находится в сети более 500 секунд за текущий день, аутентификация запрещена. Опять же, это элемент проверки, он не имеет никакого отношения к NAS. Max-Monthly-Session := 500 (Элемент проверки), то же самое, что и Daily-Session, только рассчитывается за период текущего месяца вместо дня. Опять же, элемент проверки, опять же, он не имеет никакого отношения к NAS. В двух словах: Session-Timeout — это элемент ответа (Он отправляется в NAS), и NAS выполняет работу по отключению пользователя после истечения периода ожидания. Max-All-Session (который вы можете легко переименовать в Max-Session-Time, отредактировав конфигурацию), Max-Daily-Session, Max-Monthly-Session, Max-AnythingYouWantToSetupInRLMSQLCounter-Session — это элемент проверки. Он обрабатывается внутри Radius-сервера и НИКОГДА не отправляется в NAS. Radius-сервер выполняет вычисления, чтобы определить, разрешить или запретить аутентификацию пользователя после истечения определенного периода времени в сети… Я не думаю, что могу быть понятнее, чем это… Это не ракетостроение?
     
     
     
    NealC
    Guest
    #6
    0
    24.07.2006 15:48:00
    Слушай, может, тут какое-то недопонимание? Когда я выше упоминал атрибут Max-Session-Time, я не имел в виду ничего из твоего скрипта. Я имел в виду атрибут, описанный здесь: http://www.mikrotik.com/docs/ros/2.9/guide/aaa_radius, в разделе ‘Supported RADIUS Attributes’. Под заголовком ‘Access-Accept’ есть (частичная) запись для ‘Max-Session-Time’. Поскольку он указан как поддерживаемый атрибут для сообщений access-accept (которые, насколько я понимаю, передаются только от RADIUS к NAS – то есть это атрибут ОТВЕТА), я ожидал, что смогу отправить этот атрибут на AP. В связи с этим мне было интересно, чем он отличается от атрибута Session-Timeout, описанного непосредственно выше на той же странице, а также почему он указан там, а не в словарях.
     
     
     
    savage
    Guest
    #7
    0
    24.07.2006 15:56:00
    Окей, давайте поиграем с этой идеей. Пользователь ABC подключается. Он аутентифицируется через RADIUS, RADIUS отправляет Session-Timeout := 600. В этом случае NAS знает, что через 600 секунд ему нужно разорвать соединение для пользователя ABC. Вроде бы всё отлично. А теперь отправим Max-Session-Time. Пользователь ABC подключается. Он аутентифицируется через RADIUS, RADIUS отправляет Max-Session-Time := 600. NAS НИКОГДА не узнает, когда ему нужно отключить этого пользователя, раз NAS не имеет представления о том, сколько времени пользователь уже провёл онлайн. Расчёт ОДНОЗНАЧНО должен выполняться RADIUS-сервером – так как RADIUS-сервер является единственным элементом в цепочке аутентификации, у которого есть данные учёта… Ну, в общем… Это то, что вам нужно. Реализуйте это, поиграйте с этим, и потом вернитесь и поблагодарите нас, когда всё будет готово. RADIUS-сервер получает максимальное разрешённое время из атрибута проверки (который вы добавляете в файл пользователей как часть блока аутентификации пользователя – похоже на пароль), RADIUS-сервер затем проверяет, сколько времени пользователь уже провёл онлайн. Таким образом, Max-Session-Time равен общему разрешённому времени минус время, которое уже было использовано. Разница затем отправляется NAS в качестве Session-Timeout, чтобы NAS разорвал соединение, когда будет использовано максимальное разрешённое время. Работает безупречно, делал это сотни раз…
     
     
     
    NealC
    Guest
    #8
    0
    26.07.2006 15:00:00
    Вижу, что NAS не знает, сколько времени уже проведено онлайн. Ну да, вполне логично. (Хотя все еще немного интересно, для чего предназначен атрибут max-session-time…) Только что закончил первые тесты с этими скриптами, и они работают как часы (я ни на минуту не сомневался, что так и будет!). Спасибо вам обоим за помощь.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры