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=192.0.2.1' https://dyn.addr.tools OK
$ sha224=$(echo -n '1SuperSecretPassphrase' | shasum -a 224 | cut -c 1-56) $ dig $sha224.dyn.addr.tools +short 192.0.2.1
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 |
---|---|
Type: | CNAME |
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 |