Dynamic DNS Update

You can use dynamic DNS update to keep your hostname updated with the latest IP address assigned by your ISP.

Currently only dyndns2 protocol is supported. This is a simple protocol and it works by running a client on the network device.

The dynamic DNS client detects when the IP address changes and issues HTTP requests to update the host IP address in the DNS.

The protocol uses Basic Authentication to authenticate HTTP requests. You can use dynamic DNS only with hosts from the zones that you own.

You must create the hostname(s) in advance (A and/or AAAA records) and use your email and an API key for authentication.

* Protocol: dyndns2
* Server: app.luadns.com (required)
* Hostname: YOUR_HOST    (required, Example: myhost.example.org)
* Username: YOUR_EMAIL   (required, Example: joe@example.com)
* Password: YOUR_API_KEY (required, Example: '9e1248d97e234fd618c40c8cf2423813')
* Use SSL: yes           (required)

ddclient

Example configuration for ddclient:

# /etc/ddclient.conf

# Use https, http is not supported.
ssl=yes

# The `usev6` option enables IPv6, it may not be available on your OS, check your manual.
protocol=dyndns2 \
use=if, usev6=if, if=eth0 \
server=app.luadns.com \
login=joe@example.org\
password='9e1248d97e234fd618c40c8cf2423813' \
myhost.example.org.

Command Line

Example usage using command line:

$ curl -i 'https://joe%40example.com:9e1248d97e234fd618c40c8cf2423813@app.luadns.com/nic/update?hostname=myhost.example.org&myip=1.2.3.4'
HTTP/2 200
content-type: text/plain; charset=utf-8
cache-control: max-age=0, private, must-revalidate
date: Thu, 10 Jan 2024 08:54:45 GMT
x-request-id: F6k_E0JMmD2d-kQAACHh
content-length: 4

good

Dynamic DNS using git integraton

To use Dynamic DNS update with git setup, you must instruct the build system to keep current A/AAAA records for your dynamic IP hostnames using ignore function.

Because dyndns2 protocol requires records to already exist in the DNS zone, two updates are required to configure hosts for Dynamic DNS.

In the fist update, the A/AAAA records are created:

+a("myhost", "185.142.218.123")
+aaaa("myhost", "2001:67c:25a0::123")

In the second update, the records are removed from the zone and configured to be ignored by the build system:

-a("myhost", "185.142.218.123")
-aaaa("myhost", "2001:67c:25a0::123")
+ignore(“myhost”, “A,AAAA”)

After the last update, records managed by Dynamic DNS will be retained by the build system.

Powered by Jekyll