Diagnostics & Troubleshooting
Check the ARP / neighbor table
Map an IP address to the MAC address the device has learned for it, to prove L2 adjacency and spot duplicates.
Why it differs: Mostly a naming problem — the same table is called ARP, neighbors, or the device list depending on vendor, and IPv6 lives in a separate table on all of them.
Router / switch / AP
MikroTik RouterOS
GUI or CLIWritten against RouterOS 7.x
Steps
- GUI: IP → ARP
- CLI:
/ip arp print - Find one host:
/ip arp print where address=192.168.88.10 - IPv6:
/ipv6 neighbor print
Gotchas & notes
- Do not confuse IP → ARP with IP → Neighbors; the latter is MikroTik's own discovery protocol (MNDP/CDP/LLDP) listing nearby network devices, not an ARP table.
- Entries marked
DC are dynamic+complete; D alone with no MAC means an incomplete resolution — usually the host is off or on a different VLAN than you think. - If an interface has
arp=reply-only set, the table will not learn dynamically and only static entries work. Check /interface ethernet print detail when the table is unexpectedly empty.
Vendor documentation ↗NGFW / router
Fortinet FortiGate (FortiOS)
GUI or CLIWritten against FortiOS 7.2 – 7.6
Steps
- CLI:
get system arp - More detail incl. interface:
diagnose ip arp list - IPv6:
diagnose ipv6 neighbor-cache list - GUI: Dashboard → Network → ARP Table widget (if present in your build).
Gotchas & notes
get system arp is short and pleasant; diagnose ip arp list is the one that shows the interface and VDOM, which is what you actually need in a multi-VLAN setup.- Clear a stale entry with
execute clear system arp table — note this flushes the entire table, briefly re-resolving everything. There is no per-entry delete in most versions. - The ARP table is per-VDOM; make sure you are in the right VDOM before deciding an entry is missing.
Vendor documentation ↗Controller-managed gateway / switch / AP
Ubiquiti UniFi Network
GUI or CLIWritten against UniFi Network 8.x – 9.x (UDM / UDM-Pro / UXG)
Steps
- GUI: Clients list shows IP↔MAC for every known client, which covers the normal use case.
- CLI (gateway): SSH →
ip neigh show (Linux replacement for arp -a). - Per-switch MAC learning: Devices → <switch> → Ports shows what is seen on each port.
Gotchas & notes
- The Clients list is controller state, not a live ARP table — a device that just changed IP may show stale data until the next poll.
- Wired clients on unmanaged downstream switches all appear on one uplink port, so port-level attribution stops at the first non-UniFi switch.
arp -a is often absent on the gateway's minimal userland; ip neigh is the reliable command.
Vendor documentation ↗Router / switch
Cisco IOS / IOS-XE
CLIWritten against IOS-XE 17.x (Catalyst 9000, ISR 1000/4000)
Steps
show ip arp — or narrow it: show ip arp 192.168.1.10- Per-VRF:
show ip arp vrf MGMT - IPv6:
show ipv6 neighbors - Related but different:
show mac address-table (L2) — see the MAC table task.
Gotchas & notes
- ARP and the MAC address table are different tables answering different questions: ARP is IP→MAC, MAC table is MAC→port. Troubleshooting usually needs both, in that order.
- Default ARP cache timeout on IOS is 4 hours, far longer than the 5-minute MAC aging timer. That mismatch causes traffic black-holing after a device moves ports — a classic exam and real-world gotcha.
- Clear a single entry with
clear arp-cache (whole table) or clear ip arp 192.168.1.10 (one entry) — Cisco does give you per-entry clearing, unlike FortiGate. - An
Incomplete entry means ARP went unanswered: wrong VLAN, wrong mask, or the host is down.
Vendor documentation ↗NGFW
Palo Alto Networks PAN-OS
GUI or CLIWritten against PAN-OS 10.2 / 11.x
Steps
- CLI:
show arp all — or per interface: show arp ethernet1/1 - IPv6:
show neighbor interface ethernet1/1 - GUI: Network → Interfaces, click the interface, then *More Runtime Stats* → ARP tab.
Gotchas & notes
- The GUI path is genuinely obscure — *More Runtime Stats* is a small link inside the interface dialog, and it is where ARP, DHCP, and interface counters hide.
show arp all includes the management interface's entries alongside dataplane ones; check the interface column before drawing conclusions.- Static ARP entries are configured per-interface under Network → Interfaces → <int> → Advanced → ARP Entries and require a Commit like everything else.
Vendor documentation ↗Router / firewall (FreeBSD)
Netgate pfSense CE
GUI or CLIWritten against pfSense CE 2.7 / Plus 24.x
Steps
- GUI: Diagnostics → ARP Table — sortable, with hostname and interface columns.
- IPv6: Diagnostics → NDP Table
- CLI:
arp -an or ndp -an
Gotchas & notes
- The GUI ARP table resolves hostnames from DHCP leases, so you get a name next to each MAC — the friendliest version of this table across all six vendors.
- It also flags duplicate IPs, which is the fastest way to catch a rogue static address colliding with a DHCP lease.
- Each row has a delete button for clearing one stale entry without flushing the table.
Vendor documentation ↗NGFW
SonicWall (SonicOS)
GUI or CLIWritten against SonicOS 7.3.x (Gen7 TZ/NSa/NSsp; current General Release line is 7.3.2/7.3.3 — note Gen8 TZ80/TZ280+/NSa 2800+ hardware instead runs the separate SonicOS 8.x line)
Steps
- GUI: Device > Diagnostics > Diagnostic Tools, "Perform" dropdown → ARP Cache, which lists learned IP-to-MAC mappings per interface.
- IPv6 neighbors live in a separate table — check the IPv6 Neighbor Discovery/NDP page under Network > IPv6 rather than expecting them in ARP Cache.
- CLI:
show arp from the E-CLI prompt over SSH or console for the same table without opening the GUI.
Changed across versions
- 7.0Moved from System > Diagnostics (6.5) into Device > Diagnostics with the 7.0 GUI reorganization.
Gotchas & notes
- Same split as every other vendor: ARP for IPv4, a separate Neighbor Discovery table for IPv6 — the ARP Cache page will not show v6 hosts.
- The diagnostics-page ARP view is read-only; clearing/flushing a stale or duplicate entry (common when a host's NIC or MAC has changed) is a separate action from just viewing the table, so don't expect a refresh alone to fix a stuck mapping.
Vendor documentation ↗Cloud-managed business routers, switches & Orbi Pro/WiFi APs
NETGEAR Insight (Cloud Management Platform)
GUI or CLIWritten against Insight Cloud Portal/App 10.0.x (cloud mgmt); switch-side CLI varies by line — Smart Switch "Lite CLI" firmware 6.0.10.5+/7.0.9.5+, fully-managed M4200/M4300 CLI 12.0.11.x
Steps
- Cloud/GUI (routers, Orbi Pro APs, and switches): Insight portal/app > Topology or device > Clients shows IP-to-MAC mappings for connected devices — Insight's framing is a resolved 'client list' rather than a raw ARP table.
- Local GUI (switches): Monitoring > ARP Table (wording varies by model/firmware) on the switch's local HTTPS page.
- CLI (M4200/M4300):
show arp for the IPv4 table; show ipv6 neighbors for the separate IPv6 table. - CLI (Smart Switch Lite CLI): a basic
show arp is typically present; IPv6 neighbor visibility is limited or absent depending on firmware. - Routers/Orbi Pro APs: the Insight Clients list from step 1 is the only view — there's no exposed raw ARP table terminology, just resolved entries with IP, MAC, hostname, connection type.
Gotchas & notes
- Insight abstracts this as a 'client list,' which ages entries out based on recent activity rather than a true ARP cache timer — a device missing from the Insight list isn't proof it's gone, just that it's been quiet.
- The IPv6 neighbor table is really only reliable on the M4200/M4300 CLI (
show ipv6 neighbors) — don't expect it on Smart Switches or anywhere in the Insight GUI, which skews heavily IPv4. - On a pure L2 smart switch, remember ARP and MAC address table are different questions — an L2-only switch has no ARP table of its own, only a MAC table (
show mac-address-table on the M4300), so 'is this IP reachable' and 'is this MAC on this port' aren't answered by the same command.
Vendor documentation ↗