How do you get ddclient to update a record?

I have just set up a free DNS plan and I am trying to get ddclient to update an IP address and it is not working. I am using the el7 packages and the latest is 3.8.3 From what I have read, I need to have a later version so I have installed the latest from GitHub - ddclient/ddclient: This is the new home for ddclient. Ddclient is a Perl client used to update dynamic DNS entries for accounts on 'Dynamic DNS Network Services' free DNS service. It currently supports a lot of different routers and a few different services. which appears to be a little after 3.9.1 (3.9.1 on Github is missing the configure file). I have tried with various configs with both an API token and EMail/API Key. This is my config using a token and updaating a subdomain (for testing):

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/ddclient.pid              # record PID in file.
ssl=yes                                 # use ssl-support.  Works with ssl-library
use=if if=ppp0
protocol=cloudflare,        \
zone=howitts.co.uk,            \
server=www.cloudflare.com,  \
password=my_api_token             \
cloudflare.howitts.co.uk

To test I run:

/usr/bin/ddclient -daemon=0 -debug -verbose -noquiet

And the response I am getting is:

WARNING:  file /var/cache/ddclient/ddclient.cache, line 4: Invalid Value for keyword 'ip' = ''
INFO:     setting IP address to 84.9.57.48 for cloudflare.howitts.co.uk
UPDATE:   updating cloudflare.howitts.co.uk
CONNECT:  www.cloudflare.com
CONNECTED:  using SSL
SENDING:  GET /zones?name=howitts.co.uk HTTP/1.0
SENDING:  Host: www.cloudflare.com
SENDING:  User-Agent: ddclient/3.9.1
SENDING:  Connection: close
SENDING:  Content-Type: application/json
SENDING:  Authorization: Bearer my_api_token
SENDING:  
RECEIVE:  HTTP/1.1 301 Moved Permanently
RECEIVE:  Date: Thu, 07 Jan 2021 17:14:44 GMT
RECEIVE:  Content-Type: text/html
RECEIVE:  Connection: close
RECEIVE:  Set-Cookie: __cfduid=de19899c866bac948b14097903555a8fa1610039684; expires=Sat, 06-Feb-21 17:14:44 GMT; path=/; domain=.www.cloudflare.com; HttpOnly; SameSite=Lax; Secure
RECEIVE:  Location: https://www.cloudflare.com/zones/?name=howitts.co.uk
RECEIVE:  CF-Ray: 60df511a7e990c49-MAN
RECEIVE:  Strict-Transport-Security: max-age=31536000
RECEIVE:  Vary: Accept-Encoding
RECEIVE:  CF-Cache-Status: MISS
RECEIVE:  cf-request-id: 077f71048800000c493835b000000001
RECEIVE:  Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
RECEIVE:  X-Content-Type-Options: nosniff
RECEIVE:  X-Frame-Options: SAMEORIGIN
RECEIVE:  X-XSS-Protection: 1; mode=block
RECEIVE:  Set-Cookie: __cflb=02DiuJFZNR1vT983reJ7ooDAdV9yu7NGoRfNUj8tUkKsa; SameSite=Lax; path=/; expires=Fri, 08-Jan-21 16:14:44 GMT; HttpOnly
RECEIVE:  Set-Cookie: __cf_bm=e752f78713602a78d0b35f94679da5cabdd65f06-1610039684-1800-ASnPwqlYTKvtjoXgCariTxhwXrdKbj7Aqk9dPTRqTXJfH6qx9NLy+EVOf5Ak1NgT9sMvEvS66YePSSmQ6YV0LvY=; path=/; expires=Thu, 07-Jan-21 17:44:44 GMT; domain=.www.cloudflare.com; HttpOnly; Secure; SameSite=None
RECEIVE:  Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?s=xkEoHMvv9KjSo3ZgvGHGKxUhzQtLjtGqcYCCdgrDRXiNOaIaa8FfmTpiCLZiRDrQDZKqdhe9GuQcqgu8xXeFclOz8P4LJzKuOAZVfCG06M4JdHg%3D"}],"group":"cf-nel","max_age":604800}
RECEIVE:  NEL: {"report_to":"cf-nel","max_age":604800}
RECEIVE:  Server: cloudflare
RECEIVE:  
RECEIVE:  <html>
RECEIVE:  <head><script>window.redwood={"consentGroups":{"C0001":false,"C0002":false,"C0003":false,"C0004":false},"country":"GB","colo":"MAN","locale":"en-US"}</script>
RECEIVE:      <script>
RECEIVE:       const acceptedLocales = [
RECEIVE:        'en-au',
RECEIVE:        'en-ca',
RECEIVE:        'en-gb',
RECEIVE:        'en-in',
RECEIVE:        'en-us',
RECEIVE:        'de-de',
RECEIVE:        'es-es',
RECEIVE:        'es-la',
RECEIVE:        'fr-fr',
RECEIVE:        'it-it',
RECEIVE:        'ja-jp',
RECEIVE:        'ko-kr',
RECEIVE:        'pt-br',
RECEIVE:        'zh-tw',
RECEIVE:        'zh-cn',
RECEIVE:      ];
RECEIVE:      const orphanLocales = [
RECEIVE:        'ru-ru', 
RECEIVE:        'sv-se', 
RECEIVE:        'nl-nl', 
RECEIVE:        'vi-vn', 
RECEIVE:        'th-th', 
RECEIVE:        'id-id', 
RECEIVE:      ];
RECEIVE:      const ignoreList = [
RECEIVE:        'apps',
RECEIVE:        'docs',
RECEIVE:      ]
RECEIVE:      function getPathFromLocale(locale, code, pathString) {
RECEIVE:        if ( locale === code || !acceptedLocales.includes(code) || acceptedLocales.includes(locale) || orphanLocales.includes(locale) ) {
RECEIVE:          return null;
RECEIVE:        } else {
RECEIVE:          return [code, locale ? locale : '', pathString].filter(part => part !== '').join('/');
RECEIVE:        }
RECEIVE:      };
RECEIVE:      if (localStorage.getItem('langPreference')) {
RECEIVE:        if (localStorage.getItem('langPreference').toLowerCase() != 'en-us') {
RECEIVE:            const langPreference = localStorage.getItem('langPreference').toLowerCase();
RECEIVE:            const splitPath = window.location.pathname.split('/').filter(part => part !== '');
RECEIVE:            const currentLang = splitPath[0];
RECEIVE:            if (!acceptedLocales.includes(currentLang) && !ignoreList.includes(splitPath[0])) {
RECEIVE:              splitPath.splice(0, 0, langPreference.toLowerCase());
RECEIVE:              const newUrl = 'https://' + window.location.hostname + '/' + splitPath.join('/') + '/' + window.location.search;
RECEIVE:              window.location.replace(newUrl);    
RECEIVE:            } 
RECEIVE:          }     
RECEIVE:      } else if (!window.navigator.userAgent.toLowerCase().includes('googlebot')) {
RECEIVE:          const requestedLang = window.navigator.language;
RECEIVE:          const splitPath = window.location.pathname.split('/').filter(part => part !== '');
RECEIVE:          const maybeLocale = splitPath.shift();
RECEIVE:          const splitPathString = splitPath.join('/');
RECEIVE:        
RECEIVE:          if (requestedLang && requestedLang.toLowerCase() != "en-us") {
RECEIVE:            const requestedLangCode = requestedLang
RECEIVE:              .toLowerCase()
RECEIVE:              .replace('_', '-');
RECEIVE:            const redirectPath = getPathFromLocale(maybeLocale, requestedLangCode, splitPathString);
RECEIVE:            if (redirectPath && !ignoreList.includes(maybeLocale)) {
RECEIVE:              window.location.replace('https://cloudflare.com/' + redirectPath + '/' + window.location.search)
RECEIVE:            }
RECEIVE:          }
RECEIVE:        }
RECEIVE:      </script><title>301 Moved Permanently</title></head>
RECEIVE:  <body bgcolor="white">
RECEIVE:  <center><h1>301 Moved Permanently</h1></center>
RECEIVE:  <hr><center>nginx/1.10.3</center>
RECEIVE:  <script defer src="https://static.cloudflareinsights.com/beacon.min.js" data-cf-beacon='{"rayId":"60df511a7e990c49","version":"2020.12.2","si":10}'></script>
RECEIVE:  </body>
RECEIVE:  </html>

I think DDNS updating is only not supported for certain TLD’s and I have not seen .uk listed. I get a similar reply if I try updating the record for my TLD or if I try using EMail/APK_key.

in my DNS set up I have turned off all proxying. Can anyone help, please?

Got it. Remove the server line as it is incorrect. Whatever is the default is correct. I just specified it as it was in the example in my original conf file from 3.8.3 but it looks like it has been removed from the 3.9.1 file.

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