How to restart networking in Linux
How to Restart Networking in Linux
Network connectivity issues are among the most common problems Linux administrators and users encounter. Whether you're dealing with connection drops, configuration changes, or network service failures, knowing how to properly restart networking services is an essential skill. This comprehensive guide covers multiple methods to restart networking in Linux, troubleshooting tips, and best practices for different distributions.
Understanding Linux Network Management
Before diving into the restart methods, it's important to understand how Linux manages networking. Modern Linux distributions primarily use two network management systems:
- NetworkManager: A dynamic network control and configuration daemon used by most desktop distributions
- systemd-networkd: A system daemon that manages network configurations, commonly used in server environments
- Traditional network scripts: Legacy system still found in older distributions
The method you'll use to restart networking depends on your distribution and the network management system in use.
Method 1: Using systemctl Commands
For NetworkManager-based Systems
Most modern Linux distributions, including Ubuntu, Fedora, CentOS 7+, and RHEL 7+, use NetworkManager as their primary network management service.
```bash
Stop NetworkManager service
sudo systemctl stop NetworkManager
Start NetworkManager service
sudo systemctl start NetworkManager
Restart NetworkManager service (combines stop and start)
sudo systemctl restart NetworkManager
Check NetworkManager status
sudo systemctl status NetworkManager
```
Example output when checking status:
```
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2024-01-15 10:30:45 UTC; 2min 15s ago
Main PID: 1234 (NetworkManager)
```
For systemd-networkd Systems
Server distributions often use systemd-networkd for network management:
```bash
Restart systemd-networkd
sudo systemctl restart systemd-networkd
Restart systemd-resolved (DNS resolution)
sudo systemctl restart systemd-resolved
Check network status
sudo systemctl status systemd-networkd
```
Method 2: Using Legacy Service Commands
For Older Distributions
Older Linux distributions or systems without systemd use traditional service management:
```bash
For Red Hat-based systems (RHEL 6, CentOS 6)
sudo service network restart
For Debian-based systems
sudo service networking restart
Alternative syntax
sudo /etc/init.d/networking restart
```
For Ubuntu-specific Commands
Ubuntu provides additional networking control commands:
```bash
Restart networking service
sudo service networking restart
Use netplan (Ubuntu 18.04+)
sudo netplan apply
Restart network interface
sudo ifdown eth0 && sudo ifup eth0
```
Method 3: Using NetworkManager CLI Tools
nmcli Command Examples
The NetworkManager command-line interface provides powerful networking control:
```bash
Show all connections
nmcli connection show
Restart a specific connection
nmcli connection down "connection-name"
nmcli connection up "connection-name"
Reload all connection files
nmcli connection reload
Restart networking for all devices
nmcli networking off
nmcli networking on
```
Practical example:
```bash
List active connections
$ nmcli connection show --active
NAME UUID TYPE DEVICE
Wired f8d5e8b2-1234-5678-9abc-def012345678 ethernet eth0
Restart the wired connection
$ nmcli connection down Wired
$ nmcli connection up Wired
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
```
Method 4: Distribution-Specific Commands
Red Hat Enterprise Linux / CentOS / Fedora
```bash
RHEL/CentOS 7+ and Fedora
sudo systemctl restart NetworkManager
RHEL/CentOS 6 and older
sudo service network restart
Restart specific interface
sudo ifdown eth0 && sudo ifup eth0
```
Debian / Ubuntu
```bash
Ubuntu 18.04+ with netplan
sudo netplan apply
Traditional method
sudo service networking restart
SystemD method
sudo systemctl restart networking
Interface-specific restart
sudo ifdown enp0s3 && sudo ifup enp0s3
```
SUSE Linux
```bash
Restart network using systemctl
sudo systemctl restart network
Using wicked (SUSE's network management)
sudo wicked ifdown all
sudo wicked ifup all
Restart specific interface
sudo wicked ifdown eth0
sudo wicked ifup eth0
```
Arch Linux
```bash
Using systemd-networkd
sudo systemctl restart systemd-networkd
Using NetworkManager
sudo systemctl restart NetworkManager
Using netctl (Arch-specific)
sudo netctl restart profile-name
```
Interface-Specific Restart Methods
Using ip Commands
Modern Linux systems prefer the `ip` command over deprecated `ifconfig`:
```bash
Bring interface down
sudo ip link set eth0 down
Bring interface up
sudo ip link set eth0 up
Show interface status
ip link show eth0
Restart with single command
sudo ip link set eth0 down && sudo ip link set eth0 up
```
Using ifconfig (Legacy)
While deprecated, `ifconfig` is still available on many systems:
```bash
Bring interface down
sudo ifconfig eth0 down
Bring interface up
sudo ifconfig eth0 up
Show interface information
ifconfig eth0
```
Netplan Configuration (Ubuntu 18.04+)
Ubuntu 18.04 and later versions use Netplan for network configuration:
Basic Netplan Commands
```bash
Apply current configuration
sudo netplan apply
Generate configuration files
sudo netplan generate
Try configuration with automatic rollback
sudo netplan try
Debug configuration issues
sudo netplan --debug apply
```
Example Netplan Configuration
Create or edit `/etc/netplan/01-network-manager-all.yaml`:
```yaml
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s3:
dhcp4: true
dhcp6: false
```
Apply the configuration:
```bash
sudo netplan apply
```
Troubleshooting Network Restart Issues
Common Problems and Solutions
1. Service Not Found Error
Problem:
```
Failed to restart network.service: Unit network.service not found.
```
Solutions:
```bash
Try NetworkManager instead
sudo systemctl restart NetworkManager
Or use networking service
sudo systemctl restart networking
Check available network services
systemctl list-units --type=service | grep -i network
```
2. Permission Denied
Problem:
```
Permission denied
```
Solution:
```bash
Always use sudo for network operations
sudo systemctl restart NetworkManager
Check if you're in the correct group
groups $USER
```
3. Interface Not Coming Up
Problem: Interface remains down after restart.
Diagnostic commands:
```bash
Check interface status
ip link show
Check for errors in logs
sudo journalctl -u NetworkManager -f
Verify configuration
nmcli connection show
```
Solutions:
```bash
Manually bring up interface
sudo ip link set eth0 up
Reset interface configuration
sudo nmcli connection reload
sudo nmcli connection up "connection-name"
```
4. DNS Resolution Issues
Problem: Network connects but DNS doesn't work.
Solutions:
```bash
Restart DNS resolver
sudo systemctl restart systemd-resolved
Check DNS configuration
cat /etc/resolv.conf
Flush DNS cache
sudo systemctl restart NetworkManager
```
Checking Network Status After Restart
Always verify that networking is working properly after a restart:
```bash
Check interface status
ip addr show
Test connectivity
ping -c 4 8.8.8.8
Check DNS resolution
nslookup google.com
Verify routing table
ip route show
Check network services
sudo systemctl status NetworkManager
```
Best Practices for Network Restart
1. Use the Right Command for Your System
- Desktop systems: Usually NetworkManager
- Server systems: Often systemd-networkd or traditional networking
- Container environments: May require specific approaches
2. Test Before Production
```bash
Always test network changes safely
sudo netplan try # Ubuntu with netplan
nmcli connection up "backup-connection" # Have backup ready
```
3. Monitor Logs During Restart
```bash
Watch logs in real-time
sudo journalctl -u NetworkManager -f
Check for errors after restart
sudo journalctl -u NetworkManager --since "5 minutes ago"
```
4. Document Your Network Configuration
Keep records of:
- Network interface names
- IP configurations
- DNS settings
- Custom routes
5. Create Network Restart Scripts
For frequent network restarts, create a script:
```bash
#!/bin/bash
network-restart.sh
echo "Restarting network services..."
Detect the network management system
if systemctl is-active --quiet NetworkManager; then
echo "Restarting NetworkManager..."
sudo systemctl restart NetworkManager
elif systemctl is-active --quiet systemd-networkd; then
echo "Restarting systemd-networkd..."
sudo systemctl restart systemd-networkd
sudo systemctl restart systemd-resolved
else
echo "Restarting traditional networking..."
sudo service networking restart
fi
echo "Network restart complete. Testing connectivity..."
if ping -c 1 8.8.8.8 &> /dev/null; then
echo "Network connectivity verified."
else
echo "Warning: Network connectivity test failed."
fi
```
Make it executable:
```bash
chmod +x network-restart.sh
```
Advanced Network Management
Using Network Namespaces
For advanced users working with network namespaces:
```bash
Create network namespace
sudo ip netns add test-ns
Execute command in namespace
sudo ip netns exec test-ns ip addr show
Delete namespace
sudo ip netns delete test-ns
```
Wireless Network Restart
For wireless connections:
```bash
Restart wireless interface
sudo ip link set wlan0 down
sudo ip link set wlan0 up
Using NetworkManager for WiFi
nmcli radio wifi off
nmcli radio wifi on
Scan for networks
nmcli device wifi list
```
Security Considerations
When restarting network services:
1. Remote Connections: Be cautious when restarting networking on remote servers
2. Firewall Rules: Network restarts may affect firewall configurations
3. VPN Connections: Active VPN connections will be dropped
4. Service Dependencies: Other services may depend on network connectivity
Safe Remote Network Restart
```bash
Use screen or tmux for remote operations
screen -S network-restart
Set up automatic revert
(sleep 300; sudo systemctl restart NetworkManager) &
Make your changes...
Kill the background job if successful
kill %1
```
Conclusion
Restarting networking in Linux is a fundamental skill that varies depending on your distribution and network management system. The key is understanding which method applies to your specific setup:
- Use `systemctl restart NetworkManager` for most modern desktop distributions
- Use `systemctl restart systemd-networkd` for server environments
- Use legacy `service` commands for older systems
- Use `netplan apply` for Ubuntu 18.04+ systems
Always verify network connectivity after making changes, and consider the impact on running services and remote connections. With these methods and best practices, you'll be able to confidently manage Linux networking services and resolve connectivity issues effectively.
Remember to check your system's documentation for any distribution-specific networking peculiarities, and always test network changes in a safe environment before applying them to production systems.