Ddclient 3.10 - Working as expected, but returns error "...no 'A' record found on Cloudflare"

Attempting to use ddclient to keep my dynamic IP address up to date in my DNS records, but it’s reporting that it can’t update the IP address because there are no A records, yet the A records are set.

I’m using ddclient version 3.10 on Ubuntu. The API token is working as expected, it’s just not able to update the DNS records for domain dukelabs.net.

I’ve scoured the web for solutions and spent hours tweaking the ddclient config to get it dialed in to this point, but have had no luck so far in getting my domain records updated. Cloudflare docs just tell me it means I don’t have A records set, but they very clearly are set, so I’m not sure where to go from here.

Does ddclient have full verbose logging? That should show you how it’s looking up records.

Yes, it does, and I have been running it in verbose, but perhaps I’m not reading the output correctly. I’ll sanitize the output and add it to this thread a bit later.

2 Likes

Sorry for the delayed response. Got sidetracked with a VCenter 8 upgrade. Anyway, here’s the DDClient verbose output with private info redacted:


CONNECT:  ipinfo.io
CONNECTED:  using SSL
SENDING:  GET /ip HTTP/1.1
SENDING:  Host: ipinfo.io
SENDING:  User-Agent: ddclient/3.10.0
SENDING:  Connection: close
SENDING:  
RECEIVE:  HTTP/1.1 200 OK
RECEIVE:  access-control-allow-origin: *
RECEIVE:  content-type: text/html; charset=utf-8
RECEIVE:  content-length: 11
RECEIVE:  date: Mon, 21 Nov 2022 08:24:20 GMT
RECEIVE:  x-envoy-upstream-service-time: 1
RECEIVE:  strict-transport-security: max-age=2592000; includeSubDomains
RECEIVE:  Via: 1.1 google
RECEIVE:  Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
RECEIVE:  Connection: close
RECEIVE:  
RECEIVE:  XX.XX.XX.XX
INFO:     forcing updating \ because no cached entry exists.
WARNING:  null password specified for host `dukelabs.net`.
WARNING:  null password specified for host `SUB1.dukelabs.net`.
WARNING:  null password specified for host `SUB2.dukelabs.net`.
WARNING:  null password specified for host `SUB3.dukelabs.net`.
WARNING:  null password specified for host `www.dukelabs.net`.
INFO:     getting Cloudflare Zone ID for \
CONNECT:  `api.cloudflare.com`
CONNECTED:  using SSL
SENDING:  GET /client/v4/zones/?name=`dukelabs.net` HTTP/1.1
SENDING:  Host: `api.cloudflare.com`
SENDING:  User-Agent: ddclient/3.10.0
SENDING:  Connection: close
SENDING:  Content-Type: application/json
SENDING:  Authorization: Bearer [TOKEN REDACTED]
SENDING:  
RECEIVE:  HTTP/1.1 200 OK
RECEIVE:  Date: Mon, 21 Nov 2022 08:24:20 GMT
RECEIVE:  Content-Type: application/json
RECEIVE:  Transfer-Encoding: chunked
RECEIVE:  Connection: close
RECEIVE:  CF-Ray: [REDACTED]
RECEIVE:  Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
RECEIVE:  Expires: Sun, 25 Jan 1981 05:00:00 GMT
RECEIVE:  Set-Cookie: [COOKIE REDACTED]; SameSite=Lax; path=/; expires=Mon, 21-Nov-22 10:54:21 GMT; HttpOnly
RECEIVE:  Strict-Transport-Security: max-age=31536000
RECEIVE:  CF-Cache-Status: DYNAMIC
RECEIVE:  Pragma: no-cache
RECEIVE:  X-Content-Type-Options: nosniff
RECEIVE:  X-Frame-Options: SAMEORIGIN
RECEIVE:  Set-Cookie: [COOKIE REDACTED]; path=/; domain=.`api.cloudflare.com`; HttpOnly; Secure; SameSite=None
RECEIVE:  Server: cloudflare
RECEIVE:  
RECEIVE:  838
RECEIVE:  {"result":[{"id":"[ZONE ID]","name":"dukelabs.net","status":"active","paused":false,"type":"full","development_mode":0,"name_servers":["ethan.ns.cloudflare.com","zita.ns.cloudflare.com"],"original_name_servers":null,"original_registrar":null,"original_dnshost":null,"modified_on":"2022-11-14T01:34:46.545650Z","created_on":"2022-11-13T06:32:06.064359Z","activated_on":"2022-11-14T01:34:46.545650Z","meta":{"step":2,"custom_certificate_quota":0,"page_rule_quota":3,"phishing_detected":false,"multiple_railguns_allowed":false},"owner":{"id":"[ID REDACTED]","type":"user","email":"[EMAIL ADDRESS]"},"account":{"id":"[ID REDACTED]","name":"EMAIL ADDRESS"},"tenant":{"id":null,"name":null},"tenant_unit":{"id":null},"permissions":["#access:edit","#access:read","#analytics:read","#app:edit","#auditlogs:read","#billing:edit","#billing:read","#blocks:edit","#blocks:read","#cache_purge:edit","#dash_sso:edit","#dash_sso:read","#dns_records:edit","#dns_records:read","#fbm_acc:edit","#fbm:edit","#fbm:read","#healthchecks:edit","#healthchecks:read","#http_applications:edit","#http_applications:read","#image:edit","#image:read","#lb:edit","#lb:read","#legal:edit","#legal:read","#logs:edit","#logs:read","#magic:edit","#magic:read","#member:edit","#member:read","#organization:edit","#organization:read","#ssl:edit","#ssl:read","#stream:edit","#stream:read","#subscription:edit","#subscription:read","#teams:edit","#teams:pii","#teams:read","#teams:report","#waf:edit","#waf:read","#waitingroom:edit","#waitingroom:read","#webhooks:edit","#webhooks:read","#worker:edit","#worker:read","#zaraz:edit","#zaraz:read","#zone:edit","#zone:read","#zone_settings:edit","#zone_settings:read"],"plan":{"id":"[ID REDACTED]","name":"Free Website","price":0,"currency":"USD","frequency":"","is_subscribed":false,"can_subscribe":false,"legacy_id":"free","legacy_discount":false,"externally_managed":false}}],"result_info":{"page":1,"per_page":20,"total_pages":1,"count":1,"total_count":1},"success":true,"errors":[],"messages":[]}
RECEIVE:  0
RECEIVE:  
INFO:     Zone ID is [ZONE ID HERE]
INFO:     updating \: setting IPv4 address to XX.XX.XX.XX
CONNECT:  `api.cloudflare.com`
CONNECTED:  using SSL
SENDING:  GET /client/v4/zones/[ZONE ID]/dns_records?type=A&name=\ HTTP/1.1
SENDING:  Host: `api.cloudflare.com`
SENDING:  User-Agent: ddclient/3.10.0
SENDING:  Connection: close
SENDING:  Content-Type: application/json
SENDING:  Authorization: Bearer [API TOKEN]
SENDING:  
RECEIVE:  HTTP/1.1 200 OK
RECEIVE:  Date: Mon, 21 Nov 2022 08:24:21 GMT
RECEIVE:  Content-Type: application/json
RECEIVE:  Transfer-Encoding: chunked
RECEIVE:  Connection: close
RECEIVE:  CF-Ray: [REDACTED]
RECEIVE:  Set-Cookie: [COOKIE REDACTED]; SameSite=Lax; path=/; expires=Mon, 21-Nov-22 10:54:22 GMT; HttpOnly
RECEIVE:  Vary: Accept-Encoding
RECEIVE:  CF-Cache-Status: DYNAMIC
RECEIVE:  x-envoy-upstream-service-time: 21
RECEIVE:  Set-Cookie: [COOKIE REDACTED]; path=/; domain=.`api.cloudflare.com`; HttpOnly; Secure; SameSite=None
RECEIVE:  Server: cloudflare
RECEIVE:  
RECEIVE:  88
RECEIVE:  {"result":[],"success":true,"errors":[],"messages":[],"result_info":{"page":1,"per_page":100,"count":0,"total_count":0,"total_pages":1}}
RECEIVE:  0
RECEIVE:  
FAILED:   updating \: Cannot set IPv4 to XX.XX.XX.XX No 'A' record at Cloudflare

It looks like no hostname is specified.

I think that’s the GET request to pull A records from the zone. There’s no matching variable in the configuration beyond the hostname that’s already specified.