Chapter 27. Systemd network targets and services
NetworkManager configures the network during the system boot process. However, when booting with a remote root (/), such as if the root directory is stored on an iSCSI device, the network settings are applied in the initial RAM disk (
initrd) before RHEL is started. For example, if the network configuration is specified on the kernel command line using
rd.neednet=1 or a configuration is specified to mount remote file systems, then the network settings are applied on
RHEL uses the
network-online targets and the
NetworkManager-wait-online service while applying network settings. Also, you can configure
systemd services to start after the network is fully available if these services cannot dynamically reload.
27.1. Differences between the network and network-online systemd target
Systemd maintains the
network-online target units. The special units such as
Before=network-online.target parameters. If enabled, these units get started with
network-online.target and delay the target to be reached until some form of network connectivity is established. They delay the
network-online target until the network is connected.
network-online target starts a service, which adds substantial delays to further execution. Systemd automatically adds dependencies with
After parameters for this target unit to all the System V (SysV)
init script service units with a Linux Standard Base (LSB) header referring to the
$network facility. The LSB header is metadata for
init scripts. You can use it to specify dependencies. This is similar to the
network target does not significantly delay the execution of the boot process. Reaching the
network target means that the service that is responsible for setting up the network has started. However, it does not mean that a network device was configured. This target is important during the shutdown of the system. For example, if you have a service that was ordered after the
network target during bootup, then this dependency is reversed during the shutdown. The network does not get disconnected until your service has been stopped. All mount units for remote network file systems automatically start the
network-online target unit and order themselves after it.
network-online target unit is only useful during the system starts. After the system has completed booting up, this target does not track the online state of the network. Therefore, you cannot use
network-online to monitor the network connection. This target provides a one-time system startup concept.
27.2. Overview of NetworkManager-wait-online
The synchronous legacy network scripts iterate through all configuration files to set up devices. They apply all network-related configurations and ensure that the network is online.
NetworkManager-wait-online service waits with a timeout for the network to be configured. This network configuration involves plugging-in an Ethernet device, scanning for a Wi-Fi device, and so forth. NetworkManager automatically activates suitable profiles that are configured to start automatically. The failure of the automatic activation process due to a DHCP timeout or similar event might keep NetworkManager busy for an extended period of time. Depending on the configuration, NetworkManager retries activating the same profile or a different profile.
When the startup completes, either all profiles are in a disconnected state or are successfully activated. You can configure profiles to auto-connect. The following are a few examples of parameters that set timeouts or define when the connection is considered active:
connection.wait-device-timeout- sets the timeout for the driver to detect the device
ipv6.may-fail- sets activation with one IP address family ready, or whether a particular address family must have completed configuration.
ipv4.gateway-ping-timeout- delays activation.
27.3. Configuring a systemd service to start after the network has been started
Red Hat Enterprise Linux installs
systemd service files in the
/usr/lib/systemd/system/ directory. This procedure creates a drop-in snippet for a service file in
/etc/systemd/system/service_name.service.d/ that is used together with the service file in
/usr/lib/systemd/system/ to start a particular service after the network is online. It has a higher priority if settings in the drop-in snippet overlap with the ones in the service file in
To open the service file in the editor, enter:
# systemctl edit service_name
Enter the following, and save the changes:
# systemctl daemon-reload