Currently deSEC offers the HTTP-based service https://checkip.dedyn.io/, https://checkipv4.dedyn.io/ and https://checkipv6.dedyn.io/ to determine your current public IPs.
However they are most likely rather expensive on the server side if they are implemented using the same Python backend as the rest of the web services. (I could not find their implementation on GitHub though, so this is just an assumption. If this is not an issue then please ignore this post.)
Also in a typical scenario this service would need to be called much more often than the IP Update API. So if it does cause significant server load, finding ways to reduce this would have a significant effect.
I have seen that several large (US) companies seem to offer DNS-based services that do the same thing:
-
Google
$ dig @ns1.google.com. -4 +short o-o.myaddr.l.google.com. txt|cut -f2 -d'"'
$ dig @ns1.google.com. -6 +short o-o.myaddr.l.google.com. txt|cut -f2 -d'"'
-
Cloudflare
$ dig @one.one.one.one. -4 +short whoami.cloudflare. ch txt|cut -f2 -d'"'
$ dig @one.one.one.one. -6 +short whoami.cloudflare. ch txt|cut -f2 -d'"'
-
OpenDNS (Cisco)
$ dig @dns.opendns.com. -4 +short myip.opendns.com. a
$ dig @dns.opendns.com. -6 +short myip.opendns.com. aaaa
These services all return DNS records that contain the (public) IP of the caller, either as a TXT record or as A/AAAA records. They use short TTLs (0 or 60 in the case of Google).
Would something like this be feasible using the deSEC infrastructure (PowerDNS and anycast)?
If so could this help to reduce the load on the web servers?
fiwswe
[Update] One issue might be the DNSSEC signatures of the returned DNS records? They would probably force the requests to go to the master server that does the signing, negating the advantages of using the anycast frontend DNS servers.