systemd / systemd

The systemd System and Service Manager
https://systemd.io
GNU General Public License v2.0
12.84k stars 3.69k forks source link

systemd-networkd-wait-online times out when no interface is required for online #29388

Open lf- opened 9 months ago

lf- commented 9 months ago

systemd version the issue has been seen with

253.6

Used distribution

NixOS unstable (5148520bfab6, from 2 weeks ago)

Linux kernel version used

6.1.53

CPU architectures issue was seen on

x86_64

Component

systemd-networkd, systemd-networkd-wait-online

Expected behaviour you didn't see

I expect systemd-networkd-wait-online to exit expediently if there are no interfaces present that are required for online.

Unexpected behaviour you saw

systemd-networkd-wait-online waits until it times out.

Steps to reproduce the problem

This was observed in a qemu VM providing an ethernet interface with DHCP.

You can launch a x86_64 VM exhibiting this bug in one command:

nix --extra-experimental-features 'nix-command flakes' run git+https://gist.github.com/lf-/3ad92d06adfec348fa7090e4b5188c51
(in another terminal; the password is "root")
ssh -p 2222 root@localhost

See the NixOS config causing it here: https://gist.github.com/lf-/3ad92d06adfec348fa7090e4b5188c51

I believe that the necessary conditions to cause this bug are that there are no interfaces marked as RequiredForOnline based on poking around the code, but I'm not sure.

I have dumped a bunch of the generated configs of the system below, hopefully enough that if you don't want to use Nix, it is still reproducible.

Additional program output to the terminal or log subsystem illustrating the issue

cat /etc/systemd/network/99-ethernet-default-dhcp.network ::

[Match]
Name=en*
Name=eth*

[Link]
RequiredForOnline=false

[Network]
DHCP=yes
IPv6PrivacyExtensions=kernel

[root@nixos:~]# systemctl cat systemd-networkd-wait-online
# /etc/systemd/system/systemd-networkd-wait-online.service
#  SPDX-License-Identifier: LGPL-2.1-or-later
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Wait for Network to be Configured
Documentation=man:systemd-networkd-wait-online.service(8)
ConditionCapability=CAP_NET_ADMIN
DefaultDependencies=no
Conflicts=shutdown.target
BindsTo=systemd-networkd.service
After=systemd-networkd.service
Before=network-online.target shutdown.target

[Service]
Type=oneshot
ExecStart=/nix/store/rjz12jr6wa46vcaj7v2nsi2x17jibipm-systemd-253.6/lib/systemd/systemd-networkd-wait-online
RemainAfterExit=yes

[Install]
WantedBy=network-online.target

# /nix/store/80viy7a92r2amx7rb35sc87r641wibsi-system-units/systemd-networkd-wait-online.service.d/overrides.conf
[Unit]

[Service]
Environment="LOCALE_ARCHIVE=/nix/store/zgijbk3l0i1dsc2bsn60qnlb8q6zf70a-glibc-locales-2.37-8/lib/locale/locale-archive"
Environment="PATH=/nix/store/apn3p2b40xvirn7w740wv2gy330ppib5-coreutils-9.3/bin:/nix/store/xvhh3dzdqfaz78nhya1xildz2r38sy3s-findutils-4.9.0/bin:/nix/store/4hx292xs95frrd1hqwwfc2fpcz0niwgp-gnugrep-3.11/bin:/nix/store/7snlgj0l0ys6lbcl5pyy8vwnmk26wh8x-g>
Environment="SYSTEMD_LOG_LEVEL=debug"
Environment="TZDIR=/nix/store/lvf61q95f827z8dzwnnchdbr0dlpbv8n-tzdata-2023c/share/zoneinfo"

ExecStart=
ExecStart=/nix/store/rjz12jr6wa46vcaj7v2nsi2x17jibipm-systemd-253.6/lib/systemd/systemd-networkd-wait-online "--timeout=120"

networkctl status enp0s4 ::

● 2: enp0s4                     
                     Link File: /nix/store/rjz12jr6wa46vcaj7v2nsi2x17jibipm-systemd-253.6/lib/systemd/network/99-default.link
                  Network File: /etc/systemd/network/99-ethernet-default-dhcp.network
                         State: routable (configured)
                  Online state: unknown
                          Type: ether
                          Path: pci-0000:00:04.0
                        Driver: virtio_net
                        Vendor: Red Hat, Inc.
                         Model: Virtio network device
              Hardware Address: 02:00:00:00:00:01
                           MTU: 1500 (min: 68, max: 65535)
                         QDisc: fq_codel
  IPv6 Address Generation Mode: eui64
      Number of Queues (Tx/Rx): 1/1
              Auto negotiation: no
                       Address: 10.0.2.15 (DHCP4 via 10.0.2.2)
                                fec0::ff:fe00:1
                                fec0::7953:995f:b016:d5b7
                                fe80::ff:fe00:1
                       Gateway: 10.0.2.2
                                fe80::2
                           DNS: 10.0.2.3
             Activation Policy: up
           Required For Online: no
               DHCP4 Client ID: IAID:0xc272f609/DUID
             DHCP6 Client DUID: DUID-EN/Vendor:0000ab1175a82b9e27e2881b0000

<snip> see below

networkctl status ::

●        State: routable
  Online state: unknown
       Address: 10.0.2.15 on enp0s4
                fec0::ff:fe00:1 on enp0s4
                fec0::7953:995f:b016:d5b7 on enp0s4
                fe80::ff:fe00:1 on enp0s4
       Gateway: 10.0.2.2 on enp0s4
                fe80::2 on enp0s4
           DNS: 10.0.2.3

<snip> see below

journalctl -xeu 'systemd-network*' ::

Sep 30 23:18:25 nixos systemd[1]: Starting Network Configuration...
░░ Subject: A start job for unit systemd-networkd.service has begun execution
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ A start job for unit systemd-networkd.service has begun execution.
░░ 
░░ The job identifier is 183.
Sep 30 23:18:25 nixos systemd-networkd[476]: Bus bus-api-network: changing state UNSET → OPENING
Sep 30 23:18:25 nixos systemd-networkd[476]: sd-bus: starting bus bus-api-network by connecting to /run/dbus/system_bus_socket...
Sep 30 23:18:25 nixos systemd-networkd[476]: Bus bus-api-network: changing state OPENING → AUTHENTICATING
Sep 30 23:18:25 nixos systemd-networkd[476]: Registering bus object implementation for path=/org/freedesktop/network1 iface=org.freedesktop.network1.Manager
Sep 30 23:18:25 nixos systemd-networkd[476]: Registering bus object implementation for path=/org/freedesktop/network1/link iface=org.freedesktop.network1.DHCPServer
Sep 30 23:18:25 nixos systemd-networkd[476]: Registering bus object implementation for path=/org/freedesktop/network1/link iface=org.freedesktop.network1.Link
Sep 30 23:18:25 nixos systemd-networkd[476]: Registering bus object implementation for path=/org/freedesktop/network1/network iface=org.freedesktop.network1.Network
Sep 30 23:18:25 nixos systemd-networkd[476]: Registering bus object implementation for path=/org/freedesktop/LogControl1 iface=org.freedesktop.LogControl1
Sep 30 23:18:25 nixos systemd-networkd[476]: sd-device-monitor(n/a): Failed to stat PID1's netns, ignoring: No such file or directory
Sep 30 23:18:25 nixos systemd-networkd[476]: Virtualization QEMU found in DMI (/sys/class/dmi/id/sys_vendor)
Sep 30 23:18:25 nixos systemd-networkd[476]: UML virtualization not found in /proc/cpuinfo.
Sep 30 23:18:25 nixos systemd-networkd[476]: Virtualization XEN not found, /proc/xen does not exist
Sep 30 23:18:25 nixos systemd-networkd[476]: Virtualization found, CPUID=KVMKVMKVM
Sep 30 23:18:25 nixos systemd-networkd[476]: Found VM virtualization kvm
Sep 30 23:18:25 nixos systemd-networkd[476]: /nix/store/rjz12jr6wa46vcaj7v2nsi2x17jibipm-systemd-253.6/lib/systemd/network/80-container-host0.network: Conditions in the file do not match the system environment, skipping.
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Saved new link: ifindex=1, iftype=LOOPBACK(772), kind=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Saved original MTU 65536 (min: 0, max: 4294967295)
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Saved hardware address: 00:00:00:00:00:00
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Saved IPv6 link-local address generation mode: eui64
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Flags change: +LOOPBACK +UP +LOWER_UP +RUNNING
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Link UP
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Gained carrier
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: udev initialized link
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Saved new link: ifindex=2, iftype=ETHER(1), kind=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Saved original MTU 1500 (min: 68, max: 65535)
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Saved permanent hardware address: 02:00:00:00:00:01
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Saved hardware address: 02:00:00:00:00:01
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Saved IPv6 link-local address generation mode: eui64
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Flags change: +MULTICAST +BROADCAST
Sep 30 23:18:25 nixos systemd-networkd[476]: sd-device: Failed to chase symlinks in "/sys/devices/pci0000:00/0000:00:04.0/physfn".
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: udev initialized link
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Received new foreign QDisc (configured): handle=0:0, parent=ffff:ffff, kind=noqueue
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Received new foreign address (configured): 127.0.0.1/8 (valid forever, preferred forever), flags: permanent, scope: host
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: link_check_ready(): link is in pending state.
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Received new foreign address (configured): ::1/128 (valid forever, preferred forever), flags: permanent,no-prefixroute, scope: host
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: link_check_ready(): link is in pending state.
Sep 30 23:18:25 nixos systemd-networkd[476]: rtnl: received non-static neighbor, ignoring.
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Received new foreign route (configured): dst: 127.0.0.0/8, src: n/a, gw: n/a, prefsrc: 127.0.0.1, scope: host, table: local(255), proto: kernel, type: local, nexthop: 0, priority: 0, flags: n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Received new foreign route (configured): dst: 127.0.0.1/32, src: n/a, gw: n/a, prefsrc: 127.0.0.1, scope: host, table: local(255), proto: kernel, type: local, nexthop: 0, priority: 0, flags: n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Received new foreign route (configured): dst: 127.255.255.255/32, src: n/a, gw: n/a, prefsrc: 127.0.0.1, scope: link, table: local(255), proto: kernel, type: broadcast, nexthop: 0, priority: 0, flags: n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Received new foreign route (configured): dst: ::1/128, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: local(255), proto: kernel, type: local, nexthop: 0, priority: 0, flags: n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: Remembering foreign routing policy rule (configured): priority: 0, 0.0.0.0/0 -> 0.0.0.0/0, iif: n/a, oif: n/a, table: local(255)
Sep 30 23:18:25 nixos systemd-networkd[476]: Remembering foreign routing policy rule (configured): priority: 32766, 0.0.0.0/0 -> 0.0.0.0/0, iif: n/a, oif: n/a, table: main(254)
Sep 30 23:18:25 nixos systemd-networkd[476]: Remembering foreign routing policy rule (configured): priority: 32767, 0.0.0.0/0 -> 0.0.0.0/0, iif: n/a, oif: n/a, table: default(253)
Sep 30 23:18:25 nixos systemd-networkd[476]: rtnl: received rule message with invalid family 128, ignoring.
Sep 30 23:18:25 nixos systemd-networkd[476]: rtnl: received rule message with invalid family 129, ignoring.
Sep 30 23:18:25 nixos systemd-networkd[476]: Remembering foreign routing policy rule (configured): priority: 0, ::/0 -> ::/0, iif: n/a, oif: n/a, table: local(255)
Sep 30 23:18:25 nixos systemd-networkd[476]: Remembering foreign routing policy rule (configured): priority: 32766, ::/0 -> ::/0, iif: n/a, oif: n/a, table: main(254)
Sep 30 23:18:25 nixos systemd-networkd[476]: Enumeration completed
Sep 30 23:18:25 nixos systemd[1]: Started Network Configuration.
░░ Subject: A start job for unit systemd-networkd.service has finished successfully
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ A start job for unit systemd-networkd.service has finished successfully.
░░ 
░░ The job identifier is 183.
Sep 30 23:18:25 nixos systemd-networkd[476]: Bus bus-api-network: changing state AUTHENTICATING → HELLO
Sep 30 23:18:25 nixos systemd-networkd[476]: Sent message type=method_call sender=n/a destination=org.freedesktop.DBus path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=Hello cookie=1 reply_cookie=0 signature=n/a error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: Sent message type=method_call sender=n/a destination=org.freedesktop.DBus path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=RequestName cookie=2 reply_cookie=0 signature=su error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: Sent message type=method_call sender=n/a destination=org.freedesktop.DBus path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=AddMatch cookie=3 reply_cookie=0 signature=s error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: Got message type=method_return sender=org.freedesktop.DBus destination=:1.4 path=n/a interface=n/a member=n/a  cookie=1 reply_cookie=1 signature=s error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: Bus bus-api-network: changing state HELLO → RUNNING
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: New interface name 'eth0' received from the kernel does not correspond with the name currently configured on the actual interface 'enp0s4'. Ignoring.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Found driver: virtio_net
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Failed to get driver, continuing without: Operation not supported
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Saved permanent hardware address: 00:00:00:00:00:00
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Link state is up-to-date
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: State changed: pending -> initialized
Sep 30 23:18:25 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_31 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=4 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd[1]: Starting Wait for Network to be Configured...
░░ Subject: A start job for unit systemd-networkd-wait-online.service has begun execution
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ A start job for unit systemd-networkd-wait-online.service has begun execution.
░░ 
░░ The job identifier is 189.
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: Unmanaging interface.
Sep 30 23:18:25 nixos systemd-networkd[476]: lo: State changed: initialized -> unmanaged
Sep 30 23:18:25 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_31 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=5 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Link state is up-to-date
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: State changed: pending -> initialized
Sep 30 23:18:25 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=6 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: found matching network '/etc/systemd/network/99-ethernet-default-dhcp.network'.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Configuring with /etc/systemd/network/99-ethernet-default-dhcp.network.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: State changed: initialized -> configuring
Sep 30 23:18:25 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=7 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: Setting '/proc/sys/net/ipv6/conf/enp0s4/disable_ipv6' to '0'
Sep 30 23:18:25 nixos systemd-networkd[476]: No change in value '0', suppressing write
Sep 30 23:18:25 nixos systemd-networkd[476]: Setting '/proc/sys/net/ipv6/conf/enp0s4/accept_ra' to '0'
Sep 30 23:18:25 nixos systemd-networkd[476]: Setting '/proc/sys/net/ipv6/conf/enp0s4/proxy_ndp' to '0'
Sep 30 23:18:25 nixos systemd-networkd[476]: No change in value '0', suppressing write
Sep 30 23:18:25 nixos systemd-networkd[476]: Setting '/proc/sys/net/ipv4/conf/enp0s4/promote_secondaries' to '1'
Sep 30 23:18:25 nixos systemd-networkd[476]: No change in value '1', suppressing write
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Requested to activate link
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Requested configuring of the DHCPv4 client.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Requested configuring of the DHCPv6 client.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Requested configuring of the IPv6 Router Discovery.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): link is not activated.
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Bringing link up
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Flags change: +UP +LOWER_UP
Sep 30 23:18:25 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=8 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: Link UP
Sep 30 23:18:25 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=9 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:25 nixos systemd-networkd[476]: Got message type=signal sender=org.freedesktop.DBus.Local destination=n/a path=/org/freedesktop/DBus/Local interface=org.freedesktop.DBus.Local member=Connected  cookie=4294967295 reply_cookie=0 signature=n/a error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: Got message type=signal sender=org.freedesktop.DBus destination=:1.4 path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=NameAcquired  cookie=2 reply_cookie=0 signature=s error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: Got message type=signal sender=org.freedesktop.DBus destination=:1.4 path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=NameAcquired  cookie=3 reply_cookie=0 signature=s error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd-wait-online[510]: Found link lo(1)
Sep 30 23:18:25 nixos systemd-networkd[476]: Got message type=method_return sender=org.freedesktop.DBus destination=:1.4 path=n/a interface=n/a member=n/a  cookie=4 reply_cookie=2 signature=u error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: Successfully acquired requested service name.
Sep 30 23:18:25 nixos systemd-networkd[476]: Got message type=method_return sender=org.freedesktop.DBus destination=:1.4 path=n/a interface=n/a member=n/a  cookie=5 reply_cookie=3 signature=n/a error-name=n/a error-message=n/a
Sep 30 23:18:25 nixos systemd-networkd[476]: Match type='signal',sender='org.freedesktop.login1',path='/org/freedesktop/login1',interface='org.freedesktop.login1.Manager',member='PrepareForSleep' successfully installed.
Sep 30 23:18:25 nixos systemd-networkd-wait-online[510]: Found link enp0s4(2)
Sep 30 23:18:25 nixos systemd-networkd-wait-online[510]: enp0s4: link is ignored
Sep 30 23:18:25 nixos systemd-networkd-wait-online[510]: lo: link is ignored
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Received new foreign route (configured): dst: ff00::/8, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: local(255), proto: kernel, type: multicast, nexthop: 0, priority: 256, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Received new foreign route (configured): dst: fe80::/64, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: main(254), proto: kernel, type: unicast, nexthop: 0, priority: 256, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Flags change: +RUNNING
Sep 30 23:18:26 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=10 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Gained carrier
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: found matching network '/etc/systemd/network/99-ethernet-default-dhcp.network'.
Sep 30 23:18:26 nixos systemd-networkd-wait-online[510]: enp0s4: link is ignored
Sep 30 23:18:26 nixos systemd-networkd-wait-online[510]: lo: link is ignored
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: LLDP Rx: Started LLDP client
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:26 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=11 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:26 nixos systemd-networkd-wait-online[510]: enp0s4: link is ignored
Sep 30 23:18:26 nixos systemd-networkd-wait-online[510]: lo: link is ignored
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 client: STARTED on ifindex 2
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 client is configured, acquiring DHCPv4 lease.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: IPv6 link-local address is not set, delaying to start DHCPv6 client.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv6 client is configured.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: IPv6 Router Discovery is configured.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 client: DISCOVER
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 client: Received message from RAW socket, processing.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 client: OFFER
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 client: REQUEST (requesting)
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 client: Received message from RAW socket, processing.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 client: ACK
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 client: lease expires in 23h 59min 59s
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 client: T2 expires in 20h 59min 59s
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 client: T1 expires in 12h
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 address 10.0.2.15/24, gateway 10.0.2.2 acquired from 10.0.2.2
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Requesting DHCPv4 address (n/a): 10.0.2.15/24 (valid for 23h 59min 59s, preferred for 23h 59min 59s), flags: tentative, scope: global
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCP: No static routes received from DHCP server.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Requesting DHCPv4 route (n/a): dst: 10.0.2.2/32, src: n/a, gw: n/a, prefsrc: 10.0.2.15, scope: link, table: main(254), proto: dhcp, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Requesting DHCPv4 route (n/a): dst: n/a, src: n/a, gw: 10.0.2.2, prefsrc: 10.0.2.15, scope: global, table: main(254), proto: dhcp, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCP: requested route destination 10.0.2.3/32 is in the assigned network 10.0.2.0/24, ignoring gateway address 10.0.2.2
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Requesting DHCPv4 route (n/a): dst: 10.0.2.3/32, src: n/a, gw: n/a, prefsrc: 10.0.2.15, scope: link, table: main(254), proto: dhcp, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): address 10.0.2.15/24 is not ready.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Configuring DHCPv4 address (requesting): 10.0.2.15/24 (valid for 23h 59min 59s, preferred for 23h 59min 59s), flags: tentative, scope: global
Sep 30 23:18:26 nixos systemd-networkd-wait-online[510]: enp0s4: link is ignored
Sep 30 23:18:26 nixos systemd-networkd-wait-online[510]: lo: link is ignored
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Configuring DHCPv4 route (requesting): dst: 10.0.2.2/32, src: n/a, gw: n/a, prefsrc: 10.0.2.15, scope: link, table: main(254), proto: dhcp, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Configuring DHCPv4 route (requesting): dst: n/a, src: n/a, gw: 10.0.2.2, prefsrc: 10.0.2.15, scope: global, table: main(254), proto: dhcp, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Configuring DHCPv4 route (requesting): dst: 10.0.2.3/32, src: n/a, gw: n/a, prefsrc: 10.0.2.15, scope: link, table: main(254), proto: dhcp, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Received updated DHCPv4 address (configured): 10.0.2.15/24 (valid for 23h 59min 59s, preferred for 23h 59min 59s), flags: n/a, scope: global
Sep 30 23:18:26 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=12 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:26 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=13 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:26 nixos systemd-networkd-wait-online[510]: enp0s4: link is ignored
Sep 30 23:18:26 nixos systemd-networkd-wait-online[510]: lo: link is ignored
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Received new foreign route (configured): dst: 10.0.2.15/32, src: n/a, gw: n/a, prefsrc: 10.0.2.15, scope: host, table: local(255), proto: kernel, type: local, nexthop: 0, priority: 0, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Received new foreign route (configured): dst: 10.0.2.255/32, src: n/a, gw: n/a, prefsrc: 10.0.2.15, scope: link, table: local(255), proto: kernel, type: broadcast, nexthop: 0, priority: 0, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Received new foreign route (configured): dst: 10.0.2.0/24, src: n/a, gw: n/a, prefsrc: 10.0.2.15, scope: link, table: main(254), proto: kernel, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: dhcp4_check_ready(): DHCPv4 address and routes are not set.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Received remembered DHCPv4 route (configured): dst: 10.0.2.2/32, src: n/a, gw: n/a, prefsrc: 10.0.2.15, scope: link, table: main(254), proto: dhcp, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: dhcp4_check_ready(): DHCPv4 address and routes are not set.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Received remembered DHCPv4 route (configured): dst: n/a, src: n/a, gw: 10.0.2.2, prefsrc: 10.0.2.15, scope: global, table: main(254), proto: dhcp, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: dhcp4_check_ready(): DHCPv4 address and routes are not set.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: Received remembered DHCPv4 route (configured): dst: 10.0.2.3/32, src: n/a, gw: n/a, prefsrc: 10.0.2.15, scope: link, table: main(254), proto: dhcp, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: DHCPv4 address and routes set.
Sep 30 23:18:26 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv6LL is not configured yet.
Sep 30 23:18:27 nixos systemd-networkd[476]: enp0s4: Received new foreign address (configured): fe80::ff:fe00:1/64 (valid forever, preferred forever), flags: permanent, scope: link
Sep 30 23:18:27 nixos systemd-networkd[476]: enp0s4: Gained IPv6LL
Sep 30 23:18:27 nixos systemd-networkd[476]: enp0s4: Discovering IPv6 routers
Sep 30 23:18:27 nixos systemd-networkd[476]: enp0s4: NDISC: Started IPv6 Router Solicitation client
Sep 30 23:18:27 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv4LL:no DHCPv4:yes DHCPv6:no DHCP-PD:no NDisc:no
Sep 30 23:18:27 nixos systemd-networkd[476]: enp0s4: State changed: configuring -> configured
Sep 30 23:18:27 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=14 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:27 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=15 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:27 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=16 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:27 nixos systemd-networkd[476]: enp0s4: Received new foreign route (configured): dst: fe80::ff:fe00:1/128, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: local(255), proto: kernel, type: local, nexthop: 0, priority: 0, flags: n/a
Sep 30 23:18:27 nixos systemd-networkd-wait-online[510]: enp0s4: link is ignored
Sep 30 23:18:27 nixos systemd-networkd-wait-online[510]: lo: link is ignored
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: NDISC: Sent Router Solicitation, next solicitation in 3s
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: NDISC: Received Router Advertisement: flags none preference medium lifetime 1800 sec
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: NDISC: Invoking callback for 'router' event.
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: Requesting NDisc route (n/a): dst: n/a, src: n/a, gw: fe80::2, prefsrc: n/a, scope: global, table: main(254), proto: ra, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: Requesting NDisc route (n/a): dst: fec0::/64, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: main(254), proto: ra, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: Requesting NDisc address (n/a): fec0::ff:fe00:1/64 (valid for 23h 59min 59s, preferred for 3h 59min 59s), flags: tentative,manage-temporary-address,no-prefixroute, scope: global
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: Setting SLAAC addresses and router.
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: State changed: configured -> configuring
Sep 30 23:18:29 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=17 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: link_check_ready(): address fec0::ff:fe00:1/64 is not ready.
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: Configuring NDisc route (requesting): dst: n/a, src: n/a, gw: fe80::2, prefsrc: n/a, scope: global, table: main(254), proto: ra, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: Configuring NDisc route (requesting): dst: fec0::/64, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: main(254), proto: ra, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: Configuring NDisc address (requesting): fec0::ff:fe00:1/64 (valid for 23h 59min 59s, preferred for 3h 59min 59s), flags: tentative,manage-temporary-address,no-prefixroute, scope: global
Sep 30 23:18:29 nixos systemd-networkd-wait-online[510]: enp0s4: link is ignored
Sep 30 23:18:29 nixos systemd-networkd-wait-online[510]: lo: link is ignored
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: Received remembered NDisc route (configured): dst: n/a, src: n/a, gw: fe80::2, prefsrc: n/a, scope: global, table: main(254), proto: ra, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: ndisc_check_ready(): SLAAC addresses and routes are not set.
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: Received remembered NDisc route (configured): dst: fec0::/64, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: main(254), proto: ra, type: unicast, nexthop: 0, priority: 1024, flags: n/a
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: ndisc_check_ready(): SLAAC addresses and routes are not set.
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: Received updated NDisc address (configured): fec0::ff:fe00:1/64 (valid for 23h 59min 59s, preferred for 3h 59min 59s), flags: tentative,manage-temporary-address,no-prefixroute, scope: site
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: link_check_ready(): address fec0::ff:fe00:1/64 is not ready.
Sep 30 23:18:29 nixos systemd-networkd[476]: enp0s4: ndisc_check_ready(): no SLAAC address is ready.
Sep 30 23:18:30 nixos systemd-networkd[476]: enp0s4: Received new foreign address (configured): fec0::7953:995f:b016:d5b7/64 (valid for 23h 59min 58s, preferred for 3h 59min 58s), flags: temporary, scope: site
Sep 30 23:18:30 nixos systemd-networkd[476]: enp0s4: link_check_ready(): address fec0::ff:fe00:1/64 is not ready.
Sep 30 23:18:30 nixos systemd-networkd[476]: enp0s4: Received new foreign route (configured): dst: fec0::7953:995f:b016:d5b7/128, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: local(255), proto: kernel, type: local, nexthop: 0, priority: 0, flags: n/a
Sep 30 23:18:30 nixos systemd-networkd[476]: enp0s4: Received updated NDisc address (configured): fec0::ff:fe00:1/64 (valid for 23h 59min 58s, preferred for 3h 59min 58s), flags: manage-temporary-address,no-prefixroute, scope: site
Sep 30 23:18:30 nixos systemd-networkd[476]: enp0s4: SLAAC addresses and routes set.
Sep 30 23:18:30 nixos systemd-networkd[476]: enp0s4: link_check_ready(): IPv4LL:no DHCPv4:yes DHCPv6:no DHCP-PD:no NDisc:yes
Sep 30 23:18:30 nixos systemd-networkd[476]: enp0s4: State changed: configuring -> configured
Sep 30 23:18:30 nixos systemd-networkd[476]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=18 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 30 23:18:30 nixos systemd-networkd-wait-online[510]: enp0s4: link is ignored
Sep 30 23:18:30 nixos systemd-networkd-wait-online[510]: lo: link is ignored
Sep 30 23:18:30 nixos systemd-networkd[476]: enp0s4: Received new foreign route (configured): dst: fec0::ff:fe00:1/128, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: local(255), proto: kernel, type: local, nexthop: 0, priority: 0, flags: n/a
Sep 30 23:18:39 nixos systemd-networkd[476]: enp0s4: NDISC: No RA received before link confirmation timeout
Sep 30 23:18:39 nixos systemd-networkd[476]: enp0s4: NDISC: Invoking callback for 'timeout' event.
Sep 30 23:18:39 nixos systemd-networkd[476]: enp0s4: NDisc handler get timeout event
Sep 30 23:20:25 nixos systemd-networkd-wait-online[510]: Timeout occurred while waiting for network connectivity.
Sep 30 23:20:25 nixos systemd[1]: systemd-networkd-wait-online.service: Main process exited, code=exited, status=1/FAILURE
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ An ExecStart= process belonging to unit systemd-networkd-wait-online.service has exited.
░░ 
░░ The process' exit code is 'exited' and its exit status is 1.
Sep 30 23:20:25 nixos systemd[1]: systemd-networkd-wait-online.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ The unit systemd-networkd-wait-online.service has entered the 'failed' state with result 'exit-code'.
Sep 30 23:20:25 nixos systemd[1]: Failed to start Wait for Network to be Configured.
░░ Subject: A start job for unit systemd-networkd-wait-online.service has failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ A start job for unit systemd-networkd-wait-online.service has finished with a failure.
░░ 
░░ The job identifier is 189 and the job result is failed.
lf- commented 9 months ago

Repros in 254 also. I have pushed a new commit to the gist reproducer to use the updated NixOS version with systemd 254. Let me know if you need further details.

[root@nixos:~]# systemctl list-jobs
JOB UNIT                                 TYPE  STATE
223 systemd-networkd-wait-online.service start running
130 multi-user.target                    start waiting
222 network-online.target                start waiting

3 jobs listed.

[root@nixos:~]# systemctl --version
systemd 254 (254.3)
+PAM +AUDIT -SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT -QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK -XKBCOMMON +UTMP -SYSVINIT default-hierarchy=unified
yuwata commented 9 months ago

If you configure that all interfaces are not required for online, then why don't you disable systemd-networkd-wait-online.service ?? Enabling wait-online with such configuration is completely meaningless.

I guess, this is 'caused' by 2f96a29c2c55bdd67cdd8e0b0cfd6971968e4bca (v254, backported to v253 as https://github.com/systemd/systemd-stable/commit/abbd24e8a51d9b6ffcf99c8cfe89d9faba23ebdb (v253.6)). I think we cannot fix your 'issue' without re-introducing issue #27822.

lf- commented 9 months ago

Agh, of course, I half guessed there was such a reason. This is then a NixOS bug, imo. Let me go file a PR there to turn off the wait-online service if nothing is configured.

lf- commented 9 months ago

Although: systemd could plausibly notice that there are no possible config files that could make any interface that might appear RequiredForOnline, at least in theory?

lf- commented 9 months ago

Hrmm. OK NixOS has their own reasons: they want to avoid accidentally adding requirements to be online https://github.com/nixos/nixpkgs/blob/1f34babe84854576c936969f8a879403be9f2515/nixos/modules/tasks/network-interfaces-systemd.nix#L48-L72. This, to me, feels like the way that systemd expresses this is insufficiently rich to represent that?

    networks."99-ethernet-default-dhcp" = {
      # We want to match physical ethernet interfaces as commonly
      # found on laptops, desktops and servers, to provide an
      # "out-of-the-box" setup that works for common cases.  This
      # heuristic isn't perfect (it could match interfaces with
      # custom names that _happen_ to start with en or eth), but
      # should be good enough to make the common case easy and can
      # be overridden on a case-by-case basis using
      # higher-priority networks or by disabling useDHCP.

      # Type=ether matches veth interfaces as well, and this is
      # more likely to result in interfaces being configured to
      # use DHCP when they shouldn't.

      # When wait-online.anyInterface is enabled, RequiredForOnline really
      # means "sufficient for online", so we can enable it.
      # Otherwise, don't block the network coming online because of default networks.
      matchConfig.Name = ["en*" "eth*"];
      DHCP = "yes";
      linkConfig.RequiredForOnline =
        lib.mkDefault (if initrd
        then config.boot.initrd.systemd.network.wait-online.anyInterface
        else config.systemd.network.wait-online.anyInterface);
      networkConfig.IPv6PrivacyExtensions = "kernel";
    };
yuwata commented 9 months ago

When such catch-all config is installed by default, then --any option for wait-online should be set by default too, and do not disable RequiredForOnline=.

Although: systemd could plausibly notice that there are no possible config files that could make any interface that might appear RequiredForOnline, at least in theory?

Theoretically, yes. However, wait-online does not parse .network files, so networkd needs to expose the info and wait-online needs to monitor that... That sounds overkill for me.