Dynamic DNS

Dynamic DNS or DDNS is a method of updating, in real time, a DNS to point to a changing IP address on the Internet. This is used to provide a persistent domain name for a resource that may change location on the network.

Router

Many routers have built in DDNS Services but can be limited in the services which they update. If the Router supports a the service, or you are willing to pay or donate for a service, you should do this, it is faster and more reliable. In that case, there is no need to use a softwareside solution.

Software Dynamic DNS

Afraid

FreeDNS.afraid.org is a free Service which is easy and uncomplicated to set up.

There are several options to enable automatic DDNS updating for this provider:

afraid-dyndns

The package afraid-dyndns-uvAUR is available in the AUR.

petrified

The package petrifiedAUR is available in the AUR.

ddclient

The package ddclient is available in the community repository. It includes systemd support.

An example config file looks like this:

daemon=600
cache=/tmp/ddclient.cache
syslog=yes
pid=/var/run/ddclient.pid
use=web, web=checkip.dyndns.com/, web-skip='IP Address'

ssl=yes

## Configuration variables applicable to the 'freedns' protocol are:
#  protocol=freedns             ##
#  server=fqdn.of.service       ## defaults to freedns.afraid.org
#  login=service-login          ## login name and password registered with the service
#  password=service-password    ##
#  fully.qualified.host         ## the host registered with the service.
#
protocol=freedns
login=my-freedns.afraid.org-login
password=my-freedns.afraid.org-password
myhost1.afraid.org
myhost2.afraid.org

To enable the systemd service:

systemctl enable ddclient

Cron

Another option is to:

  • Goto your Dynamic DNS page at freedns.afraid.org
  • Add A record and select your prefered domain name
  • Press quick cron example behind the desired A record
  • Test one of the examples:
curl http://freedns.afraid.org/dynamic/update.php?Ukd...
  • Use crontab -e to insert the new cronjob:
*/6 * * * * sleep 20 ; curl http://freedns.afraid.org/dynamic/update.php?Ukd...Dk2 > /tmp/freedns_my_ddns_record.com.log 2>&1 &

Netctl

To add the record of your IP to freedns.afraid.org along with a network connection through the use with Netctl. You can append the following line to your netctl profile.

ExecUpPost='curl -ks http://freedns.afraid.org/dynamic/update.php?ZRRJZ...................bzo4Njc1M4DA'

DNSdynamic

DNSdynamic "will always be absolutely free" and works with ddclient

duiadns

Duiadns.org. The package duiadnsAUR is available in the AUR.

No-IP

noipAUR is a dynamic DNS client updater for no-ip.com services.

Configure the client by running

# noip2 -C

See noip2 -h for more options. Start noip2.service to run the host updater and enable it to run automatically at boot.

System-NS

System-NS free DNS service.

cron

Make directory and script file in it.

$ cd ~
$ mkdir systemns
$ cd systemns
$ vi systemns.sh

Put this text in systemns.sh. You should change domain and token parameters.

#!/bin/bash
wget -q -O- --post-data "type=dynamic&domain=mydomain.system-ns.net&command=set&token=880078764367979fe765c0fa3f4efff1" http://system-ns.com/api | grep -v '"code":0' | awk '{print d, $0}' "d=$(date)" >> ~/systemns/systemns.log

Make the systemns.sh file executable.

$ chmod +x systemns.sh

Open crontab.

$ crontab -e

Put this text in the crontab (run every 5 minutes)

*/5 * * * * ~/systemns/systemns.sh