radius CoA client for PPTP box

Brock Eastman brock at corp.digitalpath.net
Thu Sep 24 01:35:46 CEST 2015


I am currently trying to implement radius CoA on a NAS client using
freeradius to handle the listening of inbound packets.  I need to add a
feature to change the shaping policy on the fly from our radius system to
each existing NAS.  Freeradius appears to employ a nice framework to
accomplish this such as PPTP/PPPOE servers for an ISP environment.  I
originally started out with a PHP socket program that listened on port 3799
- it worked but has compatibility issues with older php4 systems that I must
still support.  I am not trying to proxy anything, just straight listen for
packets, send the attributes to a secondary program and change rate shaping
or disconnect users on the fly.

 

I have no problems sending requests from my radius server to the NAS hosting
the radius CoA listener on port 3799.

RADIUS AUTH/ACCT SERVER - > SEND REQUEST ON PORT 3799 

 

Radclient call -

echo "User-Name = test, Framed-IP-Address=198.204.209.33, NAS-Port=382" |
radclient -x 198.204.208.XX:3799 coa mypass

 

 

What I need is in the recv-coa section to allow me to send a remote command
using exec.  So far nothing has worked for me.  I've dug around in the
documentation all day without anything working.  I'm validating the php
script runs by touching a filesystem command and running the daemon in debug
mode from the command line to see the output.  But the php is never called.

 

----------------snippet from radiusd.conf

server coa {

        #  When a packet is received, it is processed through the

        #  recv-coa section.  This applies to *both* CoA-Request and

        #  Disconnect-Request packets.

 

 

        recv-coa {

                #  CoA && Disconnect packets can be proxied in the same

                #  way as authentication or accounting packets.

                #  Just set Proxy-To-Realm, or Home-Server-Pool, and the

                #  packets will be proxied.

                #  Insert your own policies here.

 

 

                update control {

                        Auth-Type:=`/usr/bin/php
/usr/local/bin/radius_coa.php %{User-Name}`

                }

                ok

        }

}

-----------------------

 

Here is the output I have .. successfully getting data into freeradius NAS
from central radius...

radiusd -X 

 

... adding new socket proxy address * port 53450

Listening on coa address * port 3799

Listening on accounting address * port 1813

Listening on command file /var/run/radiusd/radiusd.sock

Listening on authentication address 127.0.0.1 port 18120 as server
inner-tunnel

Listening on proxy address * port 1151

Ready to process requests.

rad_recv: CoA-Request packet from host 198.204.208.XX port 39238, id=55,
length=38

        User-Name = "test"

        Framed-IP-Address = 198.204.209.33

        NAS-Port = 382

  WARNING: Empty recv-coa section.  Using default return values.

  WARNING: Empty send-coa section.  Using default return values.

Sending CoA-ACK of id 55 to 198.204.208.XX port 39238

Finished request 0.

Going to the next request

Cleaning up request 0 ID 55 with timestamp +23

Ready to process requests.

------------------------------------------------------

 

I am sure this is something simple to fix.

 

Thanks

 

Brock Eastman

VP Engineering

DigitalPath, Inc



More information about the Freeradius-Users mailing list