6 different commands to restart network in RHEL/CentOS 7/8

In this tutorial I will share different methods you can use to restart your network with RHEL/CentOS environment. I will cover both RHEL/CentOS 7 and 8 releases as with RHEL/CentOS 8 there are some major changes in terms of how networking is handled. Now Red Hat is completely moving towards Network Manager and is trying to ditch the legacy initscripts.

 

Some Background and Changes with RHEL/CentOS 8

If you are coming from RHEL/CentOS 5 or 6 then you will be familiar with SysV scripts to restart any service i.e.

# service network restart

With RHEL/CentOS 7 the SysV scripts are deprecated (although you may still use these commands but they can be removed any time and shouldn't be used). Now all the system services, partitions, sockets are handled by systemd. But that is a different topic altogether, now with RHEL/CentOS 7 we used

# systemctl restart network

But with RHEL/CentOS 8 we get below error for this command

# systemctl restart network
Failed to restart network.service: Unit network.service not found.

This is because with RHEL/CentOS 7, the network scripts were part of initscripts rpm, which is removed as part of RHEL/CentOS 8 and is migrated to network-scripts rpm
I have already written a detailed guide on this topic and the steps to use legacy network restart commands.

Now considering all these changes, we have multiple methods which we can use to restart network in RHEL/CentOS release. But before we jump there, let us understand if our interface is managed by NetworkManager or not as your command and steps to restart network would vary accordingly.

 

How to check if interface is configured with NetworkManager

There are couple of methods to verify if your Ethernet is configured via NetworkManager or manually using ip command or some other method:

Use nmcli con show to list the active connections

# nmcli con show
NAME  UUID                                  TYPE      DEVICE
eth0  31e959d2-1c5f-46ea-a122-1f4c0f74d938  ethernet  eth0

If you can see your interface in the output then it means that the interface is configured with NetworkManager

Alternatively grep for NM_CONTOLLED in /etc/sysconfig/network-scripts/ifcfg-ethXX

# grep NM_CONTROLLED /etc/sysconfig/network-scripts/ifcfg-eth1
NM_CONTROLLED=no

It is also possible you get a blank output, in such case you can use nmcli to verify but most likely the interface was configured with NetworkManager which is why you don't see any entry for NM_CONTROLLED.

So now you know if your interface is configured via NetworkManager or not.

 

Method 1: Using systemctl restart NetworkManager

You can use nmcli or nmtui to configure your network. Once the network configuration is done, you can use systemctl to restart the NetworkManager service

# systemctl restart NetworkManager

This should update your network changes. But if your network is not managed by NetworkManager, this command will do no change to your interface configuration.

 

Method 2: Using ifup and ifdown

Use this command with precaution as this can bring down your active interface which you may be using for SSH connections locking you out of the system. The only way to recover the network access by connecting to your server via console.

 

On RHEL/CentOS 8 with NetworkManager

With RHEL/CentOS 8, the ifup and ifdown commands are part of NetworkManager rpm unlike older releases where these were part of initscripts rpm.

# rpm -qf `which ifup`
NetworkManager-1.20.0-3.el8.x86_64

So since you are using NetworkManager, you can also use ifup and ifdown to refresh the network configuration of any interface. For example you did some changes for eth1, so to refresh the changes first bring down the interface and then bring it up

# ifdown eth1 && ifup eth1
IMPORTANT NOTE:

It is important that you execute the command in this format as if you try to execute separately then your server may become unreachable.

This should update your network configuration.

 

On RHEL/CentOS 8 without NetworkManager

On RHEL/CentOS 8 if your network interface is not managed by NetworkManager then you must install network-scripts to be able to use ifup and ifdown command.

NOTE:

On RHEL system you must have an active subscription to RHN or you can configure a local offline repository using which "yum" package manager can install the provided rpm and it's dependencies.
# dnf -y install network-scripts

Next you can check the rpm ownership for ifup

# rpm -qf `which ifup`
NetworkManager-1.20.0-3.el8.x86_64
network-scripts-10.00.4-1.el8.x86_64

Now ifup is part of both NetworkManager and network-scripts rpm. Next you can use ifdown eth1 && ifup eth1

# ifdown eth1 && ifup eth1
WARN      : [ifdown] You are using 'ifdown' script provided by 'network-scripts', which are now deprecated.
WARN      : [ifdown] 'network-scripts' will be removed in one of the next major releases of RHEL.
WARN      : [ifdown] It is advised to switch to 'NetworkManager' instead - it provides 'ifup/ifdown' scripts as well.

Similar WARN is visible for ifup action.

ifup and ifdown interface
ifup and ifdown interface

Since network-scripts is added just to support fallback behaviour, it throws WARNING every time you use ifup or ifdown without NetworkManager.

 

Method 3: Using nmcli networking

We can also use the command-line tool "nmcli networking" for controlling NetworkManager to restart network and update network configuration.

# nmcli networking off && nmcli networking on

This command will bring down all the NetworkManager interfaces and then will bring them up.
IMPORTANT: It is important that you execute the command in this format as if you try to execute separately then your server may become unreachable as the first command will bring down all the NetworkManager managed interfaces

 

Method 4: using nmcli con up and down

With nmcli we can also use nmcli con up or con down similar to traditional ifup and ifdown to de-activate and activate individual network interface instead of restarting all the networking interfaces on the server.

# nmcli con down eth1 && nmcli con up eth1
Connection 'eth1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/14)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/15)

IMPORTANT: It is important that you execute the command in this format as if you try to execute separately then your server may become unreachable as the first command will bring down all the NetworkManager managed interfaces

 

Method 5: Using nmtui

We also have NetworkManager TUI which is an alternative to nmcli command. Users who are not comfortable with nmcli command line, they can use nmtui to manage their network
To de-activate or activate a network interface using nmtui, execute nmtui as root user on the Linux server terminal

# nmtui

This should open a window, next select "Activate a Connection" to update the network configuration

centos restart network
Activate a connection

 

Select the interface which you would wish to deactivate and re-activate.

IMPORTANT NOTE:

If you deactivate your active interface then your SSH connection will be lost. If you intend to restart network for primary interface then you must use nmtui from graphical console independent of SSH or network connection.
centos restart network
De-activate eth1

 

Next Activate the respective interface

centos restart network
Activate eth1

 

Once your interface is active, you can come back and exit the nmtui session.

centos restart network

 

Method 6: Using systemctl restart network

With RHEL/CentOS 8, the initscripts rpm has been deprecated hence this command will not work by default. We must manually install network-scripts rpm from the RHEL/CentOS 8 repository to be able to restart network using this command.

NOTE:

On RHEL system you must have an active subscription to RHN or you can configure a local offline repository using which "yum" package manager can install the provided rpm and it's dependencies.
# dnf -y install network-scripts

Next you should be able to use the legacy command even on RHEL/CentOS 8 to restart your network interface

# systemctl restart network

 

Conclusion

In this tutorial I shared different possible methods to restart network service and individual network cards on different Red Hat and CentOS distributions. Red Hat is now pushing the usage of NetworkManager and legacy initscripts is already deprecated. We can expect the network-scripts support to also be dropped in near future so you should already start switching to NetworkManager in your environment.

Lastly I hope the steps from the article to restart network on RHEL/CentOS 7/8 Linux was helpful. So, let me know your suggestions and feedback using the comment section.

Leave a Comment

Please use shortcodes <pre class=comments>your code</pre> for syntax highlighting when adding code.