- Documented the critical finding of hardcoded DNS (8.8.8.8) in Synology Network Interface settings overriding global DSM settings. - Added comprehensive checklist for Synology, FritzBox, and Client configuration to ensure DNS stability and NAT loopback functionality. - Updated log analysis section with 'NETWORK_WAIT' and 'ALERT' scenarios.
80 lines
3.5 KiB
Markdown
80 lines
3.5 KiB
Markdown
# DuckDNS & DNS Monitor Setup
|
|
|
|
**Erstellt am:** 05.01.2026
|
|
**Zuletzt aktualisiert:** 06.01.2026
|
|
**Status:** Aktiv
|
|
**Architektur:** Sidecar-Pattern
|
|
|
|
Dieses Dokument beschreibt die Docker-basierte Lösung zur DynDNS-Aktualisierung und Überwachung sowie die kritischen Netzwerkeinstellungen auf der Synology Diskstation und der FritzBox.
|
|
|
|
## Problembeschreibung
|
|
Das System litt unter massiven DNS-Problemen:
|
|
1. **"IP Flapping":** Die IP sprang ständig zwischen der aktuellen (`.252`) und einer alten (`.49`), verursacht durch "Zombie-Updater" (alte Configs in FritzBox/HA) und DNS-Caching.
|
|
2. **Interne Unerreichbarkeit:** Dienste waren im LAN nicht erreichbar (NAT Loopback Problem).
|
|
3. **Synology DNS-Chaos:** Die Synology nutzte veraltete DNS-Server (`8.8.8.8`) fest in der Netzwerkschnittstelle, was zu falschen Auflösungen führte, selbst wenn der Router (FritzBox) korrekt war.
|
|
|
|
## Lösung
|
|
Wir haben eine robuste **Zwei-Container-Lösung** (Sidecar-Pattern) implementiert und das gesamte Netzwerk-Environment gehärtet.
|
|
|
|
### 1. Docker Services (`docker-compose.yml`)
|
|
|
|
* **Updater (`duckdns`):** Aktualisiert zuverlässig die IP bei DuckDNS. Wir nutzen einen **neuen Token**, um alle alten Updater auszusperren.
|
|
* **Monitor (`dns-monitor`):** Überwacht alle 5 Minuten die DNS-Auflösung. Er vergleicht:
|
|
* **Public IP:** (via ipify)
|
|
* **Global DNS:** (via Cloudflare `1.1.1.1` - Google `8.8.8.8` erwies sich als zu langsam/gecacht)
|
|
* **Local DNS:** (Container/Host Resolver)
|
|
|
|
## Kritische Peripherie-Konfiguration (MUSS GEPRÜFT WERDEN!)
|
|
|
|
### 1. Synology DSM Netzwerkeinstellungen (Die "versteckte Falle")
|
|
Die Synology kann DNS-Server an zwei Orten haben. Die Schnittstellen-Einstellung überschreibt die allgemeine Einstellung!
|
|
|
|
* **Ort 1 (Allgemein):** Systemsteuerung -> Netzwerk -> Allgemein -> "DNS-Server manuell konfigurieren".
|
|
* **Ort 2 (Schnittstelle - WICHTIG):** Systemsteuerung -> Netzwerk -> Netzwerk-Schnittstelle -> LAN 1 (oder aktiv) -> Bearbeiten -> IPv4.
|
|
* **Fehler:** Hier war manuell `8.8.8.8` eingetragen, der veraltete Daten lieferte.
|
|
* **Korrektur:** Auf "Automatisch abrufen" (DHCP von FritzBox) oder manuell auf `1.1.1.1` (Cloudflare) stellen.
|
|
|
|
### 2. FritzBox (Router)
|
|
* **DNS-Server:** Internet -> Zugangsdaten -> DNS-Server. Empfehlung: Cloudflare (`1.1.1.1`, `1.0.0.1`) statt Provider-DNS oder Google.
|
|
* **DNS-Rebind-Schutz (NAT Loopback):** Heimnetz -> Netzwerk -> Netzwerkeinstellungen -> "DNS-Rebind-Schutz".
|
|
* Alle Subdomains eintragen (`floke.duckdns.org` etc.), damit der interne Zugriff auf die externe IP erlaubt wird.
|
|
|
|
### 3. DuckDNS Token Rotation
|
|
Um Zombie-Updater (alte Geräte) auszusperren:
|
|
1. Token auf duckdns.org erneuern.
|
|
2. Neuen Token **nur** im Docker-Container verwenden.
|
|
3. Alten Token überall löschen.
|
|
|
|
### 4. Client Cache (Windows)
|
|
```cmd
|
|
ipconfig /flushdns
|
|
```
|
|
|
|
## Logs & Monitoring
|
|
|
|
### DNS-Konsistenz prüfen
|
|
```bash
|
|
docker logs dns-monitor
|
|
```
|
|
|
|
**Szenario OK:**
|
|
```text
|
|
[TIMESTAMP] [OK] Pub: 87.x.x.x | CF: 87.x.x.x | Loc: 87.x.x.x
|
|
```
|
|
|
|
**Szenario NETWORK_WAIT (Synology Timeout):**
|
|
```text
|
|
[TIMESTAMP] [NETWORK_WAIT] Pub: 87.x.x.x | CF: Unresolved | ...
|
|
```
|
|
Deutet auf instabile Internetverbindung oder DNS-Blockade der Synology hin.
|
|
|
|
**Szenario ALERT (Zombie/Cache):**
|
|
```text
|
|
[TIMESTAMP] [ALERT] Pub: 87.x.x.x | CF: 87.y.y.y | ...
|
|
```
|
|
Cloudflare liefert falsche IP -> DuckDNS Update fehlgeschlagen oder Nameserver-Probleme.
|
|
|
|
## Dateien
|
|
- `/app/docker-compose.yml`: Definition der Services.
|
|
- `/app/dns-monitor/monitor.sh`: Das Shell-Skript für den Monitor-Container.
|