[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