Subject: Re: Problem with IPv6 privacy addresses in 7.0

From: Stefano Brivio <[email-masked]>
Date: Fri, 29 May 2026 22:04:15 +0200 (CEST)

On Fri, 29 May 2026 18:28:58 +0000
Tj <[email-masked]> wrote:

> I believe I hit this on a router using Debian 13 with v7.0.* kernel this week that
> uses systemd-networkd to configure IPV6 RA and prefix delegation after
> moving from v6.19.*.
> 
> Symptom was the router could no longer reach public IPv6 addresses
> itself but forwarding was unaffected.
> 
> The ISP (Starlink) provides a /64 prefix via RA and a /56 via DHCPv6. networkd
> allocates a static suffix address from both to the WAN-side interface.
> 
> I discovered after much experimentation that instead of the usual /56
> address being the source it was choosing the /64 and failing.

Do you really mean an address configured as /56, or a /64 address that
systemd-networkd derives from a /56 delegated prefix?

Because more specific addresses / longest matching prefixes (RFC 6724
Section 5., Rule 8, implemented by ipv6_get_saddr_eval()) should anyway
be preferred as source addresses, regardless of the order of insertion
of addresses with the same scope.

I'm looking into possible assumptions made by systemd-networkd in this
case. *If* this is confirmed, I also start thinking that a revert and
exporting the correct implementation as non-default using a netlink
flag would be preferable. at this point.

> Router uses policy routing so my work-around was to add a rule so the
> /64 address is added to the WAN interface's route table.
> 
> [RoutingPolicyRule]
> To=::/0
> From=2a0d:3344:aaaa:bbbb::/64
> Priority=30100
> Table=starlink
> 
> The WAN interface config for  RA and PD is:
> 
> [IPv6AcceptRA]
> UseGateway=yes
> UseDNS=no
> UseDomains=no
> Token=static:::ff
> # when RouteTable is set a table name is explicitly required in any [Route] section without a Table= of its own
> # names defined in /etc/systemd/networkd.conf.d/51-RouteTable.conf as:  [Network] RouteTable=
> RouteTable=starlink
> 
> [DHCPv6]
> UseAddress=no
> UseDNS=no
> UseNTP=no
> UseHostname=no
> UseDomains=no
> UseDelegatedPrefix=yes
> PrefixDelegationHint=::/56
> ## asked for in RFE https://github.com/systemd/systemd/issues/31566
> ##RouteTable=starlink
> 
> [DHCPPrefixDelegation]
> Announce=false
> UplinkInterface=:self
> Assign=yes
> Token=static:::1
> SubnetId=0xff

-- 
Stefano