DDNS uclient-fetch Error: '8'

I'm running OpenWrt 23.05.5 on a TP-Link Archer AX23 v1 in my home
I have a domain, hosted by Strato.
I want a subdomain eg home.mydomain.com to provide a route to my home router.

I have found that DynDNS is available at Strato. Their documentation (in English) seems to be on 2 separate pages:

  1. https://www.strato-hosting.co.uk/faq/hosting/what-settings-can-i-configure-in-the-dynamic-dns-dyndns-configuration-dialog/
  2. https://www.strato-hosting.co.uk/faq/hosting/this-is-how-easy-it-is-to-set-up-dyndns-for-your-domains/

I have installed the packages ddns-scripts and luci-app-ddns.
When I later checked the DynDNS page in LuCi I noticed a warning regarding bind-host, so I installed that too.

I have these DynDNS settings
lookup hostname: home.mydomain.com
DDNS Service Provider: Starto.com
Domain: home.mydomain.com
username: mydomain.com
password:

The service does seem to work: DNS at Strato did pick up my home IP for the subdomain.
BUT
In the syslog I find this popping up, every minute:

user.err ddns-scripts[10372]: home: uclient-fetch Error: '8'
user.warn ddns-scripts[10372]: home: Transfer failed - retry 940/0 in 60 seconds

Some other things I noticed (unsure if they matter, but you never know)

  • when clicking Reload on the dyndns service I get a "XHR request timed out"
  • when I edit the service and go to the tab Log File Viewer it says " Pleas press [Read] button", but there isn't one?

When I manually check /var/log/ddns/home.log I find this a lot:

 095537       : #> /bin/uclient-fetch -q -O /var/run/ddns/home.dat -Y off 'https://dyndns.strato.com/nic/update' 2>/var/run/ddns/home.err
 095538 ERROR : uclient-fetch Error: '8'
 095538       : 
 095538  WARN : Transfer failed - retry 954/0 in 60 seconds

So just to be complete, it's uclient-fetch 2023-04-13-007d9454-1

/bin/uclient-fetch -q -O /var/run/ddns/home.dat -Y off 'https://dyndns.strato.com/nic/update'

run it from prompt like that, see if there's any additional output.

I don't use any dyndns, but you have to authenticate in some way, perhaps that's in the /var/run/ddns/home.dat file ...

1 Like

Wow, that's fast :slight_smile:

Nope, nothing additional. Returns without any message.
(when I added the missing ' at the end)

Remove the -q to see more details.

2 Likes

Removing the -q helped :). It gave me this:

Downloading 'https://dyndns.strato.com/nic/update'
Connecting to 81.169.144.192:443
HTTP error 401

401 made me think about authentication issues. So I decided to start all over. Removed the ddns scripts and luci package, deleted /etc/config/ddns, reinstalled packages and created the service again.

This time around the "Read log" button did appear. It gave me this:

103701  note : PID '19907' started at 2025-01-21 10:37
 103701       : ddns version  : 2.8.2-43
 103701       : uci configuration:
ddns.home.check_unit='minutes'
ddns.home.domain='home.mydomain.com'
ddns.home.enabled='1'
ddns.home.force_unit='minutes'
ddns.home.interface='wan'
ddns.home.ip_network='wan'
ddns.home.ip_source='network'
ddns.home.lookup_host='mydomain.com'
ddns.home.password='***PW***'
ddns.home.retry_unit='seconds'
ddns.home.service_name='strato.com'
ddns.home.use_ipv6='0'
ddns.home.use_syslog='2'
ddns.home.username='mydomain.com'
ddns.home=service
 103701       : verbose mode  : 0 - run normal, NO console output
 103701       : check interval: 600 seconds
 103701       : force interval: 4320 seconds
 103701       : retry interval: 60 seconds
 103701       : retry max count : 0 times
 103701       : No old process
 103701       : last update: never
 103701       : Detect registered/public IP
 103701       : #> /usr/bin/host -t A mydomain.com  >/var/run/ddns/home.dat 2>/var/run/ddns/home.err
 103702       : Registered IP '99.99.99.99' detected
 103702  info : Starting main loop at 2025-01-21 10:37
 103702       : Detect current IP on 'network'
 103702       : Current IP '11.11.11.11' detected on network 'wan'
 103702       : Update needed - L: '11.11.11.11' <> R: '99.99.99.99'
 103702       : Force communication via device 'wan'
 103702       : #> /usr/bin/curl -RsS -o /var/run/ddns/home.dat --stderr /var/run/ddns/home.err --interface wan --noproxy '*' 'http://mydomain.com:Q%24%2abh%25TsTO0vTB@dyndns.strato.com/nic/update?hostname=home.mydomain.com&myip=11.11.11.11'
 103702       : DDNS Provider answered:
nochg 11.11.11.11
 103702  info : Update successful - IP '11.11.11.11' send
 103702  info : Forced update successful - IP: '11.11.11.11' send
 103703       : Waiting 600 seconds (Check Interval)
 103703       : #> /bin/uclient-fetch -q -O /var/run/ddns/home.dat -Y off 'https://dyndns.strato.com/nic/update' 2>/var/run/ddns/home.err
 103704 ERROR : uclient-fetch Error: '8'
 103704       : 
 103704  WARN : Transfer failed - retry 995/0 in 60 seconds
 103804       : #> /bin/uclient-fetch -q -O /var/run/ddns/home.dat -Y off 'https://dyndns.strato.com/nic/update' 2>/var/run/ddns/home.err
 103804 ERROR : uclient-fetch Error: '8'
 103804       : 
 103804  WARN : Transfer failed - retry 996/0 in 60 seconds

time to change the password, or is this masked ?

:man_facepalming:
Thanks! done! :+1:

The error is kinda expected, since it is trying to get something from the address without authentication. What is the output of uci export ddns ?

Here you go:

package ddns

config ddns 'global'
        option ddns_dateformat '%F %R'
        option ddns_loglines '250'
        option ddns_rundir '/var/run/ddns'
        option ddns_logdir '/var/log/ddns'

[snip - default & disabled services]

config service 'home'
        option service_name 'strato.com'
        option use_ipv6 '0'
        option enabled '1'
        option lookup_host 'home.mydomain.com'
        option domain 'home.mydomain.com'
        option username 'mydomain.com'
        option password '**********'
        option ip_source 'network'
        option ip_network 'wan'
        option interface 'wan'
        option use_syslog '2'
        option check_unit 'hours'
        option force_unit 'days'
        option retry_unit 'minutes'
        option check_interval '6'
        option force_interval '30'
        option retry_interval '5'

Could you verify that in this line there is some user and pass, but you erased them?

Nope. That's just the line as is. I haven't erased anything!
I only replaced some stuff in that post (like ip's, user and domain names)

Maybe the strato template is not working.
What is the expected update string?

I don't know, and not sure how/where to find the answer.
I do know the ddns itself is working though. My home IP is being updated to the DNS.
I have also changed some intervals (check every 6 hours if local IP has been changed), but the error keeps popping up every minute. Don't understand what function is being called every minute.

I do get the impression it's not something I have done wrong. As you mentioned, it might be the template. Not sure how github works. Is there a way to address this issue?
I could try to disable the current service and create a custom one to troubleshoot. See if I can get it working without the error. But open to alternatives!

I see no issue with the template. Here is the result I got using wrong authentication data, it looks pretty normal to me:

202031       : #> /usr/bin/curl -RsS -o /var/run/ddns/strato.dat --stderr /var/run/ddns/strato.err --cacert /etc/ssl/certs/ca-certificates.crt --noproxy '*' 'https://example.com:pa%24%24word@dyndns.strato.com/nic/update?hostname=myhost.example.com&myip=203.0.113.1'
202031       : DDNS Provider answered:
badauth 0.0.0.0
202032 ERROR : IP update not accepted by DDNS Provider

@miels please enable https, configure CA Path as /etc/ssl/certs/ca-certificates.crt, make sure you have only one DDNS instance configured, reboot then show the recent DDNS client log.

Hi Andrew,

Thanks for your assistance. I enabled https in the service settings and entered the CA path. Also increased log level. Saved & applied.

The log:

 210643       : ************ ************** ************** **************
 210643  note : PID '19487' started at 2025-01-22 21:06
 210643       : ddns version  : 2.8.2-43
 210644       : uci configuration:
ddns.home.cacert='/etc/ssl/certs/ca-certificates.crt'
ddns.home.check_interval='6'
ddns.home.check_unit='hours'
ddns.home.domain='home.mydomain.nl'
ddns.home.enabled='1'
ddns.home.force_interval='30'
ddns.home.force_unit='days'
ddns.home.interface='wan'
ddns.home.ip_network='wan'
ddns.home.ip_source='network'
ddns.home.lookup_host='home.mydomain.nl'
ddns.home.password='***PW***'
ddns.home.retry_interval='5'
ddns.home.retry_unit='minutes'
ddns.home.service_name='strato.com'
ddns.home.use_https='1'
ddns.home.use_ipv6='0'
ddns.home.use_syslog='1'
ddns.home.username='mydomain.nl'
ddns.home=service
 210644       : verbose mode  : 0 - run normal, NO console output
 210644       : check interval: 21600 seconds
 210644       : force interval: 2592000 seconds
 210644       : retry interval: 300 seconds
 210644       : retry max count : 0 times
 210644       : 'SIGTERM' was send to old process
 210644  note : PID '19072' terminated by 'SIGTERM' at 2025-01-22 21:06
 210644       : last update: 2025-01-21 10:57
 210644       : Detect registered/public IP
 210644       : #> /usr/bin/host -t A home.mydomain.nl  >/var/run/ddns/home.dat 2>/var/run/ddns/home.err
 210645       : Registered IP '11.11.11.11' detected
 210645  info : Starting main loop at 2025-01-22 21:06
 210645       : Detect current IP on 'network'
 210645       : Current IP '11.11.11.11' detected on network 'wan'
 210645       : Waiting 21600 seconds (Check Interval)
 210735       : #> /bin/uclient-fetch -q -O /var/run/ddns/home.dat -Y off 'https://dyndns.strato.com/nic/update' 2>/var/run/ddns/home.err
 210735 ERROR : uclient-fetch Error: '8'
 210735       : 
 210735  WARN : Transfer failed - retry 3043/0 in 60 seconds

I'd like to restate: the DDNS update itself does work. I've also decreased the interval of check, retry and force to a maximum of once every 5 minutes. Nevertheless the error keeps popping up every minute.

Did you check the config file for duplicates and rebooted?
With curl installed you should not see uclient-fetch at all.

There where 2 other (default) services. They wheren't enabled, but removed them anyway.
Rebooted the device.

 212539       : ************ ************** ************** **************
 212539  note : PID '3443' started at 2025-01-22 21:25
 212539       : ddns version  : 2.8.2-43
 212539       : uci configuration:
ddns.home.cacert='/etc/ssl/certs/ca-certificates.crt'
ddns.home.check_interval='6'
ddns.home.check_unit='hours'
ddns.home.domain='home.mydomain.com'
ddns.home.enabled='1'
ddns.home.force_interval='30'
ddns.home.force_unit='days'
ddns.home.interface='wan'
ddns.home.ip_network='wan'
ddns.home.ip_source='network'
ddns.home.lookup_host='home.mydomain.com'
ddns.home.password='***PW***'
ddns.home.retry_interval='5'
ddns.home.retry_unit='minutes'
ddns.home.service_name='strato.com'
ddns.home.use_https='1'
ddns.home.use_ipv6='0'
ddns.home.use_syslog='1'
ddns.home.username='mydomain.com'
ddns.home=service
 212540       : verbose mode  : 0 - run normal, NO console output
 212540       : check interval: 21600 seconds
 212540       : force interval: 2592000 seconds
 212540       : retry interval: 300 seconds
 212540       : retry max count : 0 times
 212540       : No old process
 212541       : last update: never
 212541       : Detect registered/public IP
 212541       : #> /usr/bin/host -t A home.mydomain.com  >/var/run/ddns/home.dat 2>/var/run/ddns/home.err
 212542       : Registered IP '11.11.11.11' detected
 212542  info : Starting main loop at 2025-01-22 21:25
 212542       : Detect current IP on 'network'
 212542       : Current IP '11.11.11.11' detected on network 'wan'
 212542       : Forced Update - L: '11.11.11.11' == R: '11.11.11.11'
 212542       : Force communication via device 'wan'
 212542       : #> /usr/bin/curl -RsS -o /var/run/ddns/home.dat --stderr /var/run/ddns/home.err --interface wan --cacert /etc/ssl/certs/ca-certificates.crt --noproxy '*' 'https://mydomain.com:***PW***@dyndns.strato.com/nic/update?hostname=home.mydomain.com&myip=11.11.11.11'
 212543       : DDNS Provider answered:
nochg 11.11.11.11
 212543  info : Forced update successful - IP: '11.11.11.11' send
 212543       : Waiting 21600 seconds (Check Interval)

I do notice curl now, instead of uclient-fetch.

And... that was over 10 minutes ago. No errors since! :smiley:

I'll check again tomorrow to verify (and mark as solution accordingly :))

Thanks, fixed!

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