Arista EOS
This page covers administrative access on Arista EOS over TACACS+. It is the device-side counterpart to TACACS+.
EOS keeps the legacy global tacacs-server host style rather than Cisco’s named server
blocks, and its timers are global rather than per-server. The result is a shorter
configuration than the equivalent on other platforms — with two sharp edges that are worth
knowing before you start, not after.
Verified on
Section titled “Verified on”| Platform | Software | What was verified |
|---|---|---|
| Arista vEOS-lab | EOS 4.36.0.1F | TACACS+ login, enable, exec authorization, command authorization at all levels, exec and command accounting; RADIUS for 802.1X and MAB, including CoA disconnect |
This is a virtual platform. The AAA configuration is not hardware-specific, but as always, verify on your own gear before rolling out widely.
Device administration over TACACS+
Section titled “Device administration over TACACS+”! ── Server and group ────────────────────────────────────────────tacacs-server host 10.0.0.20 key 7 <OBFUSCATED_KEY>tacacs-server timeout 30!aaa group server tacacs+ TARANAC server 10.0.0.20!! ── Authentication ──────────────────────────────────────────────aaa authentication login default group TARANAC localaaa authentication enable default group TARANAC local!! ── Authorization ───────────────────────────────────────────────aaa authorization exec default group TARANAC localaaa authorization commands all default group TARANAC local!! ── Accounting ──────────────────────────────────────────────────aaa accounting exec default start-stop group TARANAC loggingaaa accounting commands all default start-stop group TARANAC logging!ip tacacs source-interface Vlan1Two spelling differences from Cisco worth noting as you read: the enable fallback keyword
is local rather than Cisco’s enable, and the accounting lines end in logging, which
sends the accounting records to the local log in addition to the server.
no aaa root — present by default on modern EOS — disables the root account and should
stay that way.
commands all covers every privilege level
Section titled “commands all covers every privilege level”aaa authorization commands all default group TARANAC localaaa accounting commands all default start-stop group TARANAC loggingEOS provides the shorthand that other platforms do not. One line covers every privilege level, for authorization and for accounting.
This is a genuine advantage, and it is worth appreciating what it saves you from. On
Cisco IOS and
Huawei VRP, the equivalent commands take one privilege
level per line with no wildcard, and a level you forget to list is a level the switch
never asks about — the command runs unauthorized and unrecorded, silently. EOS closes that
whole class of mistake with the word all.
Apply command authorization in the right order
Section titled “Apply command authorization in the right order”This is the one that bites, and it bites hard enough to end your session.
Apply it in two phases:
- As the local
admin— configure everything above except theaaa authorization commands allline. Save. - Log out, log back in as a TACACS+ user who already resolves to privilege 15 with a
command set that permits everything — verify that login works first. From that
session, apply the
aaa authorization commands allline.
Because the second session is authenticated against Taranac and matched by a policy rule,
its commands authorize normally and end / write memory go through.
The same ordering logic applies to any change that could deny you the commands needed to reverse it. Keep a second session open, and test the change in a third.
Timers are global, and the default is too short
Section titled “Timers are global, and the default is too short”tacacs-server timeout 30EOS has no per-server timeout — tacacs-server timeout applies to every TACACS+ server on
the box. The default is 5 seconds, which is fine for password authentication and too
short for anything involving a human.
When a user is enrolled in push MFA, Taranac holds the AAA exchange open while it sends a push to their phone and waits for approval — up to about 30 seconds. At the default timeout the switch gives up long before anyone can reach into a pocket, and the login fails over to local, which looks exactly like a server outage.
The effective approval window is the smaller of the device timeout and Taranac’s own server-side cap, so raising one alone changes nothing. Raise both together.
Pin the source interface
Section titled “Pin the source interface”ip tacacs source-interface Vlan1 fixes the source address of TACACS+ packets, which is
what Taranac matches against the registered device.
On a switch with a single SVI and no routing, leaving it unset happens to work. It stops working the moment a second L3 interface appears or routing changes, and the failure is unhelpful: Taranac drops the request as coming from an unknown client without writing a policy decision, so the switch reports a timeout while the server logs show nothing at all. Pin it explicitly. See Network devices.
One entry per server in the group
Section titled “One entry per server in the group”Verify it
Section titled “Verify it”show tacacs is the reachability and health view:
switch#show tacacsTACACS+ server : 10.0.0.20/49 Connection opens: 1238 Connection closes: 1237 Connection disconnects: 0 Connection failures: 0 Connection timeouts: 0 Messages sent: 1347 Messages received: 1347 Receive errors: 0 Receive timeouts: 0 Send timeouts: 0 DNS errors: 0 Unknown attribute ignored: 0Unknown attribute failures: 0
TACACS+ server-group: TARANAC 0: 10.0.0.20/49
Last time counters were cleared: neverOpens tracking closes with zeros across failures and timeouts is healthy. The
server-group block at the bottom is where you confirm there is exactly one entry per
server.
show aaa counters is the fastest way to see whether the policy is doing anything:
switch#show aaa countersAuthenticationSuccessful: 107Failed: 3Service unavailable: 0
AuthorizationAllowed: 459Denied: 0Service unavailable: 0
AccountingSuccessful: 672Error: 2Pending: 0
SessionOpened: 107Closed: 106Read it as three separate questions. Service unavailable under Authentication or
Authorization is a reachability problem — the server never answered. Failed or
Denied means the server answered and said no, which is a policy question, not a
network one. And a non-zero Authorization Allowed count is the proof that command
authorization is genuinely live, rather than configured but never consulted.
show users detail confirms how the current sessions authenticated:
switch#show users detailSession Username Roles TTY State Duration Auth Remote Host------- -------- ---------- ----- ----- --------------- -------------- -----------94 taranac <unknown> vty3 E 1 day, 1:21:45 group TARANAC 10.6.0.110Auth: group TARANAC is what you want to see — that session was authenticated by Taranac,
not by the local database. Roles showing <unknown> is normal for a TACACS+ session
whose profile returns a privilege level rather than a named EOS role; it is not a fault.
Finally, prove authorization rather than assuming it: log in from a second session and run
a command your policy should deny. A denial arriving from Taranac — and the matching
increment in the Denied counter — is the only real evidence.
NAC on this platform
Section titled “NAC on this platform”The switch-side 802.1X and MAB configuration for EOS is covered step by step in Build an 802.1X lab, including the two independent commands CoA needs and why having only one of them fails silently. It is not repeated here.
What this page adds is what the verification output looks like when it is working.
show radius is the single most informative command on an EOS NAC deployment:
switch#show radiusRADIUS server : 10.0.0.20, authentication port 1814, accounting port 1815Dynamic authorization UDP port: 3799 Messages sent: 510 Messages received: 510 Requests accepted: 85 Requests rejected: 5 Requests challenged: 420 Requests timeout: 0 Requests retransmitted: 0 Bad responses: 0 Connection errors: 0 DNS errors: 0 CoA requests received: 0 DM requests received: 1 CoA ACKs sent: 0 DM ACKs sent: 1 CoA NAKs sent: 0 DM NAKs sent: 0 Accounting Starts sent: 8 Interim Updates sent: 27 Accounting Stops sent: 8Three things to read out of it:
- CoA is genuinely working.
DM requests received: 1withDM ACKs sent: 1means Taranac sent a Disconnect-Message and the switch accepted it. Note that the switch’s running configuration contains noradius-server dynamic-authorizationline — the port is at its default, so EOS hides it. This is exactly why CoA on EOS must be verified by behaviour rather than by reading the configuration:Dynamic authorization UDP port: 3799in this output, and the DM counters moving, are the evidence. An empty CoA/DM counter set on a deployment that should be using CoA means it is silently going nowhere. Requests challenged: 420far exceeding accepts is normal, not alarming. EAP is a multi-round conversation, so each successful authentication produces several Access-Challenge exchanges before the accept.- Accounting is flowing. Starts matching Stops, with interim updates, is what produces sessions in Taranac. A switch that authenticates but sends no accounting shows up in the auth log with zero sessions.
Per-port state needs an interface — show dot1x on its own returns % Incomplete command
rather than a summary, unlike the Cisco equivalent:
switch#show dot1x interface Ethernet3Dot1X Information for Ethernet3--------------------------------------------Port control: autoForced phone authorization: disabledEAPOL: enabledHost mode: multi-host authenticatedMAC-based authentication: enabledMAC-based authentication host mode: UnconfiguredMAC-based authentication always: disabledQuiet period: 60 secondsTX period: 10 secondsMaximum reauth requests: 2Ignore reauth timeout: NoAuth failure VLAN: UnconfiguredUnauthorized access VLAN egress: NoUnauthorized native VLAN egress: NoEAPOL authentication failure fallback: UnconfiguredPort control: auto with EAPOL: enabled and MAC-based authentication: enabled is a
port doing 802.1X with MAB as the fallback.
Troubleshooting
Section titled “Troubleshooting”| Symptom | Likely cause |
|---|---|
| Every login stalls for exactly the timeout, then succeeds | Duplicate or stale entry in the server group. Check the group list at the bottom of show tacacs. |
| Push MFA always denies | tacacs-server timeout at its default 5 s. Confirm with show running-config all section tacacs — the default is invisible in the normal running-config. |
| Login rejected, and Taranac logs show nothing | Source address does not match the registered device. Pin ip tacacs source-interface. |
| Session accepts no commands after enabling authorization | Applied aaa authorization commands all from a locally-authenticated session. Recover out of band; reapply in two phases. |
show aaa shows no servers | Expected — it shows local users. Use show tacacs / show radius. |
show dot1x returns % Incomplete command | Expected — specify an interface. |
| CoA has no effect, authentication fine | Verify by counters, not configuration: Dynamic authorization UDP port and the DM/CoA counters in show radius. EOS hides default-valued settings. |
| Authentication works, no sessions in Taranac | Accounting not configured or not reaching the server. Check the accounting counters in show radius / show aaa counters. |
Related
Section titled “Related”- Device configuration — conventions and the rest of the cookbook
- Cisco IOS / IOS-XE — the same ground on another platform
- Huawei VRP — and another
- Network devices — registering the device and its secret
- TACACS+ — profiles, command sets, privilege levels
- Build an 802.1X lab — the NAC side of this platform