Router Advertisements and SLAAC
Turn on Router Advertisements on LAN1. VyOS needs two things: the prefix to advertise, and (optionally, but you almost always want it) a DNS server, sent as a Recursive DNS Server (RDNSS) option. There's no DNS server in this lab, so 2001:db8:f000::53 just shows how it's delivered.
rdisc6 on the client asks for an RA and prints exactly what R1 sends:
- The prefix, with the
On-linkandAutonomous address conf.flags set: "this /64 is directly reachable here, and you may build your own address from it." - Router lifetime 1800 s: "use me as a default router for 30 minutes, unless I tell you otherwise." Routers re-advertise regularly.
- Stateful address conf. No: no DHCPv6 needed for addresses (that's the "M" flag).
- The DNS server.
The client builds its address from the prefix plus an interface identifier. Here that's derived from its MAC address (EUI-64), which is why the same c8e8:1bff:fef2:b85d ending appears on both its global and link-local addresses. Many desktop operating systems use random identifiers and temporary addresses instead, for privacy; the mechanism is the same.
Note the client's default route: via fe80::5054:ff:fe01:101, R1's link-local address, not its global one. That's normal in IPv6, and it means renumbering the LAN never breaks the default route.
The client can now reach the internet: one hop to R1, one to the ISP, then the server.
set service router-advert interface eth1 prefix 2001:db8:1000:1::/64
set service router-advert interface eth1 name-server '2001:db8:f000::53'- Line 1: Advertise LAN1's /64 for SLAAC.
- Line 2: And a DNS server (RDNSS).
root@client1:~# rdisc6 eth0
Soliciting ff02::2 (ff02::2) on eth0...
Hop limit : 64 ( 0x40)
Stateful address conf. : No
Stateful other conf. : No
Mobile home agent : No
Router preference : medium
Neighbor discovery proxy : No
Router lifetime : 1800 (0x00000708) seconds
Reachable time : unspecified (0x00000000)
Retransmit time : unspecified (0x00000000)
Prefix : 2001:db8:1000:1::/64
On-link : Yes
Autonomous address conf.: Yes
Valid time : 2592000 (0x00278d00) seconds
Pref. time : 14400 (0x00003840) seconds
Recursive DNS server : 2001:db8:f000::53
DNS server lifetime : 1800 (0x00000708) seconds
Source link-layer address: 52:54:00:01:01:01
from fe80::5054:ff:fe01:101
root@client1:~# ip -6 addr show dev eth0
2: eth0@if613: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link-netnsid 0
inet6 2001:db8:1000:1:c8e8:1bff:fef2:b85d/64 scope global dynamic mngtmpaddr
valid_lft 2591996sec preferred_lft 14396sec
inet6 fe80::c8e8:1bff:fef2:b85d/64 scope link
valid_lft forever preferred_lft forever
root@client1:~# ip -6 route
2001:db8:1000:1::/64 dev eth0 proto kernel metric 256 expires 2591995sec pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via fe80::5054:ff:fe01:101 dev eth0 proto ra metric 1024 expires 1795sec hoplimit 64 pref medium
root@client1:~# ping -6 -c 2 2001:db8:f000::10
PING 2001:db8:f000::10(2001:db8:f000::10) 56 data bytes
64 bytes from 2001:db8:f000::10: icmp_seq=1 ttl=62 time=4.73 ms
64 bytes from 2001:db8:f000::10: icmp_seq=2 ttl=62 time=2.49 ms
--- 2001:db8:f000::10 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1011ms
rtt min/avg/max/mdev = 2.487/3.608/4.730/1.121 ms
root@client1:~# traceroute -6 -n 2001:db8:f000::10
traceroute to 2001:db8:f000::10 (2001:db8:f000::10), 30 hops max, 80 byte packets
1 2001:db8:1000:1::1 5.156 ms 5.698 ms 8.066 ms
2 2001:db8:ffff:1::1 8.363 ms 8.353 ms 8.334 ms
3 2001:db8:f000::10 8.831 ms 9.018 ms 9.027 ms- Line 10: R1 offers itself as a default router for 30 minutes.
- Lines 13–17: The prefix, with on-link and autonomous (SLAAC) flags set.
- Lines 18–19: The DNS server.
- Line 21: The RA comes from R1's link-local address.
- Line 24: client1's own address: prefix + interface ID from its MAC.
- Line 31: Default route via R1's link-local address, learnt from the RA (
proto ra). - Lines 42–44: R1, the ISP, then the server.
Check your understanding
client1's default route points at fe80::5054:ff:fe01:101. What is that?
- R1's link-local address on LAN1
- The ISP's router
- A DNS server
- client1's own address