How to Restart Network Services in macOS (Equivalent to Linux’s /etc/init.d/networking restart)


2 views

Unlike Linux systems where network services are managed through init.d scripts, macOS uses a different architecture. The key processes responsible for networking are:

  • configd - Handles network configuration and interfaces
  • mDNSResponder - Manages Bonjour and DNS resolution
  • networksetup - Command-line utility for network configuration

Here are several approaches to reset network services without rebooting:


# Method 1: Restart core networking daemon
sudo launchctl stop com.apple.networkd
sudo launchctl start com.apple.networkd

# Method 2: Full network stack reset
sudo ifconfig en0 down
sudo ifconfig en0 up
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# Method 3: Network preference refresh
sudo networksetup -setnetworkserviceenabled Wi-Fi off
sudo networksetup -setnetworkserviceenabled Wi-Fi on

Create a bash script to handle network resets:


#!/bin/bash

# Network reset script for macOS
echo "Resetting network services..."

# Bring interface down
INTERFACE=$(networksetup -listallhardwareports | grep -A 1 "Wi-Fi" | awk '/Device/ {print $2}')
sudo ifconfig $INTERFACE down

# Flush caches
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# Restart core services
sudo launchctl stop com.apple.networkd
sleep 2
sudo launchctl start com.apple.networkd

# Bring interface back up
sudo ifconfig $INTERFACE up
sudo networksetup -setdnsservers Wi-Fi empty

When basic restarts don't work, try these diagnostic commands:


# Check interface status
ifconfig en0

# View DHCP lease information
ipconfig getpacket en0

# Inspect system logs for network errors
log show --predicate 'process == "configd"' --last 30m

# Check routing table
netstat -rn

For automated periodic network refreshes:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.user.networkrefresh</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/your/network-reset-script.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>3600</integer>
</dict>
</plist>

Install with: sudo mv com.user.networkrefresh.plist /Library/LaunchDaemons/ and sudo launchctl load /Library/LaunchDaemons/com.user.networkrefresh.plist


While Linux systems use /etc/init.d/networking restart to reset network configurations, macOS handles networking differently through its launchd system. The closest equivalents would be:

sudo ifconfig en0 down
sudo ifconfig en0 up

Or for more comprehensive reset:

sudo route flush
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

For complete network subsystem reset, you can target specific macOS networking daemons:

# Restart network configuration
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.networkd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.networkd.plist

# Restart mDNSResponder (Bonjour)
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Here's a comprehensive bash script to reset multiple network components:

#!/bin/bash

# Interface reset (replace en0 with your interface)
echo "Resetting network interface..."
sudo ifconfig en0 down
sleep 2
sudo ifconfig en0 up

# Flush various caches
echo "Flushing network caches..."
sudo route flush
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# Renew DHCP lease
echo "Renewing DHCP lease..."
sudo ipconfig set en0 DHCP

# Restart core networking services
echo "Restarting network services..."
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.networkd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.networkd.plist

echo "Network reset complete"

These techniques are particularly useful when:

  • Network connections drop unexpectedly
  • DNS resolution stops working
  • IP address conflicts occur
  • Network services become unresponsive

Another macOS-specific approach is to create and switch between network locations:

# List current locations
networksetup -listlocations

# Switch to a different location
sudo networksetup -switchtolocation "New Location"