Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.6. Using NetworkManager with Network Scripts

This section describes how to run a script and how to use custom commands in network scripts.
The term network scripts refers to the script /etc/init.d/network and any other installed scripts it calls. Although NetworkManager provides the default networking service, scripts and NetworkManager can run in parallel and work together. Red Hat recommends to test them first.

Running Network Script

Run a network script only with the systemctl command:
systemctl start|stop|restart|status network
The systemctl utility clears any existing environment variables and ensures correct execution.
In Red Hat Enterprise Linux 7, NetworkManager is started first, and /etc/init.d/network checks with NetworkManager to avoid tampering with NetworkManager's connections. NetworkManager is intended to be the primary application using sysconfig configuration files, and /etc/init.d/network is intended to be secondary.
The /etc/init.d/network script runs:
  1. manually - using one of the systemctl commands start|stop|restart network,
  2. on boot and shutdown if the network service is enabled - as a result of the systemctl enable network command.
It is a manual process and does not react to events that happen after boot. Users can also call the ifup and ifdown scripts manually.


The systemctl reload network.service command does not work due to technical limitations of initscripts. To apply a new configuration for the network service, use the restart command:
~]# systemctl restart network.service
This brings down and brings up all the Network Interface Cards (NICs) to load the new configuration. For more information, see the Red Hat Knowledgebase solution Reload and force-reload options for network service.

Using Custom Commands in Network Scripts

Custom commands in the /sbin/ifup-local, ifdown-pre-local, and ifdown-local scripts are only executed if these devices are controlled by the /etc/init.d/network service. The ifup-local file does not exist by default. If required, create it under the /sbin/ directory.
The ifup-local script is readable only by the initscripts and not by NetworkManager. To run a custom script using NetworkManager, create it under the dispatcher.d/ directory. See the section called “Running Dispatcher scripts”.


Modifying any files included with the initscripts package or related rpms is not recommended. If a user modifies such files, Red Hat does not provide support.
Custom tasks can run when network connections go up and down, both with the old network scripts and with NetworkManager. If NetworkManager is enabled, the ifup and ifdown script will ask NetworkManager whether NetworkManager manages the interface in question, which is found from the DEVICE= line in the ifcfg file.
Devices managed by NetworkManager:
calling ifup
When you call ifup and the device is managed by NetworkManager, there are two options:
  • If the device is not already connected, then ifup asks NetworkManager to start the connection.
  • If the device is already connected, then nothing to do.
calling ifdown
When you call ifdown and the device is managed by NetworkManager:
  • ifdown asks NetworkManager to terminate the connection.
Devices unmanaged by NetworkManager:
If you call either ifup or ifdown, the script starts the connection using the older, non-NetworkManager mechanism that it has used since the time before NetworkManager existed.

Running Dispatcher scripts

NetworkManager provides a way to run additional custom scripts to start or stop services based on the connection status. By default, the /etc/NetworkManager/dispatcher.d/ directory exists and NetworkManager runs scripts there, in alphabetical order. Each script must be an executable file owned by root and must have write permission only for the file owner. For more information about running NetworkManager dispatcher scripts, see the Red Hat Knowledgebase solution How to write a NetworkManager dispatcher script to apply ethtool commands.