Domain Name System


dyn.addr.tools - simple dynamic DNS for your own domains, no account required


$ curl -d "" "https://dyn.addr.tools/1SuperSecretPassphrase" 9afcdffa…086ca968.dyn.addr.tools

$ dig 9afcdffa…086ca968.dyn.addr.tools +short


dyn.addr.tools is a dynamic DNS service with a simple HTTP interface meant to point subdomains (via CNAME) to non-static IP addresses.


Let ‹ipaddr› be an IPv4 or IPv6 address, ‹secret› be a random alphanumeric string (or Base64) of at least 14 characters in length, and ‹sha224› be the SHA-224 hash of ‹secret›.

A POST or PUT to "https://dyn.addr.tools/‹secret›" with request body "‹ipaddr›", or GET to "https://dyn.addr.tools/‹secret›?ip=‹ipaddr›", will update the domain "‹sha224›.dyn.addr.tools" to resolve to ‹ipaddr›. Responds with status code 200 on success.

A GET to "https://dyn.addr.tools/‹secret›" will respond with "‹sha224›.dyn.addr.tools" and make no update.

A DELETE to "https://dyn.addr.tools/‹secret›" will remove both IPv4 and IPv6 addresses. Responds with status code 204 on successful removal of all addresses (which may be zero).

"‹sha224›.dyn.addr.tools" is meant to be the target of a CNAME at your own subdomain.

‹ipaddr› may be the word "self" to use the requester's external IPv4 or IPv6 address. Use host "ipv4.dyn.addr.tools" or "ipv6.dyn.addr.tools" to force IPv4 or IPv6.

At least one update must be made every 90 days to remain active. IPv4 and IPv6 updates are handled independently.


Say you want to keep "home.example.com" updated with your external IPv4 address.

First, pick a random alphanumeric string. This string acts like a password and must be at least 14 characters long. We'll use "1SuperSecretPassphrase".

Add a CNAME record to point "home.example.com" to the subdomain of "dyn.addr.tools" named by calculating the SHA-224 of "1SuperSecretPassphrase". This should look similar to:

Name: home.example.com
Target: 9afcdffa0d7a6d6f0140cadea70a9f62d58a96dd5d50f268086ca968.dyn.addr.tools

Update the target of the CNAME to resolve to your external IPv4 address:

$ curl "https://ipv4.dyn.addr.tools/1SuperSecretPassphrase?ip=self"

Use a program, cron job, etc., to make a similar update request when the IP changes and at least once every 90 days.

For example, you can use pfSense to keep your IP updated by adding a new Dynamic DNS Client (under Services) with these settings:

Service Type: Custom
Update URL: https://ipv4.dyn.addr.tools/1SuperSecretPassphrase?ip=self
Max Cache Age: 60