I'll quickly explain how traceroute works in IPv6, and fortunately,
it's very similar to IPv4. The Globomantics client sends a series of
UDP probes towards the final destination of the Wired Brain Coffee
server with IPv6 address FC00:10:2:5::5. With a hop limit of 1, the
first router in the network,
which is the Globomantics default gateway, replies with a
hop limit exceeded ICMPv6 message. So far,
no substantial difference from IPv4. Next,
the client sends more UDP probes towards the remote server.
The client now uses a hop limit of 2, which should expire
on R2, the Wired Brain Coffee router.
This router sends back the hop limit exceeded message back to the
sender, and the client records this second hop.
Finally, the client sends more UDP probes towards the remote
server, except using a hop limit of 3.
The traffic reaches the remote server, but since the remote server is
not listening on these high numbered UDP ports,
it responds with a port unreachable message.
The reception of this unreachable terminates the traceroute
process, and the client now knows the routed path between itself
and the target. Exact same logic as IPv4, right? Let's find out
for sure on the live network.
Just like ping for IPv6, we don't need to do anything fancy here other than
type the word traceroute followed by the IPv6 target we want to run
traceroute against. In Linux, there is no traceroute 6 command, just plain
traceroute. Let's punch in the IPv6 address to the Wired Brain Coffee server
of fc00:10:2:5::5 and hit Enter. Just like IPv4 traceroute, we see one hop
per row printed neatly to the console identifying the globally routable IPv6
addresses at each hop. Revealing link‑local addresses through traceroute
would be rather meaningless since link‑local addresses can be duplicated on many devices and on many links. Let's analyze these packets further.