DynDNS Update bei IPv64.net schlägt fehl trotz „success“-Rückmeldung (OPNsense 25.1.7 + os-ddclient)

Hallo zusammen,

ich nutze seit ca. 6 Monaten erfolgreich IPv64.net in Kombination mit dem DynDNS-Client von OPNsense (os-ddclient). Seit kurzem gibt es jedoch Probleme mit dem Update der IP-Adresse – obwohl der Server „success“ zurückliefert, erkennt OPNsense das offenbar als Fehler.

Systeminformationen:

  • OPNsense: 25.1.7_4 (amd64)
  • FreeBSD: 14.2-RELEASE-p3
  • OpenSSL: 3.0.16
  • os-ddclient: 1.27_2

Meine DynDNS-Konfiguration:

Fehlerausgabe im Log:

FAILED: updating verschleiert.ipv64.net: unexpected status ({"info":"nochg","status":"success","ip":{"ipv4":"124.120.49.79"}})

Was passiert:

  • Die Rückmeldung vom Server ist eigentlich korrekt – status: success, info: nochg, IP wird korrekt angezeigt.
  • Trotzdem wertet ddclient dies als Fehler und führt alle 10 Minuten ein neues Update durch.
  • Die neue IP wird im OPNsense GUI nicht übernommen.
  • Führe ich den API-Link manuell im Browser aus, erhalte ich:
    • {"info":"good","status":"success","ip":{"ipv4":"...IP..."}} (bei Änderung)
    • {"info":"nochg","status":"success","ip":{"ipv4":"...IP..."}} (bei gleicher IP)

Wichtig:

  • Ich habe gelesen, dass ddclient bei „DynDNS2“-Protokoll kein JSON erwartet, sondern einfache Textausgaben wie:
    • good 1.2.3.4
    • nochg 1.2.3.4
  • Das scheint das Problem zu sein: IPv64.net liefert ein JSON-Objekt zurück, OPNsense/ddclient erwartet aber Klartext.

Was ich bereits versucht habe:

  • Server von ipv4.ipv64.net auf ipv64.net geändert → kein Unterschied
  • Backend von ddclient auf nativ stellen → funktioniert tatsächlich, aber:
    Das funktioniert nur mit IPv64.net – meine anderen Provider wie Cloudflare und Dynu funktionieren dann nicht mehr. Daher für mich keine Option.

Habt Ihr noch eine Lösung?

Ich habe die identische Version der OPNsense und des ddclients. In meiner Konfiguration habe ich nur anstatt Check ip method: ipify-ipv4Check ip method: Interface[IPv4] bzw. [IPv6] und ich habe keinerlei Probleme.
Meine OPNsense macht jede Nacht um drei Uhr die Zwangstrennung und danach wird die IP ohne Probleme bei ipv64.net aktualisiert. Selbst wenn ich nur mein Interface deaktiviere und ich eine neue IP zugewiesen bekomme läuft das Update ohne Fehlermeldungen durch.

Interessant und danke fürs checken… Jetzt wäre die Frage ob dies an opnsense, ddclient oder an Ipv64.net Ausgabe liegt.

Hast du als backend auch ddns estellt?
Das findet man unter Dienste dynamisches dns - > Einstellungen - > Reiter Allgemeine Einstellungen.

Was ist den deine Ausgabe wenn du den link direkt Im Browser oder Konsole öffnest? Bei mir:
curl -sSL https://ipv64.net/nic/update?key=FnPTGgz5UdLOm7cVERÄNDERTouHpIrC&domain=ZENSIERT.ipv64.net
{„info“:„nochg“,„status“:„success“,„ip“:{„ipv4“:„124.120.49.19“}}

Danke dir für die hilfe

Wenn du das haben willst, hänge der Update URL einfach ein „&output=min“ hinterher.

Danke Dennis, jedoch kann ich das nirgends so eintragen, denn die OPNSense Maske ist vordefiniert.
Verstehe nicht ganz wieso das bei den anderen funktioniert…ich werde jetzt mal versuchen den ddns-client neu zu installieren bzw config zuruückzusetzen…mal schauen was passiert

hmmm schade ich glaub langsam bin ich mit meinem Latein bzw mit opnsense oder dyndns am ende ^^
hab mal ddns neu installiert und jetzt ein neuen hacken gefunden mit ausführliche logs:
jedoch bin ich nicht schlauer geworden.

2025-06-08T15:03:07	3	Notice	ddclient	30059	FAILED: updating homelab-alex.ipv64.net: unexpected status ({"info":"nochg","status":"success","ip":{"ipv4":"124.120.49.19"}})	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE: {"info":"nochg","status":"success","ip":{"ipv4":"124.120.49.19"}}	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE:	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE: strict-transport-security: max-age=63072000	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE: content-type: application/json	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE: referrer-policy: no-referrer	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE: x-permitted-cross-domain-policies: none	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE: x-content-type-options: nosniff	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE: x-xss-protection: 1; mode=block	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE: permissions-policy: geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE: x-frame-options: SAMEORIGIN	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE: content-security-policy: frame-ancestors 'self';	
2025-06-08T15:03:07	3	Notice	ddclient	30059	RECEIVE: server: Apache

Moin. Gleiches Problem hier.
Seit 20. Mai mögen meine 4.0er ddclients die Antworten von ipv64.net nicht mehr.
Ich habe 2 verschiedene Implementierungen im Einsatz; mit gleichen (schlechten) Ergebnissen.

a) Ubuntu mit ddclient aus dem Projekt Launchpad

$ ddclient --version
ddclient version 4.0.0-rc.3

b) Suse mit Kubernetes k3s und Docker-Container von LinuxServer

$ kubectl logs -n infra-dyn-dns pod/ddclient-REDACTED-6f75bb77f7-x4cpk
[migrations] started
[migrations] no migrations found
usermod: no changes
───────────────────────────────────────

      ██╗     ███████╗██╗ ██████╗
      ██║     ██╔════╝██║██╔═══██╗
      ██║     ███████╗██║██║   ██║
      ██║     ╚════██║██║██║   ██║
      ███████╗███████║██║╚██████╔╝
      ╚══════╝╚══════╝╚═╝ ╚═════╝

   Brought to you by linuxserver.io
───────────────────────────────────────

To support LSIO projects visit:
https://www.linuxserver.io/donate/

───────────────────────────────────────
GID/UID
───────────────────────────────────────

User UID:    911
User GID:    911
───────────────────────────────────────
Linuxserver.io version: v4.0.0-ls199
Build-date: 2025-05-27T06:57:18+00:00
───────────────────────────────────────
    
[custom-init] No custom files found, skipping...
Setting up watches.
Watches established.
[ls.io-init] done.
FAILED:  [dyndns2][REDACTED.ipv64.de]> unexpected status: {"info":"good","status":"success","ip":{"ipv4":"89.246.38.250"}}
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3]["status":"success"][atime]> ignoring 'atime=1749319924' for unknown host: "status":"success"
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3]["status":"success"][backupmx]> ignoring 'backupmx=0' for unknown host: "status":"success"
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3]["status":"success"][login]> ignoring 'login=REDACTED.ipv64.de' for unknown host: "status":"success"
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3]["status":"success"][status-ipv4]> ignoring 'status-ipv4={info:good' for unknown host: "status":"success"
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3]["ip":{"ipv4":"89.246.38.250"}}][status-ipv4]> ignoring 'status-ipv4={info:good' for unknown host: "ip":{"ipv4":"89.246.38.250"}}
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3]["ip":{"ipv4":"89.246.38.250"}}][login]> ignoring 'login=REDACTED.ipv64.de' for unknown host: "ip":{"ipv4":"89.246.38.250"}}
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3]["ip":{"ipv4":"89.246.38.250"}}][atime]> ignoring 'atime=1749319924' for unknown host: "ip":{"ipv4":"89.246.38.250"}}
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3]["ip":{"ipv4":"89.246.38.250"}}][backupmx]> ignoring 'backupmx=0' for unknown host: "ip":{"ipv4":"89.246.38.250"}}
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3][wildcard=0][atime]> ignoring 'atime=1749319924' for unknown host: wildcard=0
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3][wildcard=0][backupmx]> ignoring 'backupmx=0' for unknown host: wildcard=0
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3][wildcard=0][login]> ignoring 'login=REDACTED.ipv64.de' for unknown host: wildcard=0
WARNING: [file /run/ddclient-cache/ddclient.cache, line 3][wildcard=0][status-ipv4]> ignoring 'status-ipv4={info:good' for unknown host: wildcard=0

@Dennis_Admin Wie kann man den Zusatzparameter „&output=min“ an den DDNS2 Update-URL vom ddclient anfügen? Bzw. kannst Du diese Antwort-Variante als Default (anstelle von JSON) verwenden?

1 Like

Warum nimmst du bei Ubuntu nicht das APT Debian DDNS IPv64 Package (Anleitungen)?

Natürlich gibt es mehrere Möglichkeiten wie zB. Den Hauseigenen client.

Es wäre einfach schön wenn es wieder wie vor dem 20. Mai funktionieren würde.

Irgendwie komisch dass es bei manchen funktioniert und bei manchen nicht… Entweder wurde was am ddclient geändert oder hier bei Ipv64.

Einfach eine Alternative zu nehmen ist ja nicht die Lösung (kurzfristig villeicht schon).

Weil die Probleme offenbar nur beim ddclient auftreten.

ipv64 gehört nicht zu den Supported services des ddclients. Das APT Debian DDNS IPv64 Package ist jedoch speziell für ipv64 gedacht.

Nachtrag:
sieht für mich nach Henne / Ei Problem aus. Was war zuerst da, Henne oder Ei?
Hier: wer ist für Anpassungen zuständig: Die Entwickler:innen des ddclients oder ipv64?

Kenn mich in der Materie zu wenig aus jedoch benutzen wir doch einen Standard oder ein Protokoll: DynDNS 2 das hier sicher vorgaben macht.

Leider habe ich online nichts sinnvolles ausser das vom ersten Post gefunden

  1. Das APT Package läuft nur halb OK, wenn man es aus der Source installiert (UPDATEINTERVALL und DNSOVERTLS werden von ipv64-ddns-update -set nicht gesetzt).

  2. Meine Haupt-Plattform ist Kubernetes (auf Suse) und dort hat der ddclient Pod bisher (seit 2023) gut funktioniert.

  3. Ich habe auch vom Docker-Container gelesen. Geht bestimmt auch in Kubernetes; aber nicht out-of-the-box :frowning:

  4. Evtl. geht’s auch mit In-a-Dyn. Dort hat @Dennis_Admin ja auch schon mal Code eingesendet.
    Und es gibt ein (3 Jahre altes) Helm-Chart, das sich bestimmt adaptieren lässt.

  5. ddclient kennt zwar einen script Parameter; aber der Suffix „&output=min“ lässt sich leider nur durch einen Patch im Quellcode einbauen; da „?hostname“ hart codiert an den Scriptnamen angehängt wird :frowning:

        my $url = "$groupcfg{'server'}$groupcfg{'script'}?hostname=$hosts&myip=";
        $url .= $ipv4 if $ipv4;
        if ($ipv6) {
            $url .= "," if $ipv4;
            $url .= $ipv6;
        }

  1. Frage: gibt es ein Protocol für ddclient, das wie ‚dyndns2‘ funktioniert, aber mit der JSON-Antwort besser umgehen kann?

Update: mit einem gepatchten ddclient klappt der Update (auf Ubuntu) wieder.

$ diff ddclient*
3966c3966,3967
<         my $url = "$groupcfg{'server'}$groupcfg{'script'}?hostname=$hosts&myip=";
---
> #       my $url = "$groupcfg{'server'}$groupcfg{'script'}?hostname=$hosts&myip=";
>         my $url = "$groupcfg{'server'}$groupcfg{'script'}?hostname=$hosts&output=min&myip=";
$ systemctl status ddclient.service
● ddclient.service - Update dynamic domain name service entries
     Loaded: loaded (/usr/lib/systemd/system/ddclient.service; disabled; preset: enabled)
     Active: active (running) since Sun 2025-06-08 12:40:17 BST; 8s ago
       Docs: man:ddclient(8)
   Main PID: 6728 (ddclient - slee)
      Tasks: 1 (limit: 2268)
     Memory: 9.9M (peak: 13.0M)
        CPU: 172ms
     CGroup: /system.slice/ddclient.service
             └─6728 "ddclient - sleeping for 300 seconds"

Jun 08 12:40:17 manara06 systemd[1]: Starting ddclient.service - Update dynamic domain name service entries...
Jun 08 12:40:17 manara06 systemd[1]: Started ddclient.service - Update dynamic domain name service entries.
Jun 08 12:40:17 manara06 ddclient[6728]: WARNING: [dyndns2][REDACTED.udp64.de]> nochg: No update required; unnecessary attempts to change the current address are considered abusive
Jun 08 12:40:17 manara06 ddclient[6728]: SUCCESS: [dyndns2][REDACTED.udp64.de]> IPv6 address set to 2001:16b8:bb30:ec00:dead:beef:c0ff:ee00

@alex_fl Das nützt DIR aber leider gar nix, da der os-ddclient ein Rewrite der OPNsense-Community in Python ist. :worried:

Eventuell finde ich ja ein Docker container der mit der gleichen Version arbeitet

Was wäre dein ddclient für eine Version?

Danke für eure Antworten

@alex_fl
In der Ubuntu-VM nutze ich direkt den Perl-Code der ddclient Version 4.0.0 von Github mit der gepatchten Zeile aus meinem vorigen Beitrag.

Etwas Ähnliches ist dann auch noch für den Kubernetes-Pod zu machen. D.h. der Docker-Container des LinuxServer-Projekts muss angepasst werden:

  • Im Dockerfile „herumpfuschen“ und mit dem gepatchten ddclient ein eigenes Image bauen.
  • Das wird aber nicht so schnell gehen :thinking:

Hi,
ich hatte ein ähnliches Problem.
Meine Version ist ebenfalls die von Github.
Nachdem ich das Protokoll von „dyndns2“ auf „changeip“ geändert hatte war der Fehler weg.

# IPv64
Jun 04 04:07:16 homesrv ddclient-ipv6[1481911]: SUCCESS: [changeip][IRGENDWAS.srv64.de]> IP address set to xxxx:e0:xxx:8a00:xx3a:5bxx:xxxx:xxxx
Jun 04 04:10:05 homesrv ddclient-ipv4[1483381]: SUCCESS: [changeip][IRGENDWAS.srv64.de]> IP address set to 12.34.81.233
# anderer Anbieter
Jun 06 00:07:43 homesrv ddclient-ipv6[2873858]: SUCCESS: [dyndns2][IRGENDWAS.v6.rocks]> IPv6 address set to xxxx:e0:xxx:8a00:xx3a:5bxx:xxxx:xxxx
Jun 06 00:08:30 homesrv ddclient-ipv4[2874312]: SUCCESS: [dyndns2][IRGENDWAS.v6.rocks]> IPv4 address set to 12.34.95.198

Gruß

1 Like

Jun 04 04:07:16 homesrv ddclient-ipv6[1481911]: SUCCESS: [changeip] [IRGENDWAS.srv64.de]> IP address set to xxxx:e0:xxx:8a00:xx3a:5bxx:xxxx:xxxx
Jun 04 04:10:05 homesrv ddclient-ipv4[1483381]: SUCCESS: [changeip][IRGENDWAS.srv64.de]> IP address set to 12.34.81.233

Ja beim Docker funktioniert das bei mir ebenfalls…danke :slight_smile:

Jedoch bei der OPN Sense nicht…folgender fehler:



2025-06-09T14:33:48	Notice	ddclient	79062	FAILED: 401 badauth)	
2025-06-09T14:33:48	Notice	ddclient	79062	FAILED:	
2025-06-09T14:33:48	Notice	ddclient	79062	FAILED: WWW-Authenticate: basic realm="DDNS"	
2025-06-09T14:33:48	Notice	ddclient	79062	FAILED: X-Powered-By: PHP/7.4.33	
2025-06-09T14:33:48	Notice	ddclient	79062	FAILED: Connection: keep-alive	
2025-06-09T14:33:48	Notice	ddclient	79062	FAILED: Transfer-Encoding: chunked	
2025-06-09T14:33:48	Notice	ddclient	79062	FAILED: Content-Type: text/plain;charset=UTF-8	
2025-06-09T14:33:48	Notice	ddclient	79062	FAILED: Date: Mon, 09 Jun 2025 07:33:48 GMT	
2025-06-09T14:33:48	Notice	ddclient	79062	FAILED: Server: nginx	
2025-06-09T14:33:48	Notice	ddclient	79062	FAILED: updating homelab-blaaa.ipv64.net: authentication failed (HTTP/1.1 401 badauth

naja … derzeit läuft es über docker und changeip … eventuell sagt ja @Dennis_Admin noch was dazu, oder ändert dies auf Standardmäßig auf „&output=min. oder wir lassen das so…was ich jedoch nicht sehr befriedigend finde…
Falls ich zeit habe werde ich mich mal bisschen umschauen was opnsense ddns davon hält wenn man den ein Modul bereitstellt…kann ja nicht so mega schwierig sein.

Ich danke euch bisher…ich lass den Thread mal noch offen…eventuell findet sich ja noch eine gute Lösung :slight_smile:

allen ein schönes verlängertes Wochenende

ACK @Apollo13, funktioniert mit dem in Perl programmierten Original ddclient. :check_mark:

Da beim Protokoll ‚changeip‘ der Result-String nicht so penibel überprüft wird, wie beim Protokoll ‚dyndns2‘, reicht der Teilstring „success“ für ein positives Resultat.

        my @reply = split /\n/, $reply;
        if (grep /success/i, @reply) {
            $recap{$h}{'ip'} = $ip;
            $recap{$h}{'mtime'} = $now;
            $recap{$h}{'status'} = 'good';
            success("IP address set to $ip");
        } else {
            $recap{$h}{'status'} = 'failed';
            warning("SENT:    %s", $url) unless opt('verbose');
            warning("REPLIED: %s", $reply);
            failed("invalid reply");
        }

JSON-Resultat von ipv64.net matcht ‚success‘:

{"info":"good","status":"success","ip":{"ipv4":"89.246.38.250"}}

Hi @alex_fl, seit OPNsense 23.7 wird dort nicht mehr der ddclient Code in „Perl“ benutzt.

Das neue os-ddclient Plugin ist eine (teilweise) Neuimplementierung in „Python3“. siehe hier
D.h. sowohl Algorithmen, als auch Protokolle sind nicht identisch zum alten Plugin. :frowning:

PS, für alle K8s User: Bitte melden, falls jemand Interesse am gepatchten Docker-Image linuxserver/ddclient:v4.0.0 hat. Ich kann dann eine Anleitung zusammenklöppeln. :slight_smile:

Servus, Pagong

ich benutze jetzt den Docker von linuxserver/ddclient für mein Cloudflare und dynu und den alcapone1933/docker-ddns-ipv64 für IPV64

naja ich verschwende jetzt keine Zeit mehr um da eine andere Lösung zu finden ^^

Danke euch allen…für mich ist da Thema Gelöst ^^