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.
ethXX, in your case the interface name may vary.
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.
ifup and ifdown without any restrictions
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
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.
# 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.

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

Select the interface which you would wish to deactivate and re-activate.
nmtui from graphical console independent of SSH or network connection.
Next Activate the respective interface

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

Method 6: Using systemctl restart network
ifup and ifdown without any restrictionsWith 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.
# 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.


That was really helpful. I am using Redhat linux 7 and all i had to do was run command nmtui and remove all the previous profiles. Suddenly internet started working, Thanks for your help!
How do I configure 2 different networks on one NIC and avoid the reverse path filtering nightmare? On my laptop I have one onboard NIC. I have 2 networks I have to push data across: 192.168.9.x/24 w/gtwy and 22.142.4.x/26 w/ no gtwy as a second address in NetworkManager. But it dies not work. I have set net.ipv4.all.rp_filter=2 (loose)
I am not sure if I understand your question. If you want to create two networks using single interface then you would need virtual LAN