[Solved] Dnydns for IPv4 and IPv6?

With my new ISP I get dual stack. Fine so far. But I have problems with my dyndns provider (desec.io or dedyn.io). I can't get it to work that I can update IPv4 and IPv6 for the dyndns update.
According to their documentation (https://readthedocs.org/projects/desec/downloads/pdf/latest/)

There is a chance that your router already properly supports pushing its IPv6 address to us.  If it
does not, you cantry to let our servers determine your IPv6 address by using IPv6 to connect.  To
see if this method works for you,modify the “Update Server” or “Update URL” setting in your
router’s configuration toupdate6.dedyn.ioandhttps://update6.dedyn.io/, respectively.

Note that when using this update server, your IPv4 address will be deleted from the DNS, and your domain will operatein IPv6-only mode. (For an explanation why that is the case, seeDetermine IP addresses.) It isnotpossible to set upIPv4 and IPv6 by using both update servers in an alternating fashion.

To update both your IPv4 and IPv6 address at the same time,  most routers need to be 
configured with an updateURL that provides both IP addresses.  For Fritz!Box devices,  for 
example,  the URL reads:https://update.dedyn.io/?myipv4=<ipaddr>&myipv6=<ip6addr>(Note that 
the placeholders in this URL must remainunchanged; your router will substitute them 
automatically.  To find out the placeholder names for your router, pleaserefer to the manual of 
your device.)

I haven't found a dyndns script for OpenWrt to do something like this and the desec.io script operates on IPv6 or IPv4 but not both.

Is there a was to get to URL https://update.dedyn.io/?myipv4=&myipv6= to work with OpenWrt?

I guess you will need to configure two custom providers (v4 & v6) and put the corresponding scripts there.
Note that if you don't get public IPv4 address from your ISP then there is no reason to configure and update DynDNS for IPv4.

That is what I did and it does not work.
Seems as if I need to set both in a single update call. No way to do this?

Have you seen this ?

if you run a router with the OpenWRT operation system, watch out for the “desec.io” provider.


I would try to explicitly set IPv6 in the update and let the server detect IPv4 automagically.

For IPv4, we will use the first IPv4 address it can find in the query string parameters myip , myipv4 , ip (in this order). If none of them is set, it will use the IP that connected to the API, if a IPv4 connection was made.

In this case you will need to make a connection over IPv4.

It drives me nuts .. And I'm sure there is some problem with OpenWrt DDNS client. The following happens:

  • If I use two DDNS client entries, one with IPv6, one with IPv4, the DNS-Server 'forgets' the other IP upon updating one of them. Its probably the IPv6 surviving, I think, the IPv4 update is just a moment before the IPv6 update.

  • If I only use the IPv4 DDNS client in OpenWrt (removed all other, double checked after reboot), the IPv4 is correctly set. And as expected there is a IPv6 as the update call uses IPv6, but ... It is the public IP of a local LAN interface of the OpenWrt. Not accessible from outside. That is weired.

  • I also tried to use the IPv6 update only ... but that doesn't update the IPv4 as the call is done using IPv6. No look in forcing the update call to IPv4. And besindes that, it wouldn't really reflect changed ips and only check the IPv6 for changes.

Any idea on this?

Using another DynDNS provider is not an option?

I talked to my ISP and they will change the IPv6 prefix to a static one. That way I can update the IPv4 as described and add a fixed parameter for IPv6. That shall work around the problems.

The sample OpenWrt DDNS scripts are done separately. One script for IPv4; and one for IPv6. I'm unsure how one script could do both; but I do see your provider's documentation...intersting.

It should work after some tweaking - we just need to add -4 to curl or wget and run v6 update. Same idea I described earlier. This way I was able to able to update both addresses at once (from Linux host):

curl -4  "https://update.dedyn.io/update?username={myhostname}&myipv6={my ipv6}&password={password aka token}"

Is this in the DDNS scripts, or are you

  • I was responding to the OP
  • I'm not quite sure what you mean here, those arguments already work
  • How do you update IPv6 if you're running the -4 argument? I guess you're just sending an arbitrary IPv6 address, instead of having the DDNS obtain it, cool - yes that will work as most providers let you set the A/AAAA record to an arbitrary value; but some providers don't.

That was more a general comment on the issue discussed. The update script could be easily tweaked to perform two updates (v4 and v6) at once. The idea is to configure IPv6 [only] updates in the GUI as usual, but force the updater to run over IPv4 connection. That way IPv6 address will be sent to a server as a payload, while IPv4 address will be autodetected by the server as a source of the update.

If none of them is set, it will use the IP that connected to the API, if a IPv4 connection was made.

While it is possible to send arbitrary IPv6 address, DDNS client can still obtain it in a regular way, the only change proposed is related to the way the updates are sent.
Of course, that is just a workaround for that particular provider.

1 Like

I get it solved for me by using the generic script, updating IPv4 only with URL parameter. The IPv6 of my router is fixed for me as it is a slaac address and shall not change. So I add this as a parameter to the url (hard coded). This way it doesn't matter if the request is IPv6 or IPv6 as both addresses are passed in the URL.

A general solution would be to allow exactly this: Not only one option for checking IP address for the update by url (external call) but two: one for IPv6, one for IPv4. Means: not only replacig [IP] in the URL but also [IPv4] and [IPv6] ...

If your problem is solved, please consider marking this topic as [Solved]. See How to mark a topic as [Solved] for a short how-to.

1 Like

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