…and you use the default Network Manager (whether KDE, GNOME, or Xfce).
How do you get it to work correctly?
By “work correctly” I mean that the service should not run when a network connection is unavailable.
However, there seems to be a strange definition for what constitutes “online”.
For example, when I am connected via wired or wireless in my KDE Network Manager, these are the following outputs, which are correct:
systemctl list-dependencies network-online.target INT ✘ network-online.target ● └─NetworkManager-wait-online.service
systemctl status network-online.target ✔ ● network-online.target - Network is Online Loaded: loaded (/usr/lib/systemd/system/network-online.target; static) Active: active since Sun 2021-09-19 11:38:53 BRT; 3 days ago
systemctl status NetworkManager-wait-online.service ✔ ● NetworkManager-wait-online.service - Network Manager Wait Online Loaded: loaded (/usr/lib/systemd/system/NetworkManager-wait-online.service; enabled; vendor preset: disabled) Active: active (exited) since Sun 2021-09-19 11:38:53 BRT; 3 days ago
So far, so good, yes? There’s just one problem. Even after disconnecting from the network (confirmed by being unable to ping neither a local address nor remote website),
network-online.target continues to show that I am online.
This is a problem, because custom services that depend on a truthful network status will immediaely attempt to run and fail (rather than wait 30 seconds for the network to be “online”) which I confirmed by checking the logs, even though I declared them with
The most I could gather from my limited research capability is that this is due to the lack of consensus of what it means to be “online”.
Some would argue you need to be able ping a remote website, others argue that the interface must be up, others argue that you’ve been assigned a DHCP address, others argue if you can ping a local network device, etc.
Does anyone know how to instruct systemd (when using Network Manager) that “online” is only acceptable when a remote website can be reached?
To reiterate, when I am absolutely offline, I still get this result when checking the status of
● network-online.target - Network is Online Loaded: loaded (/usr/lib/systemd/system/network-online.target; static) Active: active since Sun 2021-09-19 11:38:53 BRT; 3 days ago
For reference, this unsolved problem similarly describes what I am facing: