Ipv6 (address and route) problems with some clients (raspberrypi)

Hi
I try to set up my local site with four zones for IPv6 and there is a lot of things not working. It seems as if this is caused mainly by the clients, but I'm unsure about that. Does have someone similar problems?

I have no uplink, so IPv6 is only site local (at the moment). I have an ULA set.

What I get is the following for devices with dhclient (Linux Mint 19):

enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.41.204  netmask 255.255.255.0  broadcast 192.168.41.255
        inet6 fe80::4fb1:379c:2e4d:6763  prefixlen 64  scopeid 0x20<link>
        inet6 fd42::41:7c31:e0f2:72ad:8f63  prefixlen 64  scopeid 0x0<global>
        inet6 fd42:0:0:41::383  prefixlen 128  scopeid 0x0<global>

$ ip -6 route
fd42:0:0:41::383 dev enp0s31f6 proto kernel metric 256  pref medium
fd42:0:0:41::/64 dev enp0s31f6 proto ra metric 100  pref medium
fd42::/56 via fe80::24f5:a2ff:fe2d:7cc0 dev enp0s31f6 proto ra metric100  pref medium
fe80::/64 dev enp0s31f6 proto kernel metric 256  pref medium

So this is working well. The device gets a IPv6 from DHCP ( fd42:0:0:41::383) and it get a route matchign the ULA: fd42::/56 via fe80::24f5:a2ff:fe2d:7cc0 dev enp0s31f6 proto ra metric 100 pref medium

The raspberries have this:

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.40.62  netmask 255.255.255.0  broadcast 192.168.40.255
        inet6 fd42::40:dea6:32ff:fe04:c18b  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::dea6:32ff:fe04:c18b  prefixlen 64  scopeid 0x20<link>

$ ip -6 route
::1 dev lo proto kernel metric 256 pref medium
fd42:0:0:40::/64 dev eth0 proto ra metric 202 mtu 1500 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium default via fe80::24f5:a2ff:fe2d:7cc0 dev eth0 proto ra metric 202 mtu
1500 pref medium

No DHCP assigned IP address, no route matching the ULA.

I found this here: https://roy.marples.name/archives/dhcpcd-discuss/0002803.html
and for me it seems as if this all is caused be the raspberry's dhcpcd not taking the announced information correctly. I also tried with a completely fresh install of a raspberry, same result.

Does someone has similar problems?

the RPI is doing SLAAC, which is handled by the kernel and doesn't have anything to do with the DHCP client. apparently your router is not announcing itself as a router for the whole ULA prefix?

My raspi is able to pick up IP from dhcpv6. However I am not getting the whole ULA prefix, which is not a problem because I am getting the default route anyway.

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.3  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fd00:bbbb::3  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::7697:2eb:b2ba:ffef  prefixlen 64  scopeid 0x20<link>
        inet6 fd00:bbbb::96ba:483f:89f5:9f2f  prefixlen 64  scopeid 0x0<global>
trendy@raspi:[~]$ dhcpcd --version
dhcpcd 8.1.2
Copyright (c) 2006-2019 Roy Marples
Compiled in features: INET ARP ARPing IPv4LL INET6 DHCPv6 AUTH
trendy@raspi:[~]$ cat /etc/debian_version 
10.2
trendy@raspi:[~]$ cat /etc/os-release     
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian

OP's Mint is getting it though.

Is the raspbian buster really doing only SLAAC? I know that Android ist doing SLAAC only, but for the raspi I have an emtpy /etc/network/interfaces and as far as I read, network configuration is handled be dhcpcd with /etc/dhcpcd.conf as configuration. It should use DHCPv6 if announced by the router. Shouldn't it?

May you send me your configuration? Also, how is OpenWrt set up?
For me it is for DHCP6 page:
'Server'
'Server'
'disabled'
'stateles + statefull'
announce default route is unchecked.

But Mint is getting it. And I would expect it should work with SLAAC also, as it must be possible with IPv6 to set up a site with multiple zones / subnets without having a public uplink. For this this routing is necessary.

In raspi there isn't any configuration, everything works out-of-the-box.
And the IPv6 settings under LAN interface are the same.

Now than this is a bit weird. So it may be the public prefix make it work on your configuration.

Operational considerations:

    Default Routing: connectivity may be broken if ULAs are used as default route. When using RIO (Route
 Information Option) in [RFC4191], specific routes can be added without a default route, thus avoiding bad
 user experience due to timeouts on ICMPv6 redirects. This behavior was well documented in [RFC7084] 
as rule ULA-5 "An IPv6 CE router MUST NOT advertise itself as a default router with a Router Lifetime 
greater than zero whenever all of its configured and delegated prefixes are ULA prefixes." and along with 
rule L-3 "An IPv6 CE router MUST advertise itself as a router for the delegated prefix(es) (and ULA prefix if
 configured to provide ULA addressing) using the "Route Information Option" specified in Section 2.3 of 
[RFC4191]. This advertisement is independent of having or not having IPv6 connectivity on the WAN 
interface.". However, it needs to be noticed that current OSes don't all support [RFC4191].

Now, I will dig a bit deeper into the last sentence regarding raspbian buster. :wink:

I'm pretty sure mint is getting its route via dhcpv6.

on the RasPi see if it's using systemd-network config. It probably is and isn't using dhcpd at all. If you check to announce default route on your router the routing should work fine for SLAAC hosts. The issue is that it's possible for some hosts to be routers for ULA networks only so they shouldn't announce as default routers... though I would think they should announce their full ULA routes... perhaps systemd networking has a bug related to ULA routes?

I found and (somewhat) resolved a first issue.

The raspberries now also get an IPv6 by DHCP. Remember: they are connected to the same interface as the Mint devices. So: the raspberries systemd-networkd uses the installed dhcpcd (tested with modification in /etc/dhcpcd.conf).

The raspberries are on the same interface of the router but 'behind' a powerline connection. I replaced this two month ago with a new Devolo Magic 2 Combo (gives me 1600Mb/s or better 450Mb/s netto). I putted in the old Combo yesterday ... and magically: the raspberries got a DHCP assigned IPv6 address.
I will file a bug report at Devolo.

So first issue solved: no more 'weird' and not undestandable actions on the ip assignment.

But they still don't get the fd42::/56 route like the Mint devices. SO I still need to get this one figured out.

I yesterday found this: https://superuser.com/questions/1159031/linux-ipv6-ra-route-information-24-behavior. By the way: I'm pretty sure the Mint uses NetworkManager.