We've been using Radius here and it's working very well. (And thanks for the previous answers).
Below is a small patch to increase the size on the "Location" field seen in radwho. For us the location is an IP address; 9 digits doesn't give the crucial lower-order digits of an IP address. The following patch increases this 15 digits (but some probably may want more if an DNS name were used.). Again thanks. --- radwho.c 2002-10-30 15:38:18.000000000 -0500 +++ /usr/local/src/freeradius-snapshot-20040203/src/main/radwho.c 2004-02-19 15:10:39.000000000 -0500 @@ -54,17 +54,17 @@ * Header above output and format. */ static const char *hdr1 = -"Login Name What TTY When From Location"; -static const char *ufmt1 = "%-10.10s %-17.17s %-5.5s %-4.4s %-9.9s %-9.9s %-.16s%s"; +"Login Name What TTY When From Location"; +static const char *ufmt1 = "%-10.10s %-17.17s %-5.5s %-4.4s %-9.9s %-15.15s %-.16s%s"; static const char *ufmt1r = "%s,%s,%s,%s,%s,%s,%s%s"; -static const char *rfmt1 = "%-10.10s %-17.17s %-5.5s %s%-3d %-9.9s %-9.9s %-.19s%s"; +static const char *rfmt1 = "%-10.10s %-17.17s %-5.5s %s%-3d %-9.9s %-15.15s %-.19s%s"; static const char *rfmt1r = "%s,%s,%s,%s%d,%s,%s,%s%s"; static const char *hdr2 = -"Login Port What When From Location"; -static const char *ufmt2 = "%-10.10s %-6.6d %-7.7s %-13.13s %-10.10s %-.16s%s"; +"Login Port What When From Location"; +static const char *ufmt2 = "%-10.10s %-6.6d %-7.7s %-13.13s %-15.15s %-.16s%s"; static const char *ufmt2r = "%s,%d,%s,%s,%s,%s%s"; -static const char *rfmt2 = "%-10.10s %s%-5d %-6.6s %-13.13s %-10.10s %-.28s%s"; +static const char *rfmt2 = "%-10.10s %s%-5d %-6.6s %-13.13s %-15.15s %-.28s%s"; static const char *rfmt2r = "%s,%s%d,%s,%s,%s,%s%s"; static const char *eol = "\n"; - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html