I tried to set up ddclient on my raspberry pi but get the following out but after force ddclient:
WARNING: file /var/cache/ddclient/ddclient.cache, line 3: Invalid Value for keyword 'ip' = ''
WARNING: cannot connect to update6.dedyn.io:80 socket: IO::Socket::INET: Bad hostname 'update6.dedyn.io'
FAILED: updating xxxxx.dedyn.io: Could not connect to update6.dedyn.io.
in line two of the log that you posted, it says Bad hostname 'update6.dedyn.io'. Does hostname resolution work properly on that machine? You could try, e.g., host update6.dedyn.io to see if this machine can obtain the IP address of our servers.
From my point of view there are two separate issues relating to IPv6:
Contacting the update server (update6.dedyn.io) using IPv6.
Determine the IPv6 IP to send to the update server.
I can’t tell for sure which of these is failing? Although the second error Bad hostname 'update6.dedyn.io' seems to indicate that ddclient is probably trying to contact the server using IPv4? But of course it can’t resolve the hostname to an IPv4 address because there is none.
Maybe you can make sense of the ipv6-design-doc.md mentioned above?
pi@PiVPN-Hole:~ $ sudo ddclient -force
WARNING: file /var/cache/ddclient/ddclient.cache, line 3: Invalid Value for keyword 'ip' = ''
SUCCESS: updating xxxx.dedyn.io: good: IP address set to xx00:xxxx:43aa:0:xxxxx:ad1b:xxxx:xxb1
I would not rely on the SUCCESS status alone. That is only your software claiming everything worked (which is a good first indication). I’d check whether the DNS record can actually be resolved correctly. Like I wrote: dig +short xxxx.dedyn.io AAAA
… and compare the result to your actual IPv6 address.
If that all looks good, then I’d accept this solution as fully functional.
Remember it will take a couple of seconds before your change will be visible at our nameservers and it will take up to a minute before the change will be visible at your local resolver. To avoid these problems, I suggest using
Well of course. You used the local interface on your RPi to get your IP so that is what the DNS server is updated to:
If you need the public IPv6 of the router/gateway then you need to query that device. I don’t think there is any other way to get that IPv6 address.
The following is based on the assumption that your RPi is on a local network behind a router/gateway which is allocated dynamic IPs from your provider (which is probably why you want to use DDNS in the first place):
Note that IPv4 and IPv6 behave very differently w.r.t. dynamically allocated public IPs on routers/gateways.
Your local IPv4 address is usually behind a NAT so that the public IPv4 address of the router/gateway will be visible to external services (such as https://checkipv4.dedyn.io).
With IPv6 those services generally see the IP of your device, not that of your router/gateway (see https://checkipv6.dedyn.io). Most/many providers dynamically allocate a /64 IPv6 address to your router/gateway in addition to a network, often a /56 range, of publicly routed IPv6 addresses. Your devices then use individual /64 addresses from this range on the local network. The public IPv6 address of your device is likely not from the same network range (but its local IPv6 address will be).
That said, what is the problem with the DDNS IPv6 address being that of your RPi?