Dynamic DNS is "Not Running" upon power on or reboot

Why is Dynamic DNS is "Not Running" upon power on or reboot? I have the "DDNS Autostart enabled" in Luci but the DDNS service is always in the "Not Running" state until I hit the "Reload" button. Is it by design to work this way or is there something I miss to configure? Thanks.

Please provide /etc/config/ddns - be sure to redact password and other personal info (e.g. the domain name).

Race condition?

Restart the service in rc.local, during boot.

1 Like

Yes there does seem to be something broken.

  • service reports ddns is stopped even though ddns start has been run and there is a ddns updater process running normally.
  • If that process is killed to simulate a crash, it does not re-spawn.

Thanks for the comments about what could be wrong. Come to think about it I don't know if this has something to do with my router setup. I have DDNS running on an MR8300 running behind a main router from ISP. MR8300 is wirelessly connected to the main router through 5Ghz radio0 (hence event network is wlan0) in the client mode. I use URL (http://checkip.amazonaws.com) to get public IP address. (Had tried http://checkip.dyndns.com:8245 too but no difference.) Once I hit the service "Reload" button, everything is running as it should be (detect possible public IP every hour for potential update).

I've noticed this behaviour too where rebooting/power off the router and back on the DDNS service does not autostart.

It's good not to be the only one with the same problem.

same issue here.

(of note is that i am using a the router as a repeater of another network: mi wan is a wwan, a wlan client interface.)

i added this to the startup script to solve it:

# workaround for ddns not starting:
{ sleep 120; /etc/init.d/ddns restart; }  &

i tested with 60 seconds which worked fine, so i settled on 120. LuCI shows the "running" status after 2 minutes.

another minor thing i noticed is, my configs are lacking this entry:

      option retry_interval '60'

because 60 is de default. but maybe there is an error on script start, and when handling the retry there is another error (missing time), and then it dies. doubtful but worth mentioning for others to try before applying the above workaround: you just need to add 60 in the empty field in LuCI.

Greetings from Germany!

I have the same problem on a x86/64 system with OpenWRT 23.05. ddns doesn't start correctly on reboot.

Additionally ddns is marked as "enabled", but alway as "stopped", even if I restart the service.

Nevertheless a

/bin/sleep 11 && /sbin/service ddns restart &

in the local startup helps in my case, too, the Dynamic DNS - LuCI-page shows the services as running. But the service "ddns" is still marked as "stopped".

BTW: I cannot stop the services in the Dynamic DNS - LuCI-page, the "Stop"-buttons are always greyed out.

Hope this annoying bug will be fixed sometimes.

Greetings

René

Been having the same problem for a while on a Raspberry Pi 4, 22.03.5

I have a suspicion. Do you guys use curl or wget for ddns?
curl will use interface to get IP whereas wget will use network to get IP.
It seems that using curl will cause this problem. Maybe interface comes up later than network?

Maybe it is not curl or wget. But I believe the problem is definitely the way you get IP.

TLDR:
In the Services/Dynamic DNS menu
Click the Stop DDNS button
Click the Start DDNS button
Click the Restart DDNS button
reboot (if you don't believe me)

Came across this problem ages ago and did this quick repair.
echo sleep 60; /usr/lib/ddns/dynamic_dns_updater.sh -- start >/etc/rc.local
Today out of sheer bordom and determination I discovered the cause of the problem is that:
/usr/lib/ddns/dynamic_dns_updater.sh -- start
is not in the boot option of /etc/rc.d/S95ddns.
My new fix was to manually add it or use this simple one liner:
cp /etc/init.d/ddns /etc/rc.d/S95ddns
or something more uneccessarily elaborate:
sed -i 's|\(boot() {\n\)\( r\)|\1\/usr\/lib\/ddns\/dynamic_dns_updater.sh -- stop\2\n|' /etc/rc.d/S95ddns
However when investigating further, I discovered that if you click the Stop DDNS button in the Dynamic DNS menu, it removes the /etc/rc.d/S95ddns file. When you then click Start DDNS, it creates a symlink of /etc/init.d/ddns
to /etc/rc.d/S95ddns. Then click Restart DDNS button and all is good and survives a reboot.
:grinning:

1 Like