[RADIATOR] UNS: Re: Best way to log timeout requests
Dubravko Penezic
dpenezic at srce.hr
Thu Jun 15 17:02:54 UTC 2023
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
>
More information about the radiator
mailing list