Hi Heikki,
many, many thanks for your example. In last TNC2023 in Tirana I try to
debug some issue with eduroam authentication across very heterogeneous
RADIUS infrastructure.
Also I am fun of opinion of IGNORE (discard) request if RADIUS server
doesnt know answer on auth/acct request for any reason, that give lower
level RADIUS opportunity to found answer somewhere else.
Regards,
Dubravko
On 6/15/23 18:10, Heikki Vatiainen via radiator wrote:
On 9.6.2023 0.45, Dubravko Penezic via radiator wrote:
How to log timeouted requests on RADIATOR when RADIATOR act like proxy
server ?
That's a good question. Here's one solution I came up with:
Start by defining a logger as usual, but ensure it also logs IGNORE result.
# %T is Access-Request, Accounting-Request, etc.
<AuthLog FILE>
Identifier radius-authlog
Filename %L/radius-authlog
LogSuccess
LogFailure
LogIgnore
SuccessFormat %l:%U:%1:OK
FailureFormat %l:%U:%1:FAIL
IgnoreFormat %l:%U:%T:%1:IGNORE
</AuthLog>
Within AuthBy RADIUS define a NoReplyHook:
# The 1st argument is the request that Radiator received
# The 2nd argument is the request that Radiator forwarded
# without receiving a reply.
NoReplyHook sub { my $p = ${$_[0]}; \
# return unless $p->code() eq 'Access-Request'; \
my $al = Radius::AuthLogGeneric::find('radius-authlog'); \
$al->authlog($main::IGNORE, 'Timed out', $p) if $al; \
main::log($main::LOG_ERR, 'NoReplyHook: did not find logger')
unless $al; }
The above logs all timeouts, including Accounting-Request timeouts,
using the file authlogger. If you want just Access-Request to be logged,
remove the comment.
Basically log is written once request have final state, or state is
set by handler, but timeouted request dosnt have finale state.
Correct, that's the reason. But it's ok to get a handle to an
authentication logger and call it as above.
It is "big" issue when you try to "debug" some authentication across
of RADIUS hierarchy and a lot of proxy server on a path is RADIATOR
instance.
A message about timed out request is logged with INFO level but it goes
to the process logfile. The above should help putting all the results in
the same file.
For example FreeRADIUS write FAIL in log if request is timeout.
You can also log with FAIL, but I used IGNORE and a specific reason so
that it's easier to see which messages timed out.
Note that you can also set up an <AuthLog ...> and use it only to call
from NoReplyHook. This allows you to have a separate log file just for
the timed out requests.
Thanks,
Heikki
_______________________________________________
radiator mailing list
[email protected]
https://lists.open.com.au/mailman/listinfo/radiator