INADYN(5) | File Formats Manual (smm) | INADYN(5) |
inadyn.conf
—
inadyn DDNS client configuration file
/etc/inadyn.conf |
inadyn
is configured using a simple
configuration file. The “#” character marks start of a comment
to end of line. The \ character can be used as an escape character.
verify-address
= <true
|
false>
inadyn
verifies both IPv4 and IPv6
addresses, making sure the address is a valid Internet address. Invalid
addresses are, e.g., link local, loopback, multicast and known
experimental addresses. For more information, see RFC3330.
IP address validation can be disabled by setting this option
to false
.
fake-address
= <true
|
false>
allow-ipv6
= <true
|
false>
Inadyn
can get an IPv6 address from an interface,
or with an external checkip script. This option controls if IPv6 addresses
should be allowed or discarded. By default this option is
false, i.e. any IPv6 addresses found are
discarded.iface =
IFNAME
IFNAME
as source of IP
address changes instead of querying an external server. With this option
is enabled, the external IP check is disabled and
inadyn
will send DDNS updates using the IP address
of the IFNAME
network interface to
all DDNS
providers listed in the configuration file. This can be useful to register
LAN IP addresses, or, when connected directly to a public IP address, to
speed up the IP check if the DDNS provider's check-ip servers are slow to
respond.
This option can also be given as a command line option to inadyn(8), both serve a purpose, use whichever one works for you.
iterations
= <NUM
|
0>
period =
SEC
forced-update
= SEC
secure-ssl
= < true
|
false
>
inadyn
aborts the DDNS update before sending any
credentials. When this setting is disabled, i.e.
false, then inadyn
will only
issue a warning. By default this setting is enabled, because security
matters.broken-rtc
= < true
|
false
>
inadyn
will only issue a warning that the
certificate is not valid yet. By default this setting is disabled, because
security matters.ca-trust-file
= FILE
inadyn
uses the built-in path to the
system's trusted CA certificates, both GnuTLS and Open/LibreSSL support
this. As a fall-back, in case the API's to load CA certificates from the
built-in path fails, inadyn
also supports common
default paths to Debian and RedHat CA bundles.
This setting overrides the built-in paths and fallback locations and provides a way to specify the path to a trusted set of CA certificates, in PEM format, bundled into one file.
user-agent
= STRING
inadyn
version, and SUPPORTURL is the upstream
support URL.
This can also be set on a per-provider basis, see below custom and provider section description.
custom
some@identifier {}
custom{}
and
provider{}
sections are very similar, except that
the custom section allows customizing the DDNS update server details. For
more details, see the description for provider{}
,
below.provider
email@ddns-service.tld[:ID] {}
custom{}
and
provider{}
sections are very similar, except that
the custom section allows customizing the DDNS update server details. See
below list for supported DDNS providers and their
email@ddns-service.tld
identifiers.
To support multiple users of the same DDNS provider, append [:ID] to the provider name. The ID can be any free form string or number as long as the combination is unique.
Common settings in custom{} and provider{} sections are:
include("/path/to/file")
ssl =
<true
|
false>
username
= USERNAME.
password
= PASSWORD
iface
= IFNAME
checkip-server
= <default
|
checkip.example.com[:port]>
default
keyword resolves to the built-in
default, http://ifconfig.me/ip
, which affect
not only this setting, but also checkip-path
and checkip-ssl
. Any other value is the server
name to query periodically for IP address changes. The optional
:port argument defaults to
443, see checkip-ssl
for
details.
This is an optional setting. For
provider{}
sections it defaults to a
pre-defined checkip-server
and
checkip-path
for the given DDNS provider.
For custom()
DDNS setups it defaults to the
built-in default (abvove).
checkip-path
= /some/checkip/url
checkip-server
is set to
default
, this setting is ignored.checkip-ssl
= <true
|
false>
ssl
setting,
but can be used to disable HTTPS for the IP address check. This might
be needed for some providers that only support HTTPS for the DNS
record update.
However, when a custom
checkip-server
is defined for a provider,
this setting does
not follow
the ssl
setting. Default is to use HTTPS
(true).
checkip-command
= /path/to/shell/command [optional args]
email@ddns-service.tld
Example:
checkip-command = "/sbin/ifconfig eth0 | grep 'inet addr'"
Inadyn
will use the first
occurrence in the command's output that looks like an address. Both
IPv4 and IPv6 addresses are supported.
hostname
= HOSTNAME
hostname
= { HOSTNAME1.name.tld
, HOSTNAME2.name.tld
}
user-agent
= STRING
inadyn
user agent string. For more
information, see above.wildcard
= <true
|
false>
inadyn
< 1.96.3 wildcarding was enabled by
default.ttl =
SEC
proxied
= <true
|
false>
provider
[email@]ddns-service[.tld] {}
default@freedns.afraid.org
ipv4@nsupdate.info
default@duckdns.org
default@freemyip.com
default@loopia.com
default@dyndns.org
default@noip.com
default@no-ip.com
default@noip.com
plugin.default@easydns.com
default@dnsomatic.com
dyndns@he.net
default@tunnelbroker.net
default@sitelutions.com
default@dnsexit.com
default@zoneedit.com
default@changeip.com
default@dhis.org
default@domains.google.com
default@ovh.com
default@gira.de
default@duiadns.net
default@ddnss.de
default@dynv6.com
default@ipv4.dynv6.com
default@spdyn.de
default@strato.com
default@cloudxns.net
dyndns@3322.org
default@dnspod.cn
default@dynu.com
default@selfhost.de
default@pdd.yandex.ru
default@cloudflare.com
default@goip.de
custom
some@identifier {}
ddns-server
= update.example.com
ddns-path
= /update?domain=
append-myip=true
is set. Alternatively,
printf(3) like format specifiers may be used for a
fully customizable HTTP GET update request. The following format
specifiers are currently supported:
With the following example:
username = myuser password = mypass ddns-path = "/update?user=%u&password=%p&domain=%h&myip=%i" hostname = YOURDOMAIN.TLD
the resulting update URL would be expanded to
/update?user=myuser&password=mypass&domain=YOURDOMAIN.TLD&myip=1.2.3.4
However, the password is usually never sent in clear text
in the HTTP GET URL. Most DDNS providers instead rely on HTTP basic
auth., which inadyn
always relays to the
server in the HTTP header of update requests.
inadyn.conf
v2.1 and later defaults to HTTPS
to protect your credentials, but some providers still do not support
HTTPS.
append-myip
= true
ddns-path
is given with format specifiers, in
which case this setting is unused.Worth noting below is how two different user accounts can use the same DDNS provider, No-IP.com, by using the concept of instances ':N'.
period = 300 # Dyn.com provider dyndns.org { username = account1 password = secret1 hostname = { "my.example.com", "other.example.org" } } # FreeDNS. Remember the username must be in lower case # and password (max 16 chars) is case sensitive. provider freedns { username = lower-case-username password = case-sensitive-pwd hostname = some.example.com } # No-IP.com #1 # With multiple usernames at the same provider, index with :# provider no-ip.com:1 { checkip-server = "dynamic.zoneedit.com" checkip-path = "/checkip.html" checkip-ssl = false username = account21 password = secret21 hostname = example.no-ip.com } # No-IP.com #2 provider no-ip.com:2 { username = account22 password = secret22 hostname = another.no-ip.com } # Google Domains - notice use of '@' to update root entry provider domains.google.com:1 { hostname = @.mydomain.com username = your_username password = your_password } # Wildcard subdomains - notice the quoutes (required!) provider domains.google.com:2 { hostname = "*.mydomain.com" username = your_username password = your_password } # Loopia provider loopia.com { wildcard = true username = account3 password = secret3 hostname = example.com } # ddnss.de provider ddnss.de { username = your_username password = your_password hostname = your_host.ddnss.de } # spdyn.de provider spdyn.de { username = your_username password = your_password hostname = your_host.spdyn.de } # www.strato.com provider strato.com { username = your_username password = your_password hostname = example.com } # dynv6.com update using a custom checkip-command, which works # if you have access to an Internet-connected interface. Make # sure to verify the command works on your system first allow-ipv6 = true # required option for IPv6 atm. provider default@dynv6.com { username = your_token password = not_used hostname = { my.dynv6.net } # second host with comma checkip-command = "/sbin/ip -6 addr | grep inet6 | awk -F '[ ]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80" } # IPv6 account at https://tunnelbroker.net provider tunnelbroker.net { username = xyzzy password = update-key-in-advanced-tab hostname = tunnel-id } # www.freemyip.com provider freemyip.com { password = your_token hostname = your_hostname.freemyip.com } # www.cloudxns.net provider cloudxns.net { username = your_api_key password = your_secret_key hostname = yourhost.example.com } # www.dnspod.cn provider dnspod.cn { username = your_api_id password = your_api_token hostname = yourhost.example.com } # www.cloudflare.com provider cloudflare.com { username = zone.name password = api_token # Create a unique custom api token with the following permissions: Zone.Zone - Read, Zone.DNS - Edit. hostname = hostname.zone.name ttl = 1 # optional, value of 1 is 'automatic'. proxied = false # optional. } # www.goip.de provider goip.de { username = username password = password hostname = hostname.goip.de } # www.namecheap.com custom namecheap { username = YOURDOMAIN.TLD password = mypass ddns-server = dynamicdns.park-your-domain.com ddns-path = "/update?domain=%u&password=%p&host=%h" hostname = { "@", "www", "test" } } # Generic example, check all details for your provider! custom example { username = myuser password = mypass checkip-server = checkip.example.com checkip-path = / checkip-ssl = false ddns-server = update.example.com ddns-path = "/update?hostname=" hostname = myhostname.example.net }
As of Inadyn 1.99.14 the generic plugin can also be used with providers that require the client's IP in the update request, which for example ⟨https://dyn.com⟩ requires:
# This emulates dyndns.org custom dyn.com { username = DYNUSERNAME password = DYNPASSWORD ddns-server = members.dyndns.org ddns-path = "/nic/update?hostname=YOURHOST.dyndns.org&myip=" append-myip = true hostname = YOURHOST }
Notice the use of append-myip
which
differs from above previous examples. Without this option set the default
(backwards compatible) behavior is to append the hostname.
An alternative, and perhaps more intuitive approach introduced in Inadyn v2.0, is to use the printf(3) like format specifiers mentioned previously. The same example look like this:
# This emulates dyndns.org custom dyn.com { ssl = false username = DYNUSERNAME password = DYNPASSWORD ddns-server = members.dyndns.org ddns-path = "/nic/update?hostname=%h.dyndns.org&myip=%i" hostname = YOURHOST }
The inadyn
home page is
⟨https://github.com/troglobit/inadyn⟩
This manual page was initially written for the Debian GNU/Linux system by Shaul Karl ⟨mailto:shaul@debian.org⟩. Currently maintained by Joachim Wiberg ⟨mailto:troglobit@gmail.com⟩.
February 20, 2020 | Debian |