AuthHound

Chase an intermittent RADIUS failure

"It randomly fails, then works on retry" is the hardest RADIUS complaint to act on, because a single test almost always passes. The fix is to stop testing once: run the check many times and let the aggregate — success rate, timeouts, latency spread — tell you whether it's packet loss, one bad node in a pool, or an overloaded server.

1. Measure it with --count

--count N (2–50) runs the whole check set N times and reports aggregate statistics instead of a single verdict — a success count, timeouts, and latency min / median / p95 / max. Now "sometimes" is a number you can quote:

# run the checks 20 times, 2s apart — turns "flaky" into a measured rate
authhound-probe radius test --server radius.corp.com \
  --secret-file /etc/authhound/secret --peap alice --count 20

Runs pause --interval apart (default 2s; a safety floor applies) so you're not hammering a production server. Raise --timeout from its 5s default only if the server is genuinely slow — a long timeout hides a reachability problem as latency.

2. Read the pattern

  • A few requests lost, the rest fine → packet loss or an overloaded server. The p95/max latency being far above the median points the same way. Look at the network path and the server's load.
  • All-or-nothing (all pass, or all time out) → not really intermittent. An all-timeout run is registration, secret, or firewall (see first-run timeouts); it just happened to be down when you looked.
  • Auth fails on some runs but reachability never does → suspect a backend directory (LDAP/AD) that's slow or flapping, or one node in a pool with stale config. That's the next section.

3. The DNS round-robin trap — compare the backends

The classic intermittent cause: one hostname (radius.corp.com) resolves to a pool — a load-balancer VIP or several A records — and one node in the pool is misconfigured. Every request lands on a different backend, so it fails roughly one time in N and no single test is conclusive.

Give --server a comma-separated list of the individual backend IPs and the probe tests each one, side by side, so a broken node stands out immediately:

# the DNS round-robin trap: a hostname pointing at a pool where ONE node is bad.
# Test each backend IP directly, side by side, instead of the round-robined name.
authhound-probe radius test --server 10.0.0.11,10.0.0.12 \
  --secret-file /etc/authhound/secret --peap alice --count 20

If one IP FAILs (wrong secret, cert, or policy) while the other PASSes, you've found it — the load balancer was hiding it behind the shared name. Fix or pull that node.

Related

Running the probe by hand answers "is it working right now?". AuthHound is building monitoring that runs these same checks on a schedule from every site and alerts you when one drifts — early access:

No spam, no sharing — one email when it's ready, and you can reply to be removed anytime.