> ## Content Index
> Fetch the complete content index at: https://blog.lange-it.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Wireguard | Tunnel Status überwachen
- URL: https://blog.lange-it.com/wireguard-tunnel-status-uberwachen/
- Published: 2025-10-28T08:19:18.000Z
- Updated: 2026-03-01T15:13:30.000Z
- Author: Peter Lange
- Tags: WireGuard, Monitoring

# Automatischer Neustart des WireGuard-Tunnels bei Verbindungsverlust

Diese Anleitung beschreibt, wie du deinen WireGuard-Tunnel (`wg-quick`) automatisch neu starten kannst, wenn der Remote-Endpunkt nicht erreichbar ist.

---

## 1️⃣ systemd-Konfiguration für automatischen Neustart

WireGuard-Interfaces, die mit `wg-quick up wg0` gestartet werden, erzeugen normalerweise einen systemd-Dienst namens `wg-quick@wg0.service`.

Bearbeite die Service-Konfiguration:

```bash
sudo systemctl edit wg-quick@wg0.service

```

Füge folgende Zeilen hinzu:

```ini
[Service]
Restart=on-failure
RestartSec=15

```

Danach neu laden und aktivieren:

```bash
sudo systemctl daemon-reload
sudo systemctl enable --now wg-quick@wg0

```

Damit wird der Dienst neu gestartet, wenn er abstürzt.

---

## 2️⃣ Health-Check-Skript (Beispiel für wg0)

Erstelle ein Skript, das prüft, ob der Tunnel erreichbar ist, und ihn neu startet, wenn der Endpunkt nicht reagiert.

```bash
sudo mkdir -p /opt/scripts/

Datei: `/opt/scripts/wg0-healthcheck.sh`

```bash
#!/bin/bash
IFACE="wg0"
ENDPOINT_IP="192.168.1.1"   # IP oder DNS des Peers
PING_COUNT=3

# Prüfen, ob Interface aktiv ist
if ! wg show "$IFACE" >/dev/null 2>&1; then
    logger "[$IFACE] Interface nicht aktiv. Neustart..."
    systemctl restart wg-quick@$IFACE
    exit
fi

# Erreichbarkeit des Endpunkts testen
if ! ping -c $PING_COUNT -W 3 "$ENDPOINT_IP" >/dev/null 2>&1; then
    logger "[$IFACE] Endpunkt nicht erreichbar. Neustart WireGuard."
    systemctl restart wg-quick@$IFACE
fi

```

Datei ausführbar machen:

```bash
sudo chmod +x /opt/scripts/wg0-healthcheck.sh

```

---

## 3️⃣ systemd-Timer zur regelmäßigen Überprüfung

### Dienstdefinition

```bash
sudo nano /etc/systemd/system/wg0-healthcheck.service

```

Inhalt:

```ini
[Unit]
Description=Check WireGuard tunnel health

[Service]
Type=oneshot
ExecStart=/opt/scripts/wg0-healthcheck.sh

```

### Timer-Datei

```bash
sudo nano /etc/systemd/system/wg0-healthcheck.timer

```

Inhalt:

```ini
[Unit]
Description=Run WireGuard health check every 5 minutes

[Timer]
OnBootSec=1min
OnUnitActiveSec=5min
Persistent=true

[Install]
WantedBy=timers.target

```

Timer aktivieren:

```bash
sudo systemctl daemon-reload
sudo systemctl enable --now wg0-healthcheck.timer

```

---

## 4️⃣ Sicherheitshinweise

- **Least Privilege:** Das Skript benötigt nur Systemrechte zum Neustart des Dienstes, keine Schlüssel.
- **Logging:** Nutzt `logger`, um Meldungen an `syslog` zu senden (`journalctl -u wg0-healthcheck.service`).
- **Routen prüfen:** Falls du spezielle Routing-Tabellen nutzt, sicherstellen, dass `ping` den richtigen Pfad nimmt.

---

## ✅ Zusammenfassung

1. `wg-quick@wg0` automatisch mit systemd neu starten.
2. Health-Check-Skript erstellt und alle 5 Minuten per Timer ausgeführt.
3. Automatischer, sicherer „Self-Healing“-Mechanismus für deinen WireGuard-Tunnel.