/etc/inadyn.conf
inadyn8
Internet automated dynamic dns client
Usage
inadyn [-1,
--once]
[--force]
[--cache-dir
PATH]
[-c,
--cmd
/path/to/cmd]
[-C,
--continue-on-error]
[-e,
--exec
/path/to/cmd]
[--exec-mode
MODE]
[-f,
--config
FILE]
[-h,
--help]
[-i,
--iface
IFNAME]
[-I,
--ident
NAME]
[-l,
--loglevel
LEVEL]
[-L,
--list-providers]
[-n,
--foreground]
[--no-pidfile]
[-P,
--pidfile
FILE]
[-p,
--drop-privs
USER
[:GROUP]]
[-s,
--syslog]
[-S,
--show-provider
-NAME]
[-t,
--startup-delay
SEC]
[-v,
--version]
Overview
inadyn, or In-a-Dyn, periodically checks your actual Internet accessible IP for changes. When it changes inadyn updates your name server record(s) automatically.
Common DDNS service providers supported by inadyn are listed below. Some of these services are free of charge for non-commercial use, others take a small fee, but also provide more domain names to choose from.
inadyn defaults to HTTPS for all providers, some may however not support this so try disabling SSL for your provider in case of problems. Providers known to support SSL updates are listed below with https. The list is ordered by the plugin that support the service:
-
⟨https://freedns.afraid.org⟩
-
⟨https://nsupdate.info⟩
-
⟨https://duckdns.org⟩
-
⟨https://freemyip.com⟩
-
⟨http://www.dyndns.org⟩, ⟨http://dyn.com⟩
-
⟨http://dns.he.net⟩
-
⟨https://www.dnsomatic.com⟩
-
⟨https://domains.google⟩
-
⟨https://www.dynu.com⟩
-
⟨https://www.loopia.com⟩
-
⟨http://www.noip.com⟩
-
⟨https://www.pubyun.com⟩, formerly ⟨http://www.3322.org⟩
-
⟨https://www.selfhost.de⟩
-
⟨https://spdyn.de⟩
-
-
⟨http://www.easydns.com⟩
-
⟨http://www.tunnelbroker.net⟩
-
⟨http://www.sitelutions.com⟩
-
⟨http://www.dnsexit.com⟩, parent of ⟨https://zoneedit.com⟩
-
⟨http://www.changeip.com⟩
-
⟨https://www.ovh.com⟩
-
⟨https://www.strato.com⟩
-
-
⟨http://www.dhis.org⟩
-
⟨http://giradns.com⟩, ⟨https://gira.de⟩
-
⟨https://www.duiadns.net⟩
-
⟨https://ddnss.de⟩
-
⟨http://dynv6.com⟩
-
⟨http://ipv4.dynv6.com⟩
-
⟨https://www.cloudxns.net⟩
-
⟨https://www.dnspod.cn⟩
-
⟨https://connect.yandex.ru⟩
-
⟨https://www.cloudflare.com⟩
-
⟨https://www.goip.de⟩
DDNS providers not listed here, e.g. ⟨https://www.namecheap.com⟩, can often be configured using the custom DDNS provider plugin. See inadyn.conf(5) for examples.
Options
Earlier versions of inadyn supported more command line options, from v2.0 inadyn has been greatly simplified. See inadyn.conf(5) for details of the /etc/inadyn.conf configuration file format.
-
-1, --once -
Run only once and quit, updates only if too old or unknown. Use
--forceto for an update before exiting. -
--force -
Force one update. Only works with
-1,--onceflag, ignored for all other use-cases. -
--cache-dir PATH -
Set directory for persistent cache files, defaults to /var/cache/inadyn
The cache files are used to keep track of which addresses have been successfully sent to their respective DDNS provider and when. The latter 'when' is important to prevent
inadynfrom banning you for excessive updates.When restarting
inadynor rebooting your server, or embedded device,inadynreads the cache files to seed its internal data structures with the last sent IP address and when the update was performed. It is therefore very important to both have a cache file and for it to have the correct time stamp. The absence of a cache file will currently cause a forced update.On an embedded device with no RTC, or no battery backed RTC, it is strongly recommended to pair this setting with the
--startup-delaySEC command line option. -c,--cmd/path/to/cmd [optional args]-
Full path to command, or script, to run to check for IP address change. This is the same as the configuration file option checkip-command but will apply to
allproviders. This command line option is only provided for convenience, it is recommended to instead use the configuration file. For more details, see the inadyn.conf(5) man page. You will need to quote the complete command if any arguments, or pipe, is given. -
--continue-on-error -
Ignore errors from DDNS provider and try again later. This command line option tells
inadynto not exit on errors from a DDNS provider and instead try again later. Please do not use this, it usually indicates that we are sending a malformed request, e.g. wrong username, password or DNS alias for the given account. Continuing could possibly lock you out of your account! -e,--exec=/path/to/cmd[optional args]-
Full path to command, or script, to run. The following environment variables are set: INADYN_IP, INADYN_HOSTNAME. The first environment variable contains the new IP address, the second the host name alias. The
cmdis called for each listed host name. Ifinadynis started with the-iIFNAME command line option, the INADYN_IFACE environment variable is also set. You will need to quote the complete command if any arguments, or pipe, is given. -
--exec-mode MODE -
Use MODE to set the exec script run mode: compat, event: - compat: run exec handler on successful DDNS update only, default - event: run exec handler on any update status The following environment variables are set: INADYN_EVENT, INADYN_ERROR, INADYN_ERROR_MESSAGE. INADYN_EVENT contains the event, one of: nochg, update, error. The event nochg indicates that no update had to be sent, the event update indicates that an update was sent successully, the event error indicates that the update was sent and an error occurred. INADYN_ERROR contains the error code, INADYN_ERROR_MESSAGE contains the error message for the error code.
-
-f, --config FILE -
Use FILE for configuration. By default /etc/inadyn.conf, is used. See inadyn.conf(5) for examples.
-
-h, --help -
Show summary of command line options and exit
-
-i, --iface IFNAME -
Check IP of IFNAME instead of querying an external server. With this command line option the external IP check is disabled and
inadynwill report the IP address of IFNAME 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 configuration option in inadyn.conf(5), both serve a purpose, use whichever one works for you.
-
-I, --ident NAME -
Specify program identity (name) to be used for PID file and syslog messages. Useful with multiple instances of
inadyn, or to simply replace theinadynname with something more generic, e.g. "DDNS", without renaming the binary. Note, this option only changes the base name of the PID file, not the location, which is system specific. Usually /var/run/inadyn.pid or /run/inadyn.pid. -
-l, --loglevel LEVEL -
Set log level: none, err, info, notice, debug. The default is notice, but you might want to set this to
-lwarning. -
-l, --list-providers -
List available DDNS providers.
-
-n, --foreground -
Run in foreground, default is to daemonize and continue in the background. This option is usually required when running under process supervisors like systemd and Finit, but is also useful when running from the terminal, when debugging a config or at initial set up. Remember to also give the
-soption if you still want to redirect log messages to the syslog. -
-p, --drop-privs USER[:GROUP] -
Drop root privileges after initial setup to the given user and group.
-
--no-pidfile -
When running as a daemon, even when running in the foreground with
-n,inadyncreates a PID file so users can easily find the PID of the process to send signals to. See SIGNALS for more information on this. This option tellsinadyntonotcreate a PID file. Some users prefer this when running under systemd. -
-P, --pidfile FILE -
Set PID file name and location, defaults to /run/inadyn.pid, derived from
--identNAME, which is strongly recommended to change over this option. However, some users want to keep application runtime files in separate directories, usually in combination with--drop-privs, for such cases this is the option to use. -
-s, --syslog -
Use syslog(3) for log messages, warnings and error conditions. This is the default when running in the background. When running in the foreground, see
-n, log messages are printed to stdout. -
-S, --show-provider NAME -
Show information about DDNS provider NAME, substring search supported.
-
-t, --startup-delay SEC -
Initial startup delay. Default is 0 seconds. Any signal can be used to abort the startup delay early, but SIGUSR2 is the recommended to use. See SIGNALS below for full details of how
inadynresponds to signals.Intended to allow time for embedded devices without a battery backed real time clock to set their clock via NTP at bootup. This is so that the time since the last update can be calculated correctly from the
inadyncache file and theforced-updateSEC setting honored across reboots, avoiding unnecessary IP address updates. -
-v, --version -
Show program version and exit.
Output
inadyn prints a message when the IP is updated. If no update is needed then by default it prints a single “.” character, unless --loglevel is set to none. Therefore, unless --loglevel is set to none, the log will contain lots of dots. When the connection goes down inadyn may print some harmless error messages which should be followed by “OK” messages after the Internet connection is restored.
Signals
inadyn responds to the following signals:
- HUP
-
Reload the
.conffile, standard UNIX behavior - TERM
-
Tell
inadynto exit gracefully - INT
-
Same as TERM
- USR1
-
Force update now, even if the IP address has not changed
- USR2
-
Check IP address change now. Useful when a new DHCP/PPPoE lease or new gateway is received. Please note that
inadyndoes not track such events by itself. You need an external monitor for that
For convenience in sending signals, inadyn writes its process ID to /var/run/inadyn.pid, unless the --ident NAME option is used.
Files
-
/run/inadyn.pid -
/var/cache/inadyn/dyndns.org.cache -
/var/cache/inadyn/freedns.afraid.org.cache -
... one .cache file per DDNS provider
Releases
10 releases since Debian 4.0 (Etch); the text changed 3 times.
--cache-dir since Debian 12 (Bookworm);
--config since Debian 8 (Jessie);
--continue-on-error since Debian 12 (Bookworm);
--drop-privs since Debian 8 (Jessie);
--exec-mode since Debian 12 (Bookworm);
--force since Debian 12 (Bookworm);
--foreground since Debian 12 (Bookworm);
--ident since Debian 12 (Bookworm);
--iface since Debian 8 (Jessie);
--list-providers since Debian 13 (Trixie);
--loglevel since Debian 12 (Bookworm);
--no-pidfile since Debian 12 (Bookworm);
--once since Debian 12 (Bookworm);
--pidfile since Debian 8 (Jessie);
--show-provider since Debian 13 (Trixie);
--startup-delay since Debian 12 (Bookworm);
--version since Debian 12 (Bookworm);
-1 since Debian 12 (Bookworm);
-I since Debian 12 (Bookworm);
-P since Debian 8 (Jessie);
-S since Debian 13 (Trixie);
-f since Debian 8 (Jessie);
-i since Debian 8 (Jessie);
-l since Debian 12 (Bookworm);
-n since Debian 8 (Jessie);
-s since Debian 8 (Jessie);
-t since Debian 8 (Jessie);
-v since Debian 12 (Bookworm).
--L until Debian 11 (Bullseye);
--alias until Debian 11 (Bullseye);
--background until Debian 11 (Bullseye);
--bind until Debian 11 (Bullseye);
--cachefile until Debian 11 (Bullseye);
--change_persona until Debian 7 (Wheezy);
--dyndns_server_name until Debian 7 (Wheezy);
--dyndns_server_url until Debian 7 (Wheezy);
--dyndns_system until Debian 7 (Wheezy);
--exec until Debian 11 (Bullseye);
--forced-update until Debian 11 (Bullseye);
--forced_update_period until Debian 7 (Wheezy);
--input_file until Debian 7 (Wheezy);
--iterations until Debian 11 (Bullseye);
--log_file until Debian 7 (Wheezy);
--logfile until Debian 11 (Bullseye);
--password until Debian 11 (Bullseye);
--period until Debian 11 (Bullseye);
--proxy-server until Debian 11 (Bullseye);
--proxy_server until Debian 7 (Wheezy);
--server-name until Debian 11 (Bullseye);
--server-url until Debian 11 (Bullseye);
--system until Debian 11 (Bullseye);
--test until Debian 11 (Bullseye);
--update_period until Debian 7 (Wheezy);
--update_period_sec until Debian 7 (Wheezy);
--username until Debian 11 (Bullseye);
--verbose until Debian 11 (Bullseye);
--wildcard until Debian 11 (Bullseye);
-B until Debian 11 (Bullseye);
-F until Debian 11 (Bullseye);
-N until Debian 11 (Bullseye);
-T until Debian 11 (Bullseye);
-U until Debian 11 (Bullseye);
-V until Debian 11 (Bullseye);
-a until Debian 11 (Bullseye);
-b until Debian 11 (Bullseye);
-c until Debian 11 (Bullseye);
-d until Debian 11 (Bullseye);
-e until Debian 11 (Bullseye);
-u until Debian 11 (Bullseye);
-w until Debian 11 (Bullseye);
-x until Debian 11 (Bullseye).