DuckDNS IP update not accepted?

Hello I'm a noob who is not in tech lol so bear with me please. My setup is my openwrt router is behind my main ISP router (eero pro) and I'm trying to config the openwrt router with DuckDNS to retreive my public IP address to get it ready for OpenVPN or Wireguard server. I configured Dynamic DNS in luci and got the following script pulling using winscp. First i wanted to try it out without any ssl

config service 'duckdns'
	option service_name 'duckdns.org'
	option use_ipv6 '0'
	option enabled '1'
	option lookup_host 'examiner.duckdns.org'
	option username 'examiner'
	option password 'xxx'
	option ip_source 'web'
	option ip_url 'http://ipv4.wtfismyip.com/text'
	option interface 'wan'
	option use_syslog '2'
	option check_interval '10'
	option check_unit 'minutes'
	option force_unit 'minutes'
	option retry_unit 'seconds'
	option domain 'examiner'

When I check the log, I get the following error:

140638       : Waiting 600 seconds (Check Interval)
 141638       : Detect registered/public IP
 141638       : #> /usr/bin/nslookup examiner.duckdns.org  >/var/run/ddns/duckdns.dat 2>/var/run/ddns/duckdns.err
 141638       : Registered IP '47.200.xx.xx' detected
 141638  info : Rerun IP check at 2023-01-10 14:16
 141638       : Detect local IP on 'web'
 141638       : #> /bin/uclient-fetch -q -O /var/run/ddns/duckdns.dat -Y off 'http://ipv4.wtfismyip.com/text' 2>/var/run/ddns/duckdns.err
 141639       : Local IP '47.200.xx.xx' detected on web at 'http://ipv4.wtfismyip.com/text'
 141639       : Forced Update - L: '47.200.xx.xx' == R: '47.200.xx.xx'
 141639       : #> /bin/uclient-fetch -q -O /var/run/ddns/duckdns.dat -Y off 'http://www.duckdns.org/update?domains=examiner&token=***PW***&ip=47.200.xx.xx' 2>/var/run/ddns/duckdns.err
 141639       : DDNS Provider answered:
KO
 141639 ERROR : IP update not accepted by DDNS Provider
 141639       : Waiting 600 seconds (Check Interval)

I haven't configured much else yet but why am I getting this error? I didn't change anything under Network-> DHCP and DNS. Is there anything else I should config? Thanks in advance!

I am guessing here, but I think your update interval may be too rapid. You might be able to avoid this error by increasing the update interval to something considerably longer (maybe an hour or even 12 or 24)? How long is your DHCP lease from your ISP?

1 Like

If that's the only problem, I will increase the interval to an hour and check later. Unfortunately my crappy eero pro router by amazon provided by ISP has a sh*t app only interface and doesn't tell me how long the lease was but I know it's a long time probably months.

Let's take it in two chunks then:

  1. Increase the time to lets say 1 hour and see if the error persists. Let's understand if the issue is duckdns trying to avoid 'abuse' of their update API (I'm not accusing you at all -- but some people do 'abuse' the API and that causes unnecessary load on their servers).

  2. then, figure out, in the worst case scenario, how long do you think you could afford to be unable to connect to your home VPN endpoint while you are remote. The scenario being that the IP changes immediately after a duckdns update and then you need to wait for the next cycle for it to catch up. If it is a 'nice to have' but not required, an hour or even a day probably won't be a big deal. But if you rely on that road-warrior connection, maybe it needs to be faster. But

If your ISP doesn't change your IP frequently (or even pseudo-never under the right circumstances), you may only need to update frequently enough to keep your duckdns account 'alive' -- a major event like a power outage should trigger an update because it will happen when the system comes back online. You can also even use some watchdog type scripts to detect if there has been a change that hasn't been detected by the ddns scripts.

Also, verify that your login and domain name credentials are correct... that could be another reason for the provider rejecting the update.

Using these timing settings for me works fine:

ddns.duckdns.check_interval='60'
ddns.duckdns.force_interval='90'

By the way I don't know about this config:

option ip_source 'web'

Mine is configured to 'Network', is the first option under "advanced settings", try to check it because I don't have any "web" option there

I increased it to an hour and am waiting, will post update later. Before that I checked with the updateURL by typing a random IP address into browser with the token and domain and it updated to that random IP address fine. So I know the domain and pass is fine. Which also makes me think it's an error on my end. As for being not able to receive an update to IP, an hour is OK with me as my ISP doesn't change to often anyways. And I'm trying to keep this as simple as possible.

I'm still learning but I think that just means the IP address is obtained from a website and not your network because my openwrt router is behind a main router so it will spit out the local address, not the public IP.

Looks like no dice. Changed the IP address to 9.9.9.9 manually using the updater URL. Looks like it won't change to my actual IP address. Must be a setting or main router blocking it?

 164321       : Waiting 3600 seconds (Check Interval)
 174321       : Detect registered/public IP
 174321       : #> /usr/bin/nslookup examiner.duckdns.org  >/var/run/ddns/duckdns.dat 2>/var/run/ddns/duckdns.err
 174321       : Registered IP '9.9.9.9' detected
 174322  WARN : Updating IP at DDNS provider failed - starting retry 1/0
 174322       : Detect local IP on 'web'
 174322       : #> /bin/uclient-fetch -q -O /var/run/ddns/duckdns.dat -Y off 'http://ipv4.wtfismyip.com/text' 2>/var/run/ddns/duckdns.err
 174322       : Local IP '47.200.xx.xx' detected on web at 'http://ipv4.wtfismyip.com/text'
 174322       : Update needed - L: '47.200.xx.xx' <> R: '9.9.9.9'
 174322       : #> /bin/uclient-fetch -q -O /var/run/ddns/duckdns.dat -Y off 'http://www.duckdns.org/update?domains=examiner&token=***PW***&ip=47.200.xx.xx' 2>/var/run/ddns/duckdns.err
 174323       : DDNS Provider answered:
KO
 174323 ERROR : IP update not accepted by DDNS Provider
 174323       : Waiting 3600 seconds (Check Interval)

I don't think this is relevant anymore, but I recall needing to install wget for use with my ddns provider (I use changeip). I still install wget as part of my standard process since I haven't tested without. Maybe give that a shot. (I'm just taking a guess here -- this may not help, but worth trying).

EDITED: removed the uncertainty -- this was the solution :slight_smile:

1 Like

Thank you very much! I installed wget-nossl package from Software in luci and that fixed it! I'm so annoyed, this wasn't written anywhere in the setup instructions! Edit: I see the written suggestion to install wget or curl in the Dynamic DNS page in luci :weary: :man_facepalming:

Glad that fixed it!

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.