I've tried everything, from manual configuration in the LUCI interface to multiple config files and all I get is "No Data" or the previous IPv6 address assigned to me.
Here are the relevant contents of my /etc/config/ddns
The IPv4 configuration was made using the GUI and works, the IPv6 configurations were made based on the DuckDNS site install guide for openwrt and the openwrt wiki respectively, after the GUI config failed.
Could the problem be that I have to manually update the subdomain IPv6 on the web for the update to work even though I have "network" configured as the "ip_source"?
By now I assume that either something is fishy with my ISP, openwrt hates me or my hardware hates me.
I'm only including the final log, since there are a lot of them and mostly identical, barring the date and time. If more entries are required I'll edit the reply to include them. I've also tried using the 'wan' interface and the global settings to use curl instead of wget.
ddns.duckdnsv6.check_interval='50'
ddns.duckdnsv6.check_unit='minutes'
ddns.duckdnsv6.domain='REDACTED_USER.duckdns.org'
ddns.duckdnsv6.enabled='1'
ddns.duckdnsv6.force_interval='72'
ddns.duckdnsv6.force_unit='hours'
ddns.duckdnsv6.interface='wan6'
ddns.duckdnsv6.ip_network='wan6'
ddns.duckdnsv6.ip_source='network'
ddns.duckdnsv6.lookup_host='REDACTED_USER.duckdns.org'
ddns.duckdnsv6.password='***PW***'
ddns.duckdnsv6.service_name='duckdns.org'
ddns.duckdnsv6.use_https='1'
ddns.duckdnsv6.use_ipv6='1'
ddns.duckdnsv6.use_syslog='2'
ddns.duckdnsv6.username='REDACTED_USER'
ddns.duckdnsv6=service
164326 : verbose mode : 0 - run normal, NO console output
164326 : check interval: 3000 seconds
164327 : force interval: 259200 seconds
164327 : retry interval: 60 seconds
164327 : retry max count : 0 times
164327 : No old process
164327 : last update: never
164327 : Detect registered/public IP
164327 : #> /usr/bin/host -t AAAA REDACTED_USER.duckdns.org >/var/run/ddns/duckdnsv6.dat 2>/var/run/ddns/duckdnsv6.err
164337 : Registered IP 'REDACTED' detected
164337 info : Starting main loop at 2025-03-03 16:43
164338 : Detect current IP on 'network'
164338 ERROR : Can not detect current IP using network_get_ipaddr6 'wan6' - Error: '1' - TERMINATE
164338 WARN : PID '10322' exit WITH ERROR '1' at 2025-03-03 16:43
Also here's my network configuration, since that might also be responsible. I'm still uncertain what I should do with 'wan6'. For the moment I have it as an alias to the virtual dynamic interface 'wan_6', created by the 'wan' PPPoE interface.
/etc/config/network
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'REDACTED'
option packet_steering '1'
config device
option name 'br-lan'
option type 'bridge'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.50.1'
option netmask '255.255.255.0'
option ip6assign '60'
config interface 'wan'
option device 'wan'
option proto 'pppoe'
option username 'REDACTED'
option password 'REDACTED'
option ipv6 'auto'
option peerdns '0'
list dns '1.1.1.1'
list dns '1.0.0.1'
config interface 'wan6'
option device '@wan_6'
option proto 'dhcpv6'
option peerdns '0'
list dns '2606:4700:4700::1111'
list dns '2606:4700:4700::1001'
option reqaddress 'try'
option reqprefix 'auto'
option norelease '1'
That tells you that wan6 is not the right interface.
You can switch from "Network" to "Interface", ip -o addr show | grep inet6 will help you to find what name should be used there.
Part of why I think my less than ideal setup is interfering.
The 'wan_6' interface is automatically created after configuring the 'wan' interface and is a virtual dynamic interface, meaning I can't edit it at all. It also displays the IPv6 address of the router, as well as the IPv6-PD. Hence why I changed the 'wan6' (no underscore) interface to be an alias of 'wan_6', instead of the default DHCPv6 client.
I was uncertain I should, since it mentions 'no interfaces attached' in the GUI, but after setting it up it suddenly started showing me the my IPv6 before the last reboot of the router and the time of the next update (which not even the IPv4 interface does).
Unfortunately a reload led to an error (XHR request time out), so the IP still isn't correct... Here is the log.
ddns.duckdnsv6.check_interval='10'
ddns.duckdnsv6.check_unit='minutes'
ddns.duckdnsv6.domain='REDACTED_USER.duckdns.org'
ddns.duckdnsv6.enabled='1'
ddns.duckdnsv6.force_interval='72'
ddns.duckdnsv6.force_unit='hours'
ddns.duckdnsv6.interface='wan_6'
ddns.duckdnsv6.ip_network='wan_6'
ddns.duckdnsv6.ip_source='network'
ddns.duckdnsv6.lookup_host='REDACTED_USER.duckdns.org'
ddns.duckdnsv6.password='REDACTED'
ddns.duckdnsv6.update_url='http://www.duckdns.org/update?domains=[USERNAME]&token=[PASSWORD]&ip=[IP]'
ddns.duckdnsv6.use_https='1'
ddns.duckdnsv6.use_ipv6='1'
ddns.duckdnsv6.use_syslog='2'
ddns.duckdnsv6.username='REDACTED_USER'
ddns.duckdnsv6=service
180414 : verbose mode : 0 - run normal, NO console output
180414 : check interval: 600 seconds
180414 : force interval: 259200 seconds
180414 : retry interval: 60 seconds
180414 : retry max count : 0 times
180415 : No old process
180415 : last update: 2025-03-03 18:00
180415 : Detect registered/public IP
180415 : #> /usr/bin/host -t AAAA REDACTED_USER.duckdns.org >/var/run/ddns/duckdnsv6.dat 2>/var/run/ddns/duckdnsv6.err
180420 ERROR : BIND host error: '1'
180420 :
180420 : Detect registered/public IP
180420 : #> /usr/bin/host -t AAAA REDACTED_USER.duckdns.org >/var/run/ddns/duckdnsv6.dat 2>/var/run/ddns/duckdnsv6.err
180421 ERROR : BIND host error: '1'
180421 :
180421 WARN : Get registered/public IP for 'REDACTED_USER.duckdns.org' failed - retry 1/0 in 60 seconds
180521 : #> /usr/bin/host -t AAAA REDACTED_USER.duckdns.org >/var/run/ddns/duckdnsv6.dat 2>/var/run/ddns/duckdnsv6.err
180521 ERROR : BIND host error: '1'
180521 :
180521 WARN : Get registered/public IP for 'REDACTED_USER.duckdns.org' failed - retry 2/0 in 60 seconds
Install hostip or drill or another similar tool and the script will use it instead of host. With drill you can use TCP as a transport for DNS requests.
But also see my comment at the very end:
Today while testing I noticed the same timeouts again.
Thanks for the help. I'll probably look for an alternative to DuckDNS, but for now it seems to work. The last problem seems to have been with my certificate for https. I generated it again and now everything works. For all I know it could've been the initial problem as well.
I'm not sure how long it'll work for, since looking at the config file the 'option cacert' doesn't exist, but it might still be alright, since it's in the default location.