RTFM · Networking
IPv6 foundations: RA, SLAAC, and DHCPv6
IPv6 becomes much less mysterious once you separate the jobs of Router Advertisements, SLAAC, DHCPv6, and the firewall.

Router Advertisements
An IPv6 router sends ICMPv6 Router Advertisements. They announce that a prefix is present on a link, identify the default router, provide lifetimes, and may advertise DNS through RDNSS. Hosts can learn how to reach the Internet even when no DHCPv6 server assigns their address.
Router Advertisement
prefix: 2001:db8:10::/64
preferred lifetime: 86400
valid lifetime: 172800
default router: this link
flags: managed/other information as configuredSLAAC
With SLAAC, a host combines the advertised /64 prefix with an interface-generated identifier. It may create stable and temporary privacy addresses. The host also installs a default route learned from RA. That is why blocking all ICMPv6 can break an apparently unrelated web connection.
- A prefix tells the host which addresses belong on the link.
- RA supplies the default-router information.
- SLAAC forms addresses; it is not the same thing as DHCPv6.
- A globally routed address still needs firewall policy.
RA flags in practice
The Managed, or M, flag asks clients to use stateful DHCPv6 for addresses. The Other, or O, flag asks for other DHCPv6 information such as DNS. A network can use SLAAC alone, SLAAC plus stateless DHCPv6, or stateful DHCPv6 alongside RA. Client behavior varies, so test real operating systems rather than relying on one diagram.
RA remains necessary for the default route in normal IPv6 LAN operation, including when DHCPv6 supplies addresses or options.
Inspect the result
ip -6 addr show dev eth0
ip -6 route
ip -6 neigh
ss -lntup
sudo tcpdump -ni eth0 icmp6Read an IPv6 host like a routing table, not a single address
An IPv6 host often has several legitimate addresses on one interface: a link-local fe80:: address, one or more stable global addresses, and temporary privacy addresses. The useful question is which source address and route the kernel selects for the destination you care about. A public AAAA record must point to a stable address that your firewall and return route support; it should not casually point to an expiring privacy address.
# Which IPv6 source address and route will this host really use?
ip -6 route get 2606:4700:4700::1111
# See preferred/valid lifetimes as well as addresses.
ip -6 addr show dev eth0
# A default route learned from RA often uses a link-local next hop.
ip -6 route show default
# Watch the actual RA/Neighbour Discovery exchange while a client joins.
tcpdump -ni eth0 'icmp6 and (ip6[40] == 134 or ip6[40] == 135 or ip6[40] == 136)'A default route via fe80:: is normal. Link-local addresses are valid only on their named interface, which is why routes show both the next hop and dev eth0. Do not publish fe80:: addresses in public DNS and do not attempt to use one without its interface scope.
| Design | Address source | Route source | DNS source |
|---|---|---|---|
| SLAAC-only | RA prefix + client address formation | RA | RDNSS in RA, if advertised |
| SLAAC + stateless DHCPv6 | SLAAC | RA | DHCPv6 options and/or RDNSS |
| Stateful DHCPv6 | DHCPv6 lease | RA | DHCPv6 options and/or RDNSS |
Never translate an IPv4 NAT habit directly to IPv6. The normal IPv6 design routes a prefix to the LAN. The router and the Saphira host firewall decide whether unsolicited inbound traffic is permitted; an IPv4 port-forward rule usually has no authority over IPv6.