I've been using VyOS (and Vyatta before it) for a long time, but for years now I've used AWS Route53 for dynamic DNS - I already use them for hosting the rest of my DNS, and since they just have an HTTP API and widely-available clients, it makes sense. With the proliferation of cloud-based DNS providers, I really think that the old-guard DDNS providers are becoming somewhat obsolete (especially since my route53-based DDNS is amazingly stable, hosted by 3 NS'es across the world, gives me unlimited records, and costs less than $1USD/month).
Up until now, I've been doing the DDNS with a script ( https://github.com/jantman/misc-scripts/blob/master/route53_ddns_update.sh ) that runs via cron as root every 5 minutes, checks my public IP (via a web service I run that just echoes back the remote IP), and fires off the update to AWS via the "cli53" Debian package.
There are a few pitfalls here, one being the external package dependency, and the other being that it's a cronjob.
I'm about to do a fresh install on my router, and was thinking about trying to contribute something to VyOS for people in similar positions. Unfortunately, I can only come up with 2 theories for implementation (trying to ideally make it non-AWS-specific so that people who use RackSpace, UltraDNS, etc. can also make use of it):
- Heavily modify ddclient so that it has a "executable" protocol, which instead of firing the HTTP request itself, just calls a command line specified in the config file (with configurable environment variables), interpolating a value for the new IP address.
- Totally bypass ddclient for the custom stuff... but then I'm not sure how to trigger when the IP changes, and it would also likely mean having things (packages and scripts) that aren't part of the configuration.
- Implement kouak's suggestion from the DDNS configuration flexibility PR to simply allow configuration of a per-interface DHCP hook script, which the user could manage and do whatever they want with (but then once again, we'd have pieces of this that are outside of the configuration)
I'm probably going to continue with my current script for now, but perhaps change it from cron to task-scheduler and query vyatta or ip addr to get the WAN IP instead of using my web service.
Any advice, discussion or direction would be greatly appreciated.