Update.dedyn.io suddenly fails, responds with "nohost"

I have a dynamic IP address which I update with ddclient. My configuration has worked well the last few months, but it suddenly broke last night, when ddclient could not update to my new IP address. Enabling debug messages for ddclient shows that update.dedyn.io responds with a 404 status and says “nohost”:

Nov 19 10:45:06 ddclient[10423]: INFO:     file /etc/ddclient/ddclient.conf: file /etc/ddclient/ddclient.conf is accessible to ddclient group.
Nov 19 10:45:06 ddclient[10424]: SENDING:  Curl system cmd to https://checkipv4.dedyn.io
Nov 19 10:45:06 ddclient[10425]: SENDING:  silent
Nov 19 10:45:06 ddclient[10426]: SENDING:  include
Nov 19 10:45:06 ddclient[10427]: SENDING:  ipv4
Nov 19 10:45:06 ddclient[10428]: SENDING:  user-agent="ddclient/3.11.2"
Nov 19 10:45:06 ddclient[10429]: SENDING:  connect-timeout=120
Nov 19 10:45:06 ddclient[10430]: SENDING:  max-time=120
Nov 19 10:45:06 ddclient[10431]: SENDING:  request=GET
Nov 19 10:45:06 ddclient[10432]: SENDING:  url="https://checkipv4.dedyn.io/"
Nov 19 10:45:06 ddclient[10436]: RECEIVE:  HTTP/2 200
Nov 19 10:45:06 ddclient[10436]: RECEIVE:  server: nginx
Nov 19 10:45:06 ddclient[10436]: RECEIVE:  date: Tue, 19 Nov 2024 09:45:06 GMT
Nov 19 10:45:06 ddclient[10436]: RECEIVE:  content-type: text/plain
Nov 19 10:45:06 ddclient[10436]: RECEIVE:  content-length: 12
Nov 19 10:45:06 ddclient[10436]: RECEIVE:  strict-transport-security: max-age=31536000
Nov 19 10:45:06 ddclient[10436]: RECEIVE:
Nov 19 10:45:06 ddclient[10436]: RECEIVE:  xxx.xxx.xxx.xxx
Nov 19 10:45:06 ddclient[10437]: INFO:     forcing update of myfirstdomain.tld.
Nov 19 10:45:06 ddclient[10438]: INFO:     forcing update of myseconddomain.tld.
Nov 19 10:45:06 ddclient[10439]: INFO:     setting IPv4 address to xxx.xxx.xxx.xxx for myfirstdomain.tld,myseconddomain.tld
Nov 19 10:45:06 ddclient[10440]: UPDATE:   updating myfirstdomain.tld,myseconddomain.tld
Nov 19 10:45:06 ddclient[10441]: SENDING:  Curl system cmd to https://update.dedyn.io
Nov 19 10:45:06 ddclient[10442]: SENDING:  silent
Nov 19 10:45:06 ddclient[10443]: SENDING:  include
Nov 19 10:45:06 ddclient[10444]: SENDING:  user-agent="ddclient/3.11.2"
Nov 19 10:45:06 ddclient[10445]: SENDING:  connect-timeout=120
Nov 19 10:45:06 ddclient[10446]: SENDING:  max-time=120
Nov 19 10:45:06 ddclient[10447]: SENDING:  request=GET
Nov 19 10:45:06 ddclient[10448]: SENDING:  user="myfirstdomain.tld:mypassword"
Nov 19 10:45:06 ddclient[10449]: SENDING:  url="https://update.dedyn.io/nic/update?system=dyndns&hostname=myfirstdomain.tld,myseconddomain.tld&myip=xxx.xxx.xxx.xxx"
Nov 19 10:45:06 ddclient[10453]: RECEIVE:  HTTP/2 404
Nov 19 10:45:06 ddclient[10453]: RECEIVE:  server: nginx
Nov 19 10:45:06 ddclient[10453]: RECEIVE:  date: Tue, 19 Nov 2024 09:45:06 GMT
Nov 19 10:45:06 ddclient[10453]: RECEIVE:  content-type: text/plain
Nov 19 10:45:06 ddclient[10453]: RECEIVE:  content-length: 6
Nov 19 10:45:06 ddclient[10453]: RECEIVE:  allow: GET, HEAD, OPTIONS
Nov 19 10:45:06 ddclient[10453]: RECEIVE:  vary: origin
Nov 19 10:45:06 ddclient[10453]: RECEIVE:  strict-transport-security: max-age=31536000
Nov 19 10:45:06 ddclient[10453]: RECEIVE:
Nov 19 10:45:06 ddclient[10453]: RECEIVE:  nohost

My ddclient configuration is this:

daemon=300                              # check every 300 seconds
syslog=yes                              # log update msgs to syslog
mail=root                               # mail all msgs to root
mail-failure=root               # mail failed update msgs to root
pid=/var/run/ddclient.pid               # record PID in file.

protocol=dyndns2
usev4=webv4
webv4=https://checkipv4.dedyn.io/
ssl=yes
server=update.dedyn.io
login=myfirstdomain.tld
password='mypassword'
myfirstdomain.tld,myseconddomain.tld

Is this a problem on my end? What could have happened to cause this?

Hi sha,

Thanks for your message, and welcome to deSEC! :slight_smile:

It seems like your domain does no longer exist. This can happen if you don’t change your DNS information for 180 days and then ignore two warning emails that we sent. (See §2 and §3 of our Terms.)

If this is the problem and the domain expired less then a week ago, we can help you restore it. In this case, please contact support.

Otherwise, registration of names under dedyn.io is currently disabled (see dynDNS service down? - #3 by peter for details). We are planning to re-enable at the end of this year or early next year.

Stay secure,
Peter

1 Like

Hello Peter,

Thank you for your response.

I think there might be some other problem or some misunderstanding. I am very sure that my domains exist, did not expire, and are registered at desec.io. I just updated my A record on desec.io again to bring my service back up.

I do not use or tried to register any names under dedyn.io and also don’t remember any emails from desec.io

Hi sha,

In this case, we’ll need your domain name to figure out what’s going on. If you don’t want to do that publicly, please contact support with your domain name.

Stay secure,
Peter

1 Like

I think the problem may have something to do with trying to update two domains at the same time. If this configuration has worked in the past, maybe there has been a change in the way the client handles multiple domains.

Thank you all for the help. In the end I couldn’t figure out how to properly configure ddclient with several domains, so I switched to inadyn which seems to work. My desec.io specific configuration now looks like this, maybe it is useful to somebody who has the same problem:

custom desec.io:1 {
	username	= myfirstdomain.tld
	password	= [a desec.io API token secret]
	checkip-server  = checkipv4.dedyn.io
	checkip-path    = /
	checkip-ssl     = true
	ddns-server     = update.dedyn.io
	ddns-path       = "/?myip=%i&myipv6=preserve"
	ssl             = true
	hostname	= myfirstdomain.tld
}

custom desec.io:2 {
	username	= myseconddomain.tld
	password	= [a desec.io API token secret]
	checkip-server  = checkipv4.dedyn.io
	checkip-path    = /
	checkip-ssl     = true
	ddns-server     = update.dedyn.io
	ddns-path       = "/?myip=%i&myipv6=preserve"
	ssl             = true
	hostname	= myseconddomain.tld
}
1 Like