• Stars
    star
    2,171
  • Rank 21,169 (Top 0.5 %)
  • Language
    Perl
  • License
    GNU General Publi...
  • Created about 12 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ddclient updates dynamic DNS entries for accounts on a wide range of dynamic DNS services.

Unmaintained

ddclient is unmaintained and no further changes will be done nor will issues or pull requests of any kind be accepted.

As alternatives consider https://github.com/troglobit/inadyn or https://github.com/lopsided98/dnsupdate. There will be no support for migrating of ddclient and your current provider might not be supported by those alternatives.

See #528 and #380 for more details.


DDCLIENT

ddclient is a Perl client used to update dynamic DNS entries for accounts on many dynamic DNS services.

Supported services

Dynamic DNS services currently supported include:

DynDNS.com  - See http://www.dyndns.com for details on obtaining a free account.
Zoneedit    - See http://www.zoneedit.com for details.
EasyDNS     - See http://www.easydns.com for details.
NameCheap   - See http://www.namecheap.com for details
DslReports  - See http://www.dslreports.com for details
Sitelutions - See http://www.sitelutions.com for details
Loopia      - See http://www.loopia.se for details
Noip        - See http://www.noip.com/ for details
Freedns     - See http://freedns.afraid.org/ for details
ChangeIP    - See http://www.changeip.com/ for details
nsupdate    - See nsupdate(1) and ddns-confgen(8) for details
CloudFlare  - See https://www.cloudflare.com/ for details
GoDaddy     - See https://www.godaddy.com/ for details
Google      - See http://www.google.com/domains for details
Duckdns     - See https://duckdns.org/ for details
Freemyip    - See https://freemyip.com for details
woima.fi    - See https://woima.fi/ for details
Yandex      - See https://domain.yandex.com/ for details
DNS Made Easy - See https://dnsmadeeasy.com/ for details
DonDominio  - See https://www.dondominio.com for details
NearlyFreeSpeech.net - See https://www.nearlyfreespeech.net/services/dns for details
OVH         - See https://www.ovh.com for details
Porkbun     - See https://porkbun.com/
ClouDNS     - See https://www.cloudns.net
dinahosting - See https://dinahosting.com
Gandi       - See https://gandi.net
dnsexit     - See https://dnsexit.com/ for details
1984.is     - See https://www.1984.is/product/freedns/ for details
Njal.la     - See https://njal.la/docs/ddns/
regfish.de  - See https://www.regfish.de/domains/dyndns/ for details
domenehsop  - See https://api.domeneshop.no/docs/#tag/ddns/paths/~1dyndns~1update/get
Mythic Beasts - See https://www.mythic-beasts.com/support/api/dnsv2/dynamic-dns for details
Enom        - See https://www.enom.com for details
Infomaniak  - See https://faq.infomaniak.com/2376 for details

ddclient now supports many cable and DSL broadband routers.

Comments, suggestions and requests: use the issues on https://github.com/ddclient/ddclient/issues/new

The code was originally written by Paul Burry and is now hosted and maintained through github.com. Please check out http://ddclient.net

REQUIREMENTS

  • An account from a supported dynamic DNS service provider
  • Perl v5.10.1 or later
    • IO::Socket::SSL perl library for ssl-support
    • JSON::PP perl library for JSON support
  • Linux, macOS, or any other Unix-ish system
  • An implementation of make (such as GNU Make)
  • If you are installing from a clone of the Git repository, you will also need GNU Autoconf and GNU Automake.

DOWNLOAD

See https://github.com/ddclient/ddclient/releases

INSTALLATION

Distribution Package

Packaging status The easiest way to install ddclient is to install a package offered by your operating system. See the image to the right for a list of distributions with a ddclient package.

Manual Installation

  1. Extract the distribution tarball (.tar.gz file) and cd into the directory:

    tar xvfa ddclient-3.XX.X.tar.gz
    cd ddclient-3.XX.X

    (If you are installing from a clone of the Git repository, you must run ./autogen before continuing to the next step.)

  2. Run the following commands to build and install:

    ./configure \
        --prefix=/usr \
        --sysconfdir=/etc/ddclient \
        --localstatedir=/var
    make
    make VERBOSE=1 check
    sudo make install
  3. Edit /etc/ddclient/ddclient.conf.

systemd

cp sample-etc_systemd.service /etc/systemd/system/ddclient.service

enable automatic startup when booting

systemctl enable ddclient.service

start the first time by hand

systemctl start ddclient.service

TROUBLESHOOTING

  1. enable debugging and verbose messages: $ ddclient -daemon=0 -debug -verbose -noquiet

  2. Do you need to specify a proxy? If so, just add a proxy=your.isp.proxy to the ddclient.conf file.

  3. Define the IP address of your router with fw=xxx.xxx.xxx.xxx in /etc/ddclient/ddclient.conf and then try $ ddclient -daemon=0 -query to see if the router status web page can be understood.

  4. Need support for another router/firewall? Define the router status page yourself with: fw=url-to-your-router's-status-page fw-skip=any-string-preceding-your-IP-address

    ddclient does something like this to provide builtin support for common routers. For example, the Linksys routers could have been added with:

fw=192.168.1.1/Status.htm
fw-skip=WAN.*?IP Address

OR Send me the output from: $ ddclient -geturl {fw-ip-status-url} [-login login [-password password]] and I'll add it to the next release!

ie. for my fw/router I used: $ ddclient -geturl 192.168.1.254/status.htm

  1. Some broadband routers require the use of a password when ddclient accesses its status page to determine the router's WAN IP address. If this is the case for your router, add
fw-login=your-router-login
fw-password=your-router-password

to the beginning of your ddclient.conf file. Note that some routers use either 'root' or 'admin' as their login while some others accept anything.

USING DDCLIENT WITH ppp

If you are using a ppp connection, you can easily update your DynDNS entry with each connection, with:

## configure pppd to update DynDNS with each connection
cp sample-etc_ppp_ip-up.local /etc/ppp/ip-up.local

Alternatively, you may just configure ddclient to operate as a daemon and monitor your ppp interface.

USING DDCLIENT WITH cron

If you have not configured ddclient to use daemon-mode, you'll need to configure cron to force an update once a month so that the dns entry will not become stale.

## configure cron to force an update twice a month
cp sample-etc_cron.d_ddclient /etc/cron.d/ddclient
vi /etc/cron.d/ddclient

USING DDCLIENT WITH dhcpcd

If you are using dhcpcd-1.3.17 or thereabouts, you can easily update your DynDNS entry automatically every time your lease is obtained or renewed by creating an executable file named: /etc/dhcpc/dhcpcd-{your-interface}.exe ie.: cp sample-etc_dhcpc_dhcpcd-eth0.exe /etc/dhcpc/dhcpcd-{your-interface}.exe

In my case, it is named dhcpcd-eth0.exe and contains the lines:

#!/bin/sh
PATH=/usr/bin:/root/bin:${PATH}
logger -t dhcpcd IP address changed to $1
ddclient -proxy fasthttp.sympatico.ca -wildcard -ip $1 | logger -t ddclient
exit 0

Other DHCP clients may have another method of calling out to programs for updating DNS entries.

Alternatively, you may just configure ddclient to operate as a daemon and monitor your ethernet interface.

USING DDCLIENT WITH dhclient

If you are using the ISC DHCP client (dhclient), you can update your DynDNS entry automatically every time your lease is obtained or renewed by creating an executable file named: /etc/dhclient-exit-hooks ie.: cp sample-etc_dhclient-exit-hooks /etc/dhclient-exit-hooks

Edit /etc/dhclient-exit-hooks to change any options required.

Alternatively, you may just configure ddclient to operate as a daemon and monitor your ethernet interface.