Access-Accept · Filter-Id / role not applied
RADIUS Filter-Id not applied: the ACL name the NAS quietly ignores
The device authenticates, gets its Access-Accept, and then has the wrong access (too much or too little) even though your RADIUS policy clearly returns a Filter-Id. The trap is a single fact people forget under pressure: RADIUS sends the name of an ACL, never the ACL itself.
1. The named filter doesn’t exist on the NAS
Filter-Id (and its vendor cousins, Cisco-AVPair ip:inacl and Aruba-User-Role) is a reference by name to a filter that must already be configured on the switch, firewall, or controller. If that name isn’t defined on the box, behavior is vendor-specific and never obvious:
- some platforms deny all traffic for the session,
- some ignore the attribute and apply nothing,
- some fall back to a default role.
Either way the RADIUS side “authenticated fine.” Check: does an ACL/role with that exact name exist on the NAS the device connected to?
2. The name doesn’t match exactly
The match is literal and usually case-sensitive. GUEST_ACL ≠ guest_acl ≠ GUEST_ACL (trailing space from a copy-paste). Some platforms also use a direction suffix convention (.in / .out) that must be present, or must be absent. Check: compare the returned string byte-for-byte against the configured name; watch for whitespace and case.
3. It exists on some of your gear, not all
On a mixed or multi-site estate, the same policy returns the same Filter-Id to every NAS, but the ACL is only defined on the switches where someone configured it. Result: correct enforcement in one closet, wide-open (or locked-out) in another, from one unchanged RADIUS policy. Check: confirm the filter/role is pushed to every NAS the policy can reach, ideally from config management, not by hand.
4. Wrong mechanism for the platform
Filter-Id is the RFC-standard way, but some platforms only honor their vendor attribute for downloadable/named ACLs. Cisco expects Cisco-AVPair ip:inacl#1=... for per-user entries, Aruba expects Aruba-User-Role. Returning the standard Filter-Id to gear that only reads its own VSA is a silent no-op. Check: match the attribute you return to what that vendor’s OS version actually consumes.
The one diagnostic that settles it
On the NAS, read the session’s applied policy directly, e.g. show authentication sessions interface <if> details (Cisco) or the equivalent client/role view on your platform. It shows the ACL/role name the NAS received and whether it resolved it to a real filter. A name received but unresolved is cause 1 or 2; nothing received is a policy-side problem (the attribute never left the server; confirm with radiusd -X or the NPS reply attributes).