Cfddns

From Coolscript
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Why CFDDNS

Cloudflare DynDNS (CFDDNS) is a tiny script which allows you to update your DNS record on Cloudflare.
This can be compared with http://no-ip.org or http://dyndns.com with the diffrence that you renew the ip address of your own (sub) domain.
CFDDNS updates IP 4 or 6 automatically depending on the query host (what is my ip?)

Scrpts are available for Perl (Ver 5) , Powershell (Ver 5/7) or Python (Ver 3).

Testet on Windows 10/2016 (cfddns.ps1, cfddns.pl, cfddns.py) and Debian 10/11 (cfddns.pl, cfddns.py).

Requirements

  • Cloudflare account with an associate domain on it (The free account can do it)
  • Cloudflare API Key
  • Cloudflare registered email account
  • Owner of a registered Domain not necessarily on Cloudflare but served with Cloudflare
  • Windows Server 2016 or higher or Windows 10 or Debian/Ubuntu



Installation (Perl only)

  • Get the script and configuration (Link below) and copy / unzip to a directory of your choice

Windows

> cpan -i Net::IP

Linux

  • Debian/Ubuntu - Perl is already installed
  • Get additional modules - run:
# apt-get install libwww-perl libjson-perl libxml-simple-perl  libnet-ip-perl

Configuration

<?xml version="1.0"?>
<CONFIG>
 <Settings 
   APIKey="Your API Key goes here - NOTE: Do not create a new key, instead use the Global API Key" 
   ZoneID="Your Zone ID goes here" 
   FQDN="my.domain.com" 
   AuthMail="mail@domain.com"
   IPInfo="https://ifconfig.io/ip"
   TTL="300"
   PROXIED="false"
 />
</CONFIG>

Startup

There are two ways to start

Startup with the default configuration

cfddns.xml is omited within the application directory

Windows

c:\myPath > perl cfddns.pl
c:\myPath > powershell -file cfddns.ps1

Linux

~ # ./cfddns.pl
~ # perl cfddns.pl
~ # ./cfddns.py
~ # python3 cfddns.py

Notes with InfoURL

An InfoURL is needed to get your actual IP which is then compared with the Cloudflare setup.
Th default is https://ifconfig.io/ip
Alternative services to get IP 4 addresses are


InfoURL together with IP 6 might be tricky because the FQDN might need to enforce this, a possible solution for IP6/4 can be:



Params

  • -c Optional path to configuration
  • -v Be verbose
  • -h Display help

Startup with customized configuration

Perl only
Configuration file is specified with -c

~ # ./cfddns.pl -c /path/to/config.xml

Crontab samples

  • Run all 5 minutes
*/5 * * * * (cd /patth/to/script/; ./cfddns.pl)

OR

*/5 * * * * /path/to/scrip/cfddns.pl -c /path/to/config/config.xml
  • Run at reboot
@reboot /usr/local/bin/cfddns.pl -c /usr/local/bin/cfddns.xml -v | logger

Download

Download CFDDNS
Download