How to send disconnect message to the NAS?

Russell Mike radius.sir at gmail.com
Fri Sep 26 16:55:25 CEST 2014


1.) You make sure accounting is working
2.) Your SQL counters are working
3.) You have set proper radius attributes

if you are using chilli NAS then "ChilliSpot-Max-Total-Octets" AS CHECK
ITEM & REPLY ITEM AS WELL would be the attribute to control.

Thanks
RM --



On Fri, Sep 26, 2014 at 2:39 PM, Xin <knightluffy at live.com> wrote:

> Hi,
> I want to send disconnect message to the user who has exceeded the limited
> traffic. I have done the following steps:
> 1.  Create a sqlCounter:
>   sqlcounter monthlytrafficcounter {
>     counter-name = Monthly-Traffic
>     check-name = Max-Monthly-Traffic
>     reply-name = Monthly-Traffic-Limit
>     sqlmod-inst = sql
>     key = User-Name
>     reset = monthly
>     query = "SELECT SUM(acctinputoctets + acctoutputoctets) FROM radacct
> WHERE U serName='%{%k}' AND UNIX_TIMESTAMP(AcctStartTime) > '%b'"
> }
>
> 2. add the monthlytrafficcounter to "sites-enabled/default" authorize
> section.
>
> 3. It worked when user login to NAS(NAS reject the user's request), but
> failed when the user connection connected. The Accounting request like
> following below:
> ================================================================
> rad_recv: Accounting-Request packet from host NAS-IP port 48378, id=188 ,
> length=175
>         Acct-Status-Type = Interim-Update
>         Acct-Session-Id = "1411720910-19"
>         NAS-Port-Type = Virtual
>         Service-Type = Framed-User
>         NAS-Port = 19
>         NAS-Port-Id = "radius"
>         NAS-IP-Address = NAS-IP
>         Called-Station-Id = "NAS-IP[4500]"
>         Calling-Station-Id = "User-IP[5476]"
>         User-Name = "kirito"
>         Framed-IP-Address = 10.0.0.1
>         Acct-Output-Octets = 549938
>         Acct-Output-Packets = 602
>         Acct-Input-Octets = 77110
>         Acct-Input-Packets = 785
>         Acct-Session-Time = 122
>         NAS-Identifier = "strongSwan"
> # Executing section preacct from file
> /usr/local/etc/raddb/sites-enabled/default
> +group preacct {
> ++[preprocess] = ok
> [acct_unique] Hashing 'NAS-Port = 19,NAS-Identifier =
> "strongSwan",NAS-IP-Addres s = NAS-IP,Acct-Session-Id =
> "1411720910-19",User-Name = "kirito"'
> [acct_unique] Acct-Unique-Session-ID = "afe2593237df22fa".
> ++[acct_unique] = ok
> [suffix] No '@' in User-Name = "kirito", looking up realm NULL [suffix] No
> such realm "NULL"
> ++[suffix] = noop
> +} # group preacct = ok
> # Executing section accounting from file
> /usr/local/etc/raddb/sites-enabled/defa
> ult
> +group accounting {
> [detail]        expand: %{Packet-Src-IP-Address} -> NAS-IP
> [detail]        expand:
> /usr/local/var/log/radius/radacct/%{%{Packet-Src-IP-Addr
> ess}:-%{Packet-Src-IPv6-Address}}/detail-%Y%m%d ->
> /usr/local/var/log/radius/rad
> acct/NAS-IP/detail-20140926
> [detail]
> /usr/local/var/log/radius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-
> Src-IPv6-Address}}/detail-%Y%m%d expands to
> /usr/local/var/log/radius/radacct/11
> 6.251.216.197/detail-20140926
> [detail]        expand: %t -> Fri Sep 26 21:19:07 2014
> ++[detail] = ok
> [sql]   expand: %{Stripped-User-Name} ->
> [sql]   ... expanding second conditional
> [sql]   expand: %{User-Name} -> kirito
> [sql]   expand: %{%{User-Name}:-DEFAULT} -> kirito
> [sql]   expand: %{%{Stripped-User-Name}:-%{%{User-Name}:-DEFAULT}} ->
> kirito
> [sql] sql_set_user escaped user --> 'kirito'
> [sql]   expand: %{Acct-Input-Gigawords} ->
> [sql]   ... expanding second conditional
> [sql]   expand: %{Acct-Input-Octets} -> 77110
> [sql]   expand: %{Acct-Output-Gigawords} ->
> [sql]   ... expanding second conditional
> [sql]   expand: %{Acct-Output-Octets} -> 549938
> [sql]   expand:            UPDATE radacct           SET
> framedipadd
> ress = '%{Framed-IP-Address}',              acctsessiontime     =
> '%{Acct-Sessio
> n-Time}',              acctinputoctets     =
> '%{%{Acct-Input-Gigawords}:-0}'
> <<
>  32 |                                    '%{%{Acct-Input-Octets}:-0}',
>     acctoutputoctets    = '%{%{Acct-Output-Gigawords}:-0}' << 32 |
>                       '%{%{Acct-Output-Octets}:-0}'           WHERE
> acctsessioni
> d = '%{Acct-Session-Id}'           AND username        = '%{SQL-User-Name}'
>       AND nasipaddress    = '%{NAS-IP-Address}' ->            UPDATE
> radacct
>        SET              framedipaddress = '10.0.0.1',
> acctsessionti
> me     = '122',              acctinputoctets     = '0'  << 32 |
>                    '77110',              acctoutputoctets    = '0' << 32 |
>                               '549938'           WHERE acctsessionid =
> '14117209
> 10-19'           AND username        = 'kirito'           AND na
> rlm_sql (sql): Reserving sql socket id: 12 rlm_sql (sql): Released sql
> socket id: 12
> ++[sql] = ok
> ++[exec] = noop
> [attr_filter.accounting_response]       expand: %{User-Name} -> kirito
> attr_filter: Matched entry DEFAULT at line 12
> ++[attr_filter.accounting_response] = updated
> +} # group accounting = updated
> Sending Accounting-Response of id 188 to NAS-IP port 48378 Finished request
> 6.
> Cleaning up request 6 ID 188 with timestamp +157 Going to the next request
> Ready to process requests.
>
> =================================================================
>
> I think it may have a way to send the Disconnect Message to NAS when
> FreeRadius server get the Accounting-Request message. But I don't know how
> do I do.
>
> Appreciate for your response.
> -
> List info/subscribe/unsubscribe? See
> http://www.freeradius.org/list/users.html
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20140926/b26a1a4d/attachment-0001.html>


More information about the Freeradius-Users mailing list