Оптимизация Free Radius
Оптимизация Free Radius
Собственно как настроить написано в документации а я лишь приведу пример запросов которые решают две проблемы: блокирование пользователей по собственным признакам (эти признаки можно писать в таблицу без хупа ядра, у нас это используется для блокировки вирусоносителей. Визуально это выглядит не как ошибка 691, а как ошибка 734, мы передаем радиусу изначально кривой атрибут, зато техподдержка сразу знает почему пользователя не пускает в интернет), а второй решает проблему с долгим поиском в таблице звонков когда там несколько миллионов записей, тут не используется инсерт при старте сессии, поиск и апдейт завершении , а только инсерт при завершении (начало сессии вычисляется из атрибута {Acct-Session-Time} ):
authorize_check_query="SELECT ip_groups.ip_group_id, ip_groups.uname, 'Password', ip_groups.upass, ':=' FROM UTM5.ip_groups, UTM5.iptraffic_service_links, UTM5.service_links, UTM5.accounts WHERE ip_groups.uname = '%{SQL-User-Name}' AND ip_groups.is_deleted='0' AND iptraffic_service_links.is_deleted='0' AND service_links.is_deleted='0' AND accounts.is_deleted='0' AND accounts.is_blocked='0' AND ip_groups.ip_group_id=iptraffic_service_links.ip_group_id AND iptraffic_service_links.id=service_links.id AND service_links.account_id=accounts.id"
authorize_reply_query="SELECT ip_group_id, uname, 'Framed-IP-Address', inet_ntoa(ip_groups.ip & 0xFFFFFFFF) AS a, ':=' FROM UTM5.ip_groups WHERE uname='%{SQL-User-Name}' AND is_deleted='0' AND av='' UNION SELECT ip_group_id, uname, 'Auth-Type', 'Reject' as a, ':=' FROM ip_groups WHERE uname='%{SQL-User-Name}' AND is_deleted='0' AND av='1'"
accounting_stop_query="INSERT INTO dhs_sessions_log (account_id, recv_date, last_update_date, Framed_IP_Address, NAS_Port, Acct_Delay_Time, Acct_Session_Id, NAS_Port_Type, User_Name, Service_Type, Framed_Protocol, NAS_IP_Address, NAS_Id, Acct_Status_Type, Acct_Input_Packets, Acct_Input_Octets, Acct_Output_Packets, Acct_Output_Octets, Acct_Session_Time, Called_Station_Id, Calling_Station_Id) SELECT basic_account, (%l-%{Acct-Session-Time}), '%l', ((inet_aton('%{Framed-IP-Address}') &0xFFFFFFFF)-4294967296), '%{NAS-Port}', '%{Acct-Delay-Time}', '%{Acct-Session-Id}', '%{NAS-Port-Type}', '%{SQL-User-Name}', '%{Service-Type}', '%{Framed-Protocol}', ((inet_aton('%{NAS-IP-Address}')&0xFFFFFFFF)-4294967296), '%{NAS-IP-Address}', '2', '%{Acct-Input-Packets}', '%{Acct-Input-Octets}', '%{Acct-Input-Octets}', '%{Acct-Output-Octets}', '%{Acct-Session-Time}', '%{Tunnel-Server-Endpoint}', '%{Calling-Station-Id}%{Tunnel-Client-Endpoint}' FROM users WHERE login='%{SQL-User-Name}';"
authorize_check_query="SELECT ip_groups.ip_group_id, ip_groups.uname, 'Password', ip_groups.upass, ':=' FROM UTM5.ip_groups, UTM5.iptraffic_service_links, UTM5.service_links, UTM5.accounts WHERE ip_groups.uname = '%{SQL-User-Name}' AND ip_groups.is_deleted='0' AND iptraffic_service_links.is_deleted='0' AND service_links.is_deleted='0' AND accounts.is_deleted='0' AND accounts.is_blocked='0' AND ip_groups.ip_group_id=iptraffic_service_links.ip_group_id AND iptraffic_service_links.id=service_links.id AND service_links.account_id=accounts.id"
authorize_reply_query="SELECT ip_group_id, uname, 'Framed-IP-Address', inet_ntoa(ip_groups.ip & 0xFFFFFFFF) AS a, ':=' FROM UTM5.ip_groups WHERE uname='%{SQL-User-Name}' AND is_deleted='0' AND av='' UNION SELECT ip_group_id, uname, 'Auth-Type', 'Reject' as a, ':=' FROM ip_groups WHERE uname='%{SQL-User-Name}' AND is_deleted='0' AND av='1'"
accounting_stop_query="INSERT INTO dhs_sessions_log (account_id, recv_date, last_update_date, Framed_IP_Address, NAS_Port, Acct_Delay_Time, Acct_Session_Id, NAS_Port_Type, User_Name, Service_Type, Framed_Protocol, NAS_IP_Address, NAS_Id, Acct_Status_Type, Acct_Input_Packets, Acct_Input_Octets, Acct_Output_Packets, Acct_Output_Octets, Acct_Session_Time, Called_Station_Id, Calling_Station_Id) SELECT basic_account, (%l-%{Acct-Session-Time}), '%l', ((inet_aton('%{Framed-IP-Address}') &0xFFFFFFFF)-4294967296), '%{NAS-Port}', '%{Acct-Delay-Time}', '%{Acct-Session-Id}', '%{NAS-Port-Type}', '%{SQL-User-Name}', '%{Service-Type}', '%{Framed-Protocol}', ((inet_aton('%{NAS-IP-Address}')&0xFFFFFFFF)-4294967296), '%{NAS-IP-Address}', '2', '%{Acct-Input-Packets}', '%{Acct-Input-Octets}', '%{Acct-Input-Octets}', '%{Acct-Output-Octets}', '%{Acct-Session-Time}', '%{Tunnel-Server-Endpoint}', '%{Calling-Station-Id}%{Tunnel-Client-Endpoint}' FROM users WHERE login='%{SQL-User-Name}';"
Re: Оптимизация Free Radius
Если не секрет, в какой именно документации описано?Magnum72 писал(а):Собственно как настроить написано в документации
--
signed by Citius
signed by Citius
Re: Оптимизация Free Radius
У FreeRadiusilya писал(а):Если не секрет, в какой именно документации описано?Magnum72 писал(а):Собственно как настроить написано в документации
Re: Оптимизация Free Radius
В доке на фрирадиус не описаны корректные SQL запросы для работы с UTM.Magnum72 писал(а):У FreeRadiusilya писал(а):Если не секрет, в какой именно документации описано?Magnum72 писал(а):Собственно как настроить написано в документации
--
signed by Citius
signed by Citius
Re: Оптимизация Free Radius
Вот поэтому я их и отписал...ilya писал(а):В доке на фрирадиус не описаны корректные SQL запросы для работы с UTM.Magnum72 писал(а):У FreeRadiusilya писал(а):Если не секрет, в какой именно документации описано?Magnum72 писал(а):Собственно как настроить написано в документации
Re: Оптимизация Free Radius
hmm. Accounting-Start query я не увидел в твоих, он не нужен?Magnum72 писал(а):Вот поэтому я их и отписал...ilya писал(а):В доке на фрирадиус не описаны корректные SQL запросы для работы с UTM.Magnum72 писал(а):У FreeRadiusilya писал(а):Если не секрет, в какой именно документации описано?Magnum72 писал(а):Собственно как настроить написано в документации
Колбек фрирад отдавать не будет судя по всему?
--
signed by Citius
signed by Citius
Re: Оптимизация Free Radius
Вот поэтому я их и отписал... [/quote]
hmm. Accounting-Start query я не увидел в твоих, он не нужен?
Колбек фрирад отдавать не будет судя по всему?[/quote]
Прикрутить по аналогии просто, мне просто калбек не нужен
hmm. Accounting-Start query я не увидел в твоих, он не нужен?
Колбек фрирад отдавать не будет судя по всему?[/quote]
Прикрутить по аналогии просто, мне просто калбек не нужен
Re: Оптимизация Free Radius
Мне бы для дайлапа нормальные запросы поиметь.Magnum72 писал(а):Magnum72 писал(а): Вот поэтому я их и отписал...Прикрутить по аналогии просто, мне просто калбек не нуженilya писал(а): hmm. Accounting-Start query я не увидел в твоих, он не нужен?
Колбек фрирад отдавать не будет судя по всему?
А еще если бы с поддержкой Interim-Updates ...
А то твои запросы даже Session-Timeout не могут выдать, это чисто авторизация...
--
signed by Citius
signed by Citius
Re: Оптимизация Free Radius
Мне бы для дайлапа нормальные запросы поиметь.ilya писал(а):
Прикрутить по аналогии просто, мне просто калбек не нужен
А еще если бы с поддержкой Interim-Updates ...
А то твои запросы даже Session-Timeout не могут выдать, это чисто авторизация...[/quote]
Вообще то длительность сессии и начало сессии у меня вычисляется и складывается в базу при завершении сессии. Специально так сделано чтобы избежать лишнего SELECT и UPDATE в таблицу из 2 миллионов записей.
Re: Оптимизация Free Radius
Вообще то длительность сессии и начало сессии у меня вычисляется и складывается в базу при завершении сессии. Специально так сделано чтобы избежать лишнего SELECT и UPDATE в таблицу из 2 миллионов записей.[/quote]Magnum72 писал(а):Мне бы для дайлапа нормальные запросы поиметь.ilya писал(а):
Прикрутить по аналогии просто, мне просто калбек не нужен
А еще если бы с поддержкой Interim-Updates ...
А то твои запросы даже Session-Timeout не могут выдать, это чисто авторизация...
Ну вот я и говорю, что неприменимо у меня.
--
signed by Citius
signed by Citius
Код: Выделить всё
authorize_reply_query="SELECT ip_group_id, uname, 'Framed-IP-Address', inet_ntoa(ip_groups.ip & 0xFFFFFFFF) AS a, ':=' FROM UTM5.ip_groups WHERE uname='%{SQL-User-Name}' AND is_deleted='0' AND av='' UNION SELECT ip_group_id, uname, 'Auth-Type', 'Reject' as a, ':=' FROM ip_groups WHERE uname='%{SQL-User-Name}' AND is_deleted='0' AND av='1'"
Auth-Type := Reject т.к. Access-Accept уже отослан так что отпадает необходимость писать
Код: Выделить всё
UNION SELECT ip_group_id, uname, 'Auth-Type', 'Reject' as a, ':=' FROM ip_groups WHERE uname='%{SQL-User-Name}' AND is_deleted='0' AND av='1'"