summaryrefslogtreecommitdiff
path: root/README.md
blob: bea978acdfbcd4c7e204a4368cbc7db651c22299 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 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
```