DDNS not working - XHR request timed out

Hello guys,

I hope ypu can help me with this issue.

I use duiadns.net as my provider for DDNS and want to set it up on my OpenWRT One.

Here are the version informations:

  • OpenWRT: 24.10.1 r28597-0425664679 / LuCI openwrt-24.10 branch 25.119.71430~be769af
  • DDNS: 2.8.2-r64

I followed the following guids to set things up:

The update does not work and I always get the following message in LuCI: "XHR request timed out"

Here is the setup:

Please replace pictures with the latest DDNS client log. Use </> to format it.

Here it is. Of course I masked the sensitive information in the log.

110430       : ************ ************** ************** **************
 110431  note : PID '16196' started at 2025-05-09 11:04
 110431       : ddns version  : 2.8.2-64
 110431       : uci configuration:
ddns.duiadns_v4.check_interval='5'
ddns.duiadns_v4.check_unit='minutes'
ddns.duiadns_v4.dns_server='ns1.duiadns.net'
ddns.duiadns_v4.domain='XXX.XXX.XX'
ddns.duiadns_v4.enabled='1'
ddns.duiadns_v4.force_interval='30'
ddns.duiadns_v4.force_unit='minutes'
ddns.duiadns_v4.interface='wan'
ddns.duiadns_v4.ip_source='web'
ddns.duiadns_v4.ip_url='http://ipv4.duiadns.net'
ddns.duiadns_v4.lookup_host='XXX.XXX.XX'
ddns.duiadns_v4.password='***PW***'
ddns.duiadns_v4.service_name='duiadns.net'
ddns.duiadns_v4.use_https='1'
ddns.duiadns_v4.use_ipv6='0'
ddns.duiadns_v4.use_syslog='2'
ddns.duiadns_v4.username='XXX@XXX.XX'
ddns.duiadns_v4=service
 110431       : verbose mode  : 0 - run normal, NO console output
 110431       : check interval: 300 seconds
 110431       : force interval: 1800 seconds
 110431       : retry interval: 60 seconds
 110431       : retry max count : 0 times
 110431       : No old process
 110431       : last update: 2025-05-09 11:00
 110431       : Detect registered/public IP
 110431       : #> /usr/bin/nslookup XXX.XXX.XX ns1.duiadns.net >/var/run/ddns/duiadns_v4.dat 2>/var/run/ddns/duiadns_v4.err
 110431       : Registered IP 'XXX.XXX.XXX' detected
 110431  info : Starting main loop at 2025-05-09 11:04
 110431       : Detect current IP on 'web'
 110431       : #> /usr/bin/wget --hsts-file=/tmp/.wget-hsts -nv -t 1 -O /var/run/ddns/duiadns_v4.dat -o /var/run/ddns/duiadns_v4.err --no-proxy 'http://ipv4.duiadns.net'
 110431       : Current IP 'XXX.XXX.XXX.XXX' detected on web at 'http://ipv4.duiadns.net'
 110431       : Waiting 300 seconds (Check Interval)

based on the log, it seems to be working ?

Yes, it looks like that, but whenever it updates the IP address, I get this message " XHR request timed out"

Install curl.
Configure cacert as /etc/ssl/certs/ca-certificates.crt
Do not use address detection via URL, always take the address from your own WAN interface.
Reboot and ignore "XHR request timed out".

Install curl .
Configure cacert as /etc/ssl/certs/ca-certificates.crt

I did that. Nothing changed.

Do not use address detection via URL, always take the address from your own WAN interface.

I have to do it that way, because this OpenWRT is not directly connected to the internet. It is behind another router and its WAN interface has an internal IP address. It works with that URL, as described in the mentioned guide by my provider.

Reboot and ignore "XHR request timed out".

I rebooted several times. Just ignoring an error message does not fix the problem. The update does not work and this message is the only lead I have.

Manually set a random IP address on the portal.
Restart the client and show the log.

I set the IP to 8.8.8.8 and restarted the service.
Here is the new log:

114136       : ************ ************** ************** **************
 114136  note : PID '20842' started at 2025-05-09 11:41
 114136       : ddns version  : 2.8.2-64
 114136       : uci configuration:
ddns.duiadns_v4.check_interval='5'
ddns.duiadns_v4.check_unit='minutes'
ddns.duiadns_v4.dns_server='ns1.duiadns.net'
ddns.duiadns_v4.domain='XXX.XXX.XX'
ddns.duiadns_v4.enabled='1'
ddns.duiadns_v4.force_interval='30'
ddns.duiadns_v4.force_unit='minutes'
ddns.duiadns_v4.interface='wan'
ddns.duiadns_v4.ip_source='web'
ddns.duiadns_v4.ip_url='http://ipv4.duiadns.net'
ddns.duiadns_v4.lookup_host='XXX.XXX.XX'
ddns.duiadns_v4.password='***PW***'
ddns.duiadns_v4.service_name='duiadns.net'
ddns.duiadns_v4.use_https='1'
ddns.duiadns_v4.use_ipv6='0'
ddns.duiadns_v4.use_syslog='2'
ddns.duiadns_v4.username='XXX@XXX.XX'
ddns.duiadns_v4=service
 114136       : verbose mode  : 0 - run normal, NO console output
 114136       : check interval: 300 seconds
 114136       : force interval: 1800 seconds
 114136       : retry interval: 60 seconds
 114136       : retry max count : 0 times
 114136       : No old process
 114136       : last update: 2025-05-09 11:37
 114136       : Detect registered/public IP
 114136       : #> /usr/bin/nslookup home.mbrehmer.duia.eu ns1.duiadns.net >/var/run/ddns/duiadns_v4.dat 2>/var/run/ddns/duiadns_v4.err
 114136       : Registered IP '8.8.8.8' detected
 114136  info : Starting main loop at 2025-05-09 11:41
 114136       : Detect current IP on 'web'
 114136       : #> /usr/bin/wget --hsts-file=/tmp/.wget-hsts -nv -t 1 -O /var/run/ddns/duiadns_v4.dat -o /var/run/ddns/duiadns_v4.err --no-proxy 'http://ipv4.duiadns.net'
 114136       : Current IP 'XXX.XXX.XXX.XXX' detected on web at 'http://ipv4.duiadns.net'
 114136       : Update needed - L: 'XXX.XXX.XXX.XXX' <> R: '8.8.8.8'
 114136       : #> /usr/bin/wget --hsts-file=/tmp/.wget-hsts -nv -t 1 -O /var/run/ddns/duiadns_v4.dat -o /var/run/ddns/duiadns_v4.err --no-proxy 'https://ip.duiadns.net/dynamic.duia?host=home.mbrehmer.duia.eu&password=***PW***&ip4=XXX.XXX.XXX.XXX'
 114136       : DDNS Provider answered:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>DUIA Module</title></head><body><ul><li>Hostname XXX.XXX.XX</li><ul><li>Ipv4 80.131.184.64</li></ul></ul></body></html>
 114137  info : Update successful - IP 'XXX.XXX.XXX.XXX' send
 114137  info : Forced update successful - IP: 'XXX.XXX.XXX.XXX' send
 114137       : Waiting 300 seconds (Check Interval)

So again everything looks fine in the log. But the record at the provider is still not updated.

I just saw something strange:

I set the path to the CA vertificate multiple times and saved the new setting. But every time I open the configuration, it is set back to the default value. :face_with_raised_eyebrow:


Is there an error withing the LuCI module for DDNS?

That is not the case:

My local nslookup shows that your IP is not 8.8.8.8 anymore - it is the same 80.131.x.x shown in your log.

Probably yes, so make sure the configuration is correct in /etc/config/ddns

On my site it still says 8.8.8.8 :face_with_raised_eyebrow:

Now things become really strange.

That seems to be the origin of the problem. There is no path to the CA certificates in the config file.

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

config service 'duiadns_v4'
        option service_name 'duiadns.net'
        option use_ipv6 '0'
        option enabled '1'
        option lookup_host 'XXX.XXX.XX'
        option domain 'XXX.XXX.XX'
        option username 'XXXXXXXX'
        option password 'XXXXXXXX'
        option ip_source 'web'
        option ip_url 'http://ipv4.duiadns.net'
        option interface 'wan'
        option dns_server 'ns1.duiadns.net'
        option use_syslog '2'
        option check_interval '5'
        option check_unit 'minutes'
        option force_interval '5'
        option force_unit 'minutes'
        option use_https '1'

So what do I have to add here, to give it the correct path?

See above:

i.e. option cacert ...

1 Like

Thanks.

I did that and also rebooted my OpenWRT One another time. Now things work correctly. :+1:
So I would say this is an issue with the module for LuCI. :unamused_face: Well, I have always been addicted to CLIs, but gave LuCI a try.

Thank you very much for the great support. :+1: :slightly_smiling_face:

Something is wrong with this parameter in the current version, I'm not very good with JS to fix this myself.

1 Like