On Mon, 3 Jul 2000, Hugh Irvine wrote:

> Radiator should only try to directly query the NAS if you are enforcing strict
> simultaneous use with a NasType set for your Client clauses. If you don't have
> a NasType set, it won't be queried.

The funny part here is it's querying NASes that _aren't_ in my client
list. It's querying a NAS to which one of my users is logged in but that
NAS talks is talking to a RADIUS server one or more "proxy hops" away.

> And when you mention stuck sessions, are these really stuck on the NAS, or are
> they simply remnants in the session database?

They're not stuck on the NASes, just in my session database. It primarily
seems to be happening to users who come in to the numbers where the
authentication goes through another RADIUS server that's proxying from
me. I see very few happening on my numbers,

> It would be useful to see a copy of your configuration file (no secrets)
> together with an example trace 4 debug showing what is happening.

I'l have to catch the trace sometime today, but I've started by attaching
my radius.cfg. Beware, it's big and hairy, mostly owing to having to sort
out classes of service based only on packet contents (such as
distinguishing Merit calls from everything else by looking for a
Huntgroup-Name attribute). The MARVIN stuff is a custom auth module that
talks to our proprietary MySQL billing and provisioning system. It
shouldn't be causing any problems since it's only doing authentications
and not logging or session management.

> BTW - the latest version of Radiator is 2.16.1.

Yep I noticed that after I sent my letter...I've been neglecting to keep
up with the list for the past three or four months. I'll have to install a
test copy around here and validate the MARVIN module with it so I can
deploy it.

-- 
Senior Systems Engineer      | "Where are we going, and what am I doing in
BigNet, Inc.                 |  this handbasket?"
Phone: 248-771-1261          |      - Paraphrased from various people's .sigs
  Fax: 248-771-1269          | 
LogDir          /var/log/radius
DbDir           /usr/local/etc/raddb
Trace           3

# We'll use the official IANA assignments

AuthPort        1812
AcctPort        1813

# Skip S23 on Portmasters since it's the D channel on PRIs.

LivingstonOffs  22
LivingstonHole  1

# Default local client

<Client localhost>
        Secret          xxxxxxx
        DupInterval     0
        DefaultRealm    mich.com
</Client>

# Pull the rest of the client list from the SQL server

<ClientListSQL>
        DBSource        DBI:mysql:xxxx:xxxxx.xx.xx
        DBUsername      xxxx
        DBAuth          xxxx

        GetClientQuery  SELECT HIGH_PRIORITY                                           
                         \
                                
NASIdentifier,SharedSecret,NULL,NULL,DefaultRealm,NASType,                      \
                                SNMPCommunity, NULL,NULL,NULL,NULL,NULL                
                         \
                        FROM RadiatorClients

</ClientList>

# Keep the session list in the SQL server

<SessionDatabase SQL>
        DBSource        DBI:mysql:xxxx:xxxxx.xx.xx
        DBUsername      xxxx
        DBAuth          xxxx

        AddQuery        INSERT INTO RadiatorSessions                                   
                         \
                                (UserName, NASIdentifier, NASPort, AcctSessionID, 
When, FramedIPAddress,        \
                                PortType, ServiceType)                                 
                         \
                        VALUES                                                         
                         \
                                ('%n', '%N', '%{NAS-Port}', '%{Acct-Session-Id}', 
%{Timestamp}, \
                                '%{Framed-IP-Address}', '%{NAS-Port-Type}', 
'%{Service-Type}')

        DeleteQuery     DELETE FROM RadiatorSessions                                   
                         \
                        WHERE UserName = '%n' AND NASIdentifier = '%N' AND NASPort = 
'%{NAS-Port}'

        ClearNasQuery   DELETE FROM RadiatorSessions WHERE NASIdentifier = '%N'

        CountQuery      SELECT HIGH_PRIORITY                                           
                         \
                                NASIdentifier,NASPort,AcctSessionID                    
                         \
                        FROM RadiatorSessions WHERE UserName = '%n'
</SessionDatabase>
        
# Authentication definition for BigNet Standard service

<AuthBy MARVIN>
        Identifier      BigNetStandard

        DBSource        DBI:mysql:xxxx:xxxxx.xx.xx
        DBUsername      xxxx
        DBAuth          xxxx

        ServiceCode     0
</AuthBy>

# Authentication definition for BigNet Toll-Free Service.

<AuthBy MARVIN>
        Identifier      BigNetTollFree

        DBSource        DBI:mysql:xxxx:xxxxx.xx.xx
        DBUsername      xxxx
        DBAuth          xxxx

        ServiceCode     1
</AuthBy>

# Authentication definition for Merit Standard Service

<AuthBy MARVIN>
        Identifier      MeritStandard

        DBSource        DBI:mysql:xxxx:xxxxx.xx.xx
        DBUsername      xxxx
        DBAuth          xxxx

        ServiceCode     100
</AuthBy>

# Authentication definition for Merit Global Service

<AuthBy MARVIN>
        Identifier      MeritGlobalService

        DBSource        DBI:mysql:xxxx:xxxxx.xx.xx
        DBUsername      xxxx
        DBAuth          xxxx

        ServiceCode     102
</AuthBy>

# Authentication definition for logging to the SQL database

<AuthBy SQL>
        Identifier      LogToSQL

        DBSource        DBI:mysql:xxxx:xxxxx.xx.xx
        DBUsername      xxxx
        DBAuth          xxxx

        AuthSelect

        AccountingTable RadiatorDaily
        AcctColumnDef   UserName, User-Name
        AcctColumnDef   When, Timestamp, integer
        AcctColumnDef   AcctStatusType, Acct-Status-Type, integer
        AcctColumnDef   AcctDelayTime, Acct-Delay-Time, integer
        AcctColumnDef   AcctInputOctets, Acct-Input-Octets, integer
        AcctColumnDef   AcctOutputOctets, Acct-Output-Octets, integer
        AcctColumnDef   AcctSessionID, Acct-Session-Id
        AcctColumnDef   AcctSessionTime, Acct-Session-Time, integer
        AcctColumnDef   AcctTerminateCause, Acct-Terminate-Cause, integer
        AcctColumnDef   NASIPAddress, NAS-IP-Address
        AcctColumnDef   NASPort, NAS-Port, integer
        AcctColumnDef   PortType, Port-Type, integer
        AcctColumnDef   ServiceType, Service-Type, integer
        AcctColumnDef   FramedProtocol, Framed-Protocol, integer
        AcctColumnDef   FramedIPAddress, Framed-IP-Address
        AcctColumnDef   AscendDataRate, Ascend-Data-Rate, integer
        AcctColumnDef   ConnectInfo, Connect-Info
        AcctColumnDef   Huntgroup, Huntgroup-Name
        AcctColumnDef   Ownership, Ownership, integer
        AcctColumnDef   CallingStationID, Calling-Station-Id
        AcctColumnDef   CalledStationID, Called-Station-Id
</AuthBy>

# Island Connection

<AuthBy RADIUS>
        Identifier      IslandConnection
        Host            1.1.1.1
        Secret          xxxxxxx
        AuthPort        1645
        AcctPort        1646
</AuthBy>

# Legacy authentication definitions

<AuthBy RADIUS>
        Identifier      OldNorthLink
        Host            xxxxxxx.xxx.xx
        Secret          xxxxxxx
        AuthPort        1812
        AcctPort        1813
</AuthBy>

# Authentication for the MichTel toll-free numbers. These show up
# as called to a specific Called-Station-Id.

<Handler Called-Station-Id = 7711112, Realm = northlink.net>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          BigNetTollFree
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler Called-Station-Id = 7711112, Realm = benzie.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          BigNetTollFree
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler Called-Station-Id = 7711112, Realm = straitsarea.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          BigNetTollFree
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler Called-Station-Id = 7711112, Realm = galsys.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          BigNetTollFree
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler Called-Station-Id = 7711112>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          BigNetTollFree
        </AuthBy>
</Handler>

# Authentication for the Merit Global Service numbers. These show up
# with a specific huntgroup name.

<Handler Huntgroup-Name = merit-global-service, Realm = northlink.net>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          MeritGlobalService
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler Huntgroup-Name = merit-global-service, Realm = benzie.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          MeritGlobalService
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler Huntgroup-Name = merit-global-service, Realm = straitsarea.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          MeritGlobalService
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler Huntgroup-Name = merit-global-service, Realm = galsys.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          MeritGlobalService
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler Huntgroup-Name = merit-global-service>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          MeritGlobalService
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route,Token
        </AuthBy>
</Handler>

# Authentication for BigNet Standard Service.  We differentiate this from
# Merit Standard service by the lack of a realm name.

<Handler Huntgroup-Name = , Realm = islandconnection.net>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          IslandConnection
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Realm>

<Handler Huntgroup-Name = , Realm = northlink.net>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          OldNorthLink
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Realm>

<Handler Huntgroup-Name = , Realm = benzie.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          OldNorthLink
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Realm>

<Handler Huntgroup-Name = , Realm = straitsarea.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          OldNorthLink
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Realm>

<Handler Huntgroup-Name = , Realm = galsys.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          OldNorthLink
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Realm>

<Handler Huntgroup-Name = >
        PostAuthHook    file:"%D/tracking.pl"
        PasswordLogFileName     %L/password.log
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          BigNetStandard
        </AuthBy>
</Realm>

# Finally, here is the authentication for Merit Standard Service.
# It should be matched only if the huntgroup name is present,
# and it isn't the MGS huntgroup, and the called station ID isn't
# the toll-free number.

<Handler Realm = northlink.net>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          OldNorthLink
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler Realm = benzie.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          OldNorthLink
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler Realm = straitsarea.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          OldNorthLink
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler Realm = galsys.com>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          OldNorthLink
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

<Handler>
        PostAuthHook    file:"%D/tracking.pl"
        <AuthBy GROUP>
                AuthByPolicy    ContinueUntilAccept
                AuthBy          LogToSQL
                AuthBy          MeritStandard
                StripFromReply  Framed-IP-Address,Framed-IP-Netmask,Framed-Route
        </AuthBy>
</Handler>

Reply via email to