URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 24
[ Назад ]

Исходное сообщение
"vpn для каждого пользователя по расписанию"

Отправлено djakson , 01-Авг-12 11:40 
Привет, Всем!

Маршрутизатор 2921 поднят VPN авторизация локальная ааа база на циске.
Каждому пользователя сопоставлен конкретный IP и прописан ACL для доступа к конкретному оборудованию.
aaa new-model
aaa authentication ppp default local
aaa authorization network default local

username PetrIvanov password 7 ХХХХХХХХХХХ
username PertIvanov aaa attribute list VPN1

aaa attribute list VPN1
attribute type addr 192.168.3.9 service ppp protocol ip

permit ip 192.168.3.64 0.0.0.31 host 192.168.3.9 time-range VPN1 log-input

Задача: разграничить доступ пользователей по времени то есть: Петя Иванов имеет доступ к своему оборудованию начиная с текущего понедельника с 08:00 до 19:00 по пятницу сроком две недели.
Что сейчас сделано временное решение
time-range VPN1
periodic daily 08:00 to 19:00
Естественно срок окончания и начала разрешения делается вручную - ФУ!

Вопрос как организовать и на чем с минимальными затратами времени и средств.
Пробовал связки:
1. freeradius(Centos)+daloradius+mysql - не нашел задание расписания пользователю.
2. freeradius(Centos)+dialup_admin+mysql - тоже
3. Описана данная функциональность в Cisco Secure ACS 5.0 for VMWare ESX но цена 265709 руб 8-0.


Содержание

Сообщения в этом обсуждении
"vpn для каждого пользователя по расписанию"
Отправлено fantom , 01-Авг-12 13:19 
>[оверквотинг удален]
> Что сейчас сделано временное решение
> time-range VPN1
>  periodic daily 08:00 to 19:00
> Естественно срок окончания и начала разрешения делается вручную - ФУ!
> Вопрос как организовать и на чем с минимальными затратами времени и средств.
> Пробовал связки:
> 1. freeradius(Centos)+daloradius+mysql - не нашел задание расписания пользователю.
> 2. freeradius(Centos)+dialup_admin+mysql - тоже
> 3. Описана данная функциональность в Cisco Secure ACS 5.0 for VMWare ESX
> но цена 265709 руб 8-0.

т.к. в радиусе можно выдать атрибут с заданеим параметра продолжительности сессии если вход разрешен или запретить вход - остается только задать правила и собственно все :)

или вы хотите менюшку с галочкой  - пускать с-по с учетом праздников, переносов выходных, пятен на солнце и лунных фаз?


"vpn для каждого пользователя по расписанию"
Отправлено djakson , 01-Авг-12 13:33 
> т.к. в радиусе можно выдать атрибут с заданеим параметра продолжительности сессии если
> вход разрешен или запретить вход - остается только задать правила и
> собственно все :)

А можно примерчик кратенький

> или вы хотите менюшку с галочкой  - пускать с-по с учетом
> праздников, переносов выходных, пятен на солнце и лунных фаз?

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



"vpn для каждого пользователя по расписанию"
Отправлено fantom , 01-Авг-12 13:47 
>> т.к. в радиусе можно выдать атрибут с заданеим параметра продолжительности сессии если
>> вход разрешен или запретить вход - остается только задать правила и
>> собственно все :)
> А можно примерчик кратенький

Атрибут Session-Timeout - устанавливает максимальную продолжительность сессии,
например если подключаются в 9:00, а работать можно только до 11:00 - выдаете Session-Timeout = 7200, и через 2 часа сессия разорвется сервером, а если уже 11:01 - абонента попросту не пустит.
Остается наваять соответствующее правило выдачи радиусу из базы данных нужных параметров.

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


"vpn для каждого пользователя по расписанию"
Отправлено djakson , 01-Авг-12 14:01 
> Атрибут Session-Timeout - устанавливает максимальную продолжительность сессии,
> например если подключаются в 9:00, а работать можно только до 11:00 -
> выдаете Session-Timeout = 7200, и через 2 часа сессия разорвется сервером,
> а если уже 11:01 - абонента попросту не пустит.
> Остается наваять соответствующее правило выдачи радиусу из базы данных нужных параметров.

Если разрешено работать с 09 до 11 и с 18 до 19
То как рассчитать Session-Timeout он же ведь будет разным? или по Вашему если подключится не в 9:00 а в 10:50 то с лимитом 7200 он будет работать дольше положенного.

Можно пример конфига. ПЛИЗ.


"vpn для каждого пользователя по расписанию"
Отправлено McS555 , 01-Авг-12 15:18 
>> Атрибут Session-Timeout - устанавливает максимальную продолжительность сессии,
>> например если подключаются в 9:00, а работать можно только до 11:00 -
>> выдаете Session-Timeout = 7200, и через 2 часа сессия разорвется сервером,
>> а если уже 11:01 - абонента попросту не пустит.
>> Остается наваять соответствующее правило выдачи радиусу из базы данных нужных параметров.
> Если разрешено работать с 09 до 11 и с 18 до 19
> То как рассчитать Session-Timeout он же ведь будет разным? или по Вашему
> если подключится не в 9:00 а в 10:50 то с лимитом
> 7200 он будет работать дольше положенного.
> Можно пример конфига. ПЛИЗ.

ример если подключаются в 9:00, а работать можно только до 11:00 - выдаете Session-Timeout = 7200, и через 2 часа сессия разорвется сервером, а если уже 11:01

Я думаю, что через два часа сесия отвалиться, а в 11:01, уже можно будет опять зайти на 2 часа.
Возможно ошибаюсь


"vpn для каждого пользователя по расписанию"
Отправлено fantom , 01-Авг-12 17:23 
>[оверквотинг удален]
>> То как рассчитать Session-Timeout он же ведь будет разным? или по Вашему
>> если подключится не в 9:00 а в 10:50 то с лимитом
>> 7200 он будет работать дольше положенного.
>> Можно пример конфига. ПЛИЗ.
> ример если подключаются в 9:00, а работать можно только до 11:00 -
> выдаете Session-Timeout = 7200, и через 2 часа сессия разорвется сервером,
> а если уже 11:01
> Я думаю, что через два часа сесия отвалиться, а в 11:01, уже
> можно будет опять зайти на 2 часа.
> Возможно ошибаюсь

Ошибаетесь вы или нет - определяет только логика выдачи параметров радиусу для передачи радиус сервером этих параметров уже далее серверу доступа.
Кто мешает Session-Timeout прежде чем передавать - расчитывать? и в условиях расчета применять любые условия вплоть до времени суток, фаз лунного цикла или плотности тумана за окном :)

Как вы думаете биллинги диалаповские как работали?
Если у вас оставалось денег на 30 минут то биллинг радиусу выдавал 1800 сек, это значение подставлялось в параметр Session-Timeout и по истечении этого времени модемный пул сбрасывал вас с линии, соответсвенно если денег оставалось на 0 минут вас не пускало вообще  и т.д. и т.п..
Все вами перечисленное было реализовано в диалапных биллинговых системах еще (баробанная дробь) 15 лет назад!



"vpn для каждого пользователя по расписанию"
Отправлено djakson , 01-Авг-12 20:29 

> Все вами перечисленное было реализовано в диалапных биллинговых системах еще (баробанная
> дробь) 15 лет назад!

Ну дайте мне кусок конфига для примера чтобы я проверил и убедился. Пока только доводы.
Мне бы совет реального админа от провайдеров - они то уж точно это делали и знают что нужно.


"vpn для каждого пользователя по расписанию"
Отправлено fantom , 02-Авг-12 11:30 
>> Все вами перечисленное было реализовано в диалапных биллинговых системах еще (баробанная
>> дробь) 15 лет назад!
> Ну дайте мне кусок конфига для примера чтобы я проверил и убедился.
> Пока только доводы.
> Мне бы совет реального админа от провайдеров - они то уж точно
> это делали и знают что нужно.

Ёпрст....
Откуда и как вы берете параметры для freeradius-а? судя по фразе

freeradius(Centos)+daloradius+mysql - таки запросом из mysql базы...

http://www.hilik.org.ua/freeradius/
Кусок radius.conf

authorize_reply_query = "SELECT id, UserName, Attribute, Value, op \
          FROM ${authreply_table} \
          WHERE Username = '%{SQL-User-Name}' \
          ORDER BY id"

пишите туда что-то типа:
authorize_reply_query = "SELECT my_attrib_funk(<параметры для функции>)"

В базе создаете функцию my_attrib_funk, которая будет выплевывать что вам нужно.
Уже в фукции можете воротить все, что угодно.