[systemd-devel] systemd-networkd not sending periodic router advertisements

Mike Gilbert floppym at gentoo.org
Tue Oct 11 19:00:06 UTC 2022


On Sat, Oct 8, 2022 at 10:55 AM Marcel Menzel <mail at mcl.gg> wrote:
>
> Hello List,
>
> after switching from radvd to systemd-networkd for router advertisements, I noticed my Android device losing IPv6 connection after a while and not displaying any IPv6 Addresses anymore in the network overview.
>
> I am aware with IPv6 issues on Android on certain vendors / ROMs, but after trying to troubleshoot it, I noticed systemd-networkd not sending periodic router advertisements into my network compared to radvd.
>
> In radvd, there's the MinRtrAdvInterval and MaxRtrAdvInterval config option, whileas for systemd-networkd I wasn't able to find any of these options. Trying to adjust timers for PreferredLifetimeSec, ValidLifetimeSec or RouterLifetimeSec I still wasn't able to get networkd to send out periodic RAs (either with the defaults or my own values).
>
> There will only be sent a router advertisement for client initiated router solicitations, like with the rdisc6 tool. I confirmed this with radvdump and tcpdump. As soon as I re-start radvd, IPv6 Adresses re-appear on my Android device. Multicast snooping has been disabled on all of my bridges. My sd-networkd .network config file for one bridge looks like this:
>
>     [Match]
>     Name=br0
>
>     [Network]
>     Address=fe80::1/64
>     Address=2a0f:85c1:beef:2031::/64
>     IPv6AcceptRA=false
>     IPv6SendRA=yes
>     IPv6PrivacyExtensions=no
>
>     [IPv6SendRA]
>     RouterLifetimeSec = 60
>     EmitDNS = yes
>     DNS = fd00:0:0:10::4
>     EmitDomains = no
>
>     [IPv6Prefix]
>     Prefix=2a0f:85c1:beef:2031::/64
>     PreferredLifetimeSec=60
>     ValidLifetimeSec=300
>
> Did I miss an option for enabling periodic RAs or isn't there simply a way to achieve this?`

systemd-networkd sends periodic RAs on my home network. I am running
systemd-251.5.

The period is not directly configurable. It basically picks a random
number between 200 and 600 seconds by default. However, this time can
be reduced to as little as 4 seconds by setting RouterLifetimeSec to
some low value.

I have IPv6SendRA enabled directly on an ethernet interface; I wonder
if there is some conflict with trying to enable it on a bridge.
Perhaps you need to set the proper scope for your manually assigned
link-local address? Something like:

[Address]
Address=fe80::1/64
Scope=link


More information about the systemd-devel mailing list