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