Server Network Auto‑Heal Service
Server Network Auto‑Heal Service (ifup Watchdog)
This document explains how to set up a self‑healing network service on a Linux Server where the network interface occasionally goes down and requires a manual ifup to recover.
The solution uses a systemd service that continuously monitors connectivity and automatically runs ifdown / ifup when the network is detected as down.
Problem Statement
- Network interface goes DOWN intermittently
- Outbound connectivity drops
- Manual recovery is required using:
ifup eth0
This impacts application availability and requires human intervention.
Solution Overview
We create a lightweight systemd watchdog service that:
- Runs continuously in the background
- Pings a reliable external IP (e.g.
1.1.1.1) - If ping fails:
- Brings the interface down
- Brings the interface back up
- Automatically restarts if it ever crashes
This provides automatic recovery without rebooting the Server.
Prerequisites
- Linux Server (CentOS / RHEL / Rocky / Alma / similar)
ifup/ifdownavailable (network-scriptspackage)- Root access
- Interface name known (example:
eth0)
⚠️ Recommended: Disable
NetworkManageron servers to avoid conflicts.
One‑Command Setup
Run the following single command as root:
bash -c 'cat >/etc/systemd/system/netheal.service <<"EOF"
[Unit]
Description=Auto-heal network (ifup on failure)
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash -lc '\''while true; do ping -c1 -W2 1.1.1.1 >/dev/null 2>&1 || ( /sbin/ifdown eth0 >/dev/null 2>&1; /sbin/ifup eth0 >/dev/null 2>&1 ); sleep 30; done'\''
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now netheal.service'Customization
Change Interface Name
If your interface is not eth0 (for example ens3 or ens160), update this part:
/sbin/ifdown eth0
/sbin/ifup eth0Change Health Check Target
You can replace 1.1.1.1 with any reliable endpoint:
- Gateway IP
- Public DNS (8.8.8.8)
- Internal monitoring IP
Service Management
Check Status
systemctl status netheal.service -lView Logs
journalctl -u netheal.service -fStop Service
systemctl stop netheal.serviceDisable Service
systemctl disable netheal.serviceWhy This Works
- Avoids Server reboot
- Works even when DHCP / carrier state breaks
- Independent of applications
- systemd guarantees restart
- Minimal CPU and memory usage
Notes & Best Practices
- Prefer static IPs for production servers
- Disable
NetworkManageron backend / app Servers - Use
NM_CONTROLLED=noin ifcfg files
Summary
This auto‑heal service ensures that temporary network drops do not require manual intervention, improving Server stability and uptime.
It is safe, simple, and production‑friendly.