# he-dyndns This code is a shell-based dynamic DNS client for Hurricane Electric's dns.he.net service. This code is designed to be maximally portable using common Linux/BSD commands and avoid Perl, Python, etc. In its default mode, it updates one or more FQDNs with the IP address that dns.he.net detects as the source request. # Installation There is really nothing to install. Copy he-dyndns somewhere useful such as /usr/local/bin. # Configuration The only configuration file/item is if you want to use the file /etc/he-dns-secret to contain the key for authenticating to dns.he.net. Otherwise, you can provide it on the command line with the **-s** option. The **/etc/he-dns-secret** file is sourced into the Bash environment by the script. It can contain any shell code that can execute when being called with a "source" function. The only key thing that matters is that the variable CODE is defined by the script. Since this file will be sourced into the program, ensure proper security is applied to this file. # Runtime Options **he-dyndns** takes the following options: ## Requied Options - **-4**: Update the IPv4 "A" record for the FQDN(s). Note that to use this option, the system making the call must be able to reach dyn.dns.he.net with an IPv4 address. NAT is okay. Without using **-a** then the public address or public NAT address is what is set for the FQDN(s). - **-6**: Update the IPv6 "AAAA" record for the FQDN(s). Note that to use this option, the system making the call must be able to reach dyn.dns.he.net with an IPv6 address. - **-d**: One or more fully-qualified host entries for the domain separated by commas Note that one or both of -4 and -6 must be specified for the script to actually do anything. Not specifing at least one of them will result in a successful script exit with no actions being taken. ## Optional Options - **-a**: Use the supplied IPv4 address instead of allowing HE DNS to auto-set based on source. Note that the address is not validated for well-formedness. - **-A**: Use the supplied IPv6 address instead of allowing HE DNS to auto-set based on source. Note that the address is not validated for well-formedness. - **-s**: The secret key for updating the entries. This overrides any existing /etc/he-dns-secret file, if one exists. Any other unsupported option or no options will print a usage message. # Return Values Returns 0 on success or 1 on failure. Failure message returns the exact error from dyn.dns.he.net, no more and no less. # Usage This script is designed to be called from a Cron entry or another script. An example usage: ``` # /usr/local/bin/he-dyndns -46 -s SECRETKEY -d foo.example.com,bar.example.com ```