Freeradius Xlat: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) м (Защищена страница «Freeradius Xlat» [edit=sysop:move=sysop]) |
Sirmax (обсуждение | вклад) |
||
Строка 13: | Строка 13: | ||
+----+----------+------------------+----+------------------------------------------------------------+ |
+----+----------+------------------+----+------------------------------------------------------------+ |
||
</PRE> |
</PRE> |
||
− | (обратить внимание на обратные кавычки, в которые взят запрос) |
+ | (обратить внимание на обратные кавычки, в которые взят запрос) <BR> |
Аналогично, для передачи лимитов по скорости (но вместо того что бы указать для каждого %{User-Name} можно указать значения по умолчани. |
Аналогично, для передачи лимитов по скорости (но вместо того что бы указать для каждого %{User-Name} можно указать значения по умолчани. |
||
<PRE> |
<PRE> |
||
Строка 26: | Строка 26: | ||
</PRE> |
</PRE> |
||
+ | Обратить внимание, что для cisco передается Cisco-AVPair, для VPN на базе Linux я использую атрибуты PPPD-Upstream-Speed-Limit / PPPD-Downstream-Speed-Limit со значением скорости в килобитах (а не в битах_ в секунду. Т.к. радиус не знает этих атрибутов, то их следует вписать в словарь. |
Версия 09:07, 11 января 2010
FreeRadius Xlat
FreeRadius предоставляет интересные возможности для опереривания с данными. В моем случае мне не хотелось для каждого абонента делать дублирование данных из биллинга ( в моем случае таблица mtraf) в radcheck и radreply.
select * from radcheck; +----+----------+------------------+----+------------------------------------------------------------+ | id | username | attribute | op | value | +----+----------+------------------+----+------------------------------------------------------------+ | 4 | tan | Simultaneous-Use | := | 1 | | 7 | tan | Password | := | `%{sql:SELECT pwd FROM mtraf WHERE domain='%{User-Name}'}` | +----+----------+------------------+----+------------------------------------------------------------+
(обратить внимание на обратные кавычки, в которые взят запрос)
Аналогично, для передачи лимитов по скорости (но вместо того что бы указать для каждого %{User-Name} можно указать значения по умолчани.
# DEFAULT Framed-Protocol == PPP Framed-Protocol = PPP, Service-Type = Framed-User, Cisco-AVPair += "%{sql:SELECT CONCAT('lcp:interface-config=rate-limit input ',ul_in*1024, ' ', ROUND(ul_in*1000/8), ' ', ROUND(ul_in*1000/8), ' conform-action transmit exceed-action drop') from mtraf where domain='%{User-Name}'}", Cisco-AVPair += "%{sql:SELECT CONCAT('lcp:interface-config=rate-limit output ',ul_in*1024, ' ', ROUND(ul_out*1000/8), ' ', ROUND(ul_out*1000/8), ' conform-action transmit exceed-action drop') from mtraf where domain='%{User-Name}'}", PPPD-Upstream-Speed-Limit := "%{sql:SELECT ul_in from mtraf where domain='%{User-Name}'} ", PPPD-Downstream-Speed-Limit := "%{sql:SELECT ul_out from mtraf where domain='%{User-Name}'} "
Обратить внимание, что для cisco передается Cisco-AVPair, для VPN на базе Linux я использую атрибуты PPPD-Upstream-Speed-Limit / PPPD-Downstream-Speed-Limit со значением скорости в килобитах (а не в битах_ в секунду. Т.к. радиус не знает этих атрибутов, то их следует вписать в словарь.