Dynamic DNS - ArchWiki

# 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

Category:

- Domain Name System