Cloudflare IP Updater

Docker Container für DNS-Updates

Was ist der Cloudflare IP Updater?

Der Cloudflare IP Updater (oder kurz: “CF Updater”) ist ein kleine Go-Binary in einem Docker Container, welcher Änderungen an der öffentlichen IP-Adresse eines Servers erkennt und im Cloudflare DNS anpasst. Das Ziel ist die Minimierung der Downtime von Diensten hinter Internetanschlüssen mit wechselnder IP-Adresse. Gerade für “Hobby-Hoster” ist das natürlich interessant.

Ursprünglich wurde der Cloudflare Updater in Python entwickelt, jedoch nach einiger Zeit in Go umgeschrieben. Grund dafür waren eine höhere Laufzeit-Stabilität sowie einfacher umzusetzende Nebenläufigkeit, um die Aktualisierung der DNS Records im Fall eines IP-Wechsels schneller propagieren zu können (sog. “Emergency Mode”). Der volle Name der neuen Go-Implementierung lautet “New CF Updater”.

CLI Log des CF Updaters
CLI Log des CF Updaters

Der CF Updater wird auf allen Hosts von leon.wtf und leon-schmidt.dev produktiv verwendet!

Konfiguration

Der CF Updater bietet hier im Gegensatz zum ddclient einen deutlich moderneren, flexibleren und stabileren Ansatz: Das Tool wird über eine JSON-Datei konfiguriert und ermöglicht eine granulare Konfiguration für jeden Host, aber auch anpassbare Standardwerte, die auf jeden Host angewandt werden. So kann beispielsweise das Updaten von AAAA-Records für bestimmte Hosts deaktiviert werden.

Beispielkonfiguration

{
    "api_token": "some-secret-key",
    "update_ipv4_default": true,
    "update_ipv6_default": true,
    "check_interval": 30,
    "check_timeout": 5,
    "zones": {
        "leon-schmidt.dev": [
            {
                "name": "leon-schmidt.dev",
                "create": true // legt den Record an, wenn er nicht existiert
            },
            {
                "name": "analytics.leon-schmidt.dev",
                "proxy": true, // aktivert den Cloudflare Proxy (null = nicht ändern)
                "update_ipv6": false // deaktivert AAAA-Record Update nur für diesen Host
            }
        ]
    }
}

Abgrenzung zu anderen Tools

  • Der CF Updater hat volle IPv6 Unterstützung, auch wenn NAT angewendet wird.
  • Die aktuelle IP wird über Cloudflares Trace Dienst ermittelt. Es fließen also keine Daten an externe Dienste – außer natürlich Cloudflare selbst - ab.
  • Für die Requests zu Cloudflares Trace Dienst wird immer die IP-Adresse vewendet – die aktuelle IP kann also auch ohne funktionierendes DNS ermittelt werden, was die Propagierung der Werte beschleunigt.
  • Unterstützt das Setzen der Proxy-States.
  • Es kann festgelegt werden, ob neue Records angelegt werden sollen, falls sie nicht bereits existieren.
  • Unterstützt mehrere Cloudflare-Zonen gleichzeitig.