Palo Alto NDP Monitoring

With PAN-OS version 8.0 Palo Alto Networks introduced another IPv6 feature, namely “NDP Monitoring for Fast Device Location“. It basically adds a few information to the existing neighbor cache such as the User-ID (if present) and a “last reported” timestamp. That is: the admin has a new reporting window within the Palo Alto GUI that shows the reported IPv6 addresses along with its MAC addresses. This is really helpful for two reasons: 1) a single IPv6 node can have multiple IPv6 addresses which makes it much more difficult to track them back to the MAC address and 2) if SLAAC is used you now have a central point where you can look up the MAC-IPv6 bindings (comparable to the DHCP server lease for legacy IPv4).

For IPv4 you already have the DHCPv4 “View Allocation” window on the Palo Alto GUI. But for IPv6 addresses that are generated by the nodes themselves via SLAAC, everyone lacks a reporting instance for the MAC-IPv6 bindings. I wrote a few posts about monitoring MAC-IPv6 address bindings a couple of years ago. This feature now makes the traceability of IPv6 nodes available, at least for the local link (layer 2) from the firewall. (Reminder: NDP is link-local only, hence does not traverse any layer 3 routing instance.)

For this test I used a PA-200 with PAN-OS 8.0.3.

Activation & Tracing

You must only activate the “Enable NDP Monitoring” checkmark within the IPv6 tab for each interface you would like to enable it. You’re done. ;)

Every new Neighbor Advertisement is now stored along with its MAC address. Palo Alto will also add the User-ID if it’s known for that particular IPv6 address. Note the new clickable symbol in the “Features” column which opens the list. You can also filter the output, e.g., for a MAC address. This is quite useful since a single MAC address can have multiple IPv6 addresses, either because of privacy extensions or because of couple of configured addresses, such as virtual hosts on an F5 load-balancer as in my case:

Neighbor Cache vs. NDP Monitoring

The NDP Monitoring is not that different from the already available neighbor cache, though it uses some other sources. While the “neighbor cache” is an IPv6 standard functionality, this “NDP monitoring” captures neighbor advertisements and duplicate address detection (DAD) messages. Comparing both outputs on the CLI the NDP Monitoring has two more columns: “user id” and “last reported” (while it has a bad column size since the first two columns have no spacing when using subinterfaces). The following listing shows the normal neighbor cache (beginning at line 1), the new NDP monitoring output (line 52) and a filtered version of the NDP monitoring output based on a single MAC address (line 91).

I am not quite sure why I have more entries within the neighbor cache compared to the NDP monitoring. And only two link-local fe80:: addresses in the NDP mon section while 13 (!) in the interface. Hm. Maybe this is related to the fact that the NDP Monitor feature was not enabled since the start of the firewall. It is probably congruent with the “interface” output after the next reboot.


It is not THE big deal but another step in the right direction: Admins can now track back IPv6 addresses to their MAC addresses similar to IPv4 addresses that were handed out by an DHCPv4 server. In conjunction with the listing of the User-IDs (which I am not using in my server-only environment ;() it gives the administrator a way to trace a security violation from an IPv6 address back to the originating user. And it’s all possible through the GUI. Great!

[By the way: The PAN documentation has the following sentence which does not make sense to my mind: “You can quickly track a device and user […] by viewing the IPv6 addresses […] and time the NDP monitor received a Router Advertisement from this IPv6 address.” I quite sure that this should read “Neighbor Advertisement” rather than “Router Advertisement”.]

Featured image: “Kunstkantine-Winterspezial 141” by Zeitfixierer is licensed under CC BY-SA 2.0. (The featured image indicates some “neighbors” since this blogpost is about IPv6 neighbors. ;))

Leave a Reply

Your email address will not be published. Required fields are marked *