Re: Problem with IPv6 privacy addresses in 7.0
Stefano Brivio <[email protected]>
| Newsgroups | dev.linux.lists.regressions,org.kernel.vger.netdev |
|---|---|
| Organization | Red Hat |
| Message-ID | <20260529220415.22d0be8d@elisabeth> |
On Fri, 29 May 2026 18:28:58 +0000 Tj <[email protected]> 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