Domain Name System


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


$ curl 'https://dyn.addr.tools/?secret=1SuperSecretPassphrase&ip=self' OK

$ curl -d 'secret=1SuperSecretPassphrase' -d 'ip=' https://dyn.addr.tools OK

$ sha224=$(echo -n '1SuperSecretPassphrase' | shasum -a 224 | cut -c 1-56) $ dig $sha224.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 strong password, and sha224 be the SHA-224 hash of secret.

To update the domain sha224.dyn.addr.tools to resolve to ipaddr, make a GET, POST, or PUT request to https://dyn.addr.tools with secret=secret and ip=ipaddr specified as URL query parameters or, alternatively for POST and PUT requests, as form values. Responds with body OK and status code 200 on success.

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

A GET, POST, or PUT to https://dyn.addr.tools with only secret=secret specified responds with body sha224.dyn.addr.tools and makes no update.

A DELETE to https://dyn.addr.tools with secret=secret specified removes 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.

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

Remember to properly encode your secret value in your requests if it contains special characters. See curl's "--data-urlencode" option.


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

First, pick a strong password. We'll use "1SuperSecretPassphrase", but you shouldn't.

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

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

Update the subdomain to resolve to your public IPv4 address:

$ curl 'https://ipv4.dyn.addr.tools/?secret=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/?secret=1SuperSecretPassphrase&ip=self
Result Match: OK
Max Cache Age: 90