Dynamic DNS fails for duckdns.org

Hello,

I recently configured Dynamic DNS with duckdns.org. I think it worked a few months ago, but notice in my logs that it is now failing all the time:

ddns[14594]: An update has not been performed because earlier updates failed for myname-is-here.duckdns.org
ddns[14594]: Last failure message:
ddns[14594]:   DDNSConfigurationError: The configuration file has errors
ddns[14594]: Further updates will be withheld until 2021-06-14 12:35:00.754217

DuckDNS uses a token not a username and password, however the web UI does not allow me to configure a token. It is listed as a token provider by the ddns python script included in IPFire.

In case the problem was that it needed to use a token and not a password I manually edited ddns.conf. I removed the username and password fields and added token instead (Based on ddns.conf.example, which seems old!) but it has the same error as above when I run this in a shell:
/usr/bin/ddns -c /var/ipfire/ddns/ddns.conf update myname-is-here.duckdns.org

I have sent a GET request using curl and there’s no problems updating. This works every time:

DOMAIN="myname-is-here"
TOKEN="token-goes-here"
IP=$(cat /var/ipfire/red/local-ipaddress)

curl --get --data "domains=${DOMAIN}&token=${TOKEN}&ip=${IP}" https://www.duckdns.org/update

So the problem is either with my configuration or the IPFire script.

Thank you in advance!

what version of IPFire are you currently running?

I always run the latest and update on the day they are released. Currently core update 156.

In fact I’ve even manually added Stefan’s fix from git so that ddns token providers can be listed properly. (It’s not in the latest stable version.)

So that does fix the problem? Or does Stefan’s fix cause a new issue? Or?

No, I just mentioned it to show that I’ve investigated this thoroughly.

The problem is as I’ve explained in my original message. Stefan’s fix just resolves a minor unrelated issue with listing ddns providers which support token based authentication.

I don’t know Python well enough to troubleshoot through the script, but @bitbanger was on to the solution in their post here.

The ddns script doesn’t cater for duckdns properly. A user must enter their subdomain (my-name-is-here in my example above) and not the whole domain name (my-name-is-here.duckdns.org).

When I do this it updates properly and I don’t get the error I reported.

While DuckDNS may be unique in this (according to @bitbanger, I’ve not checked) IPFire should be intuitive and cater for it. The IPFire documentation shows multiple examples where the whole domain name must be entered. Rather than writing an exception for this service the script should be modified to cater for it.

In the other thread @bitbanger raised a bug on this issue.

https://bugzilla.ipfire.org/show_bug.cgi?id=12415

Apparently DuckDNS completely changed their API.

The status of the bug is MODIFIED and a patch file was merged into IPFire’s next repository in Dec 2020 which became Core Update 156.

There is no further input in the bug entry from the bug originator testing it and either confirming it works or notifying that it still fails either in Testing or when released as Core Update 156.

Your input would indicate that it is not working. It would be good if you could give your input to bug #12415 in IPFire Bugzilla. The access credentials are the same as your IPFire People email address and password.

2 Likes

I looked around but didn’t come across that bug (I guess I should have read the old thread in more detail). I’ll update the bug when I’m able.