OpenDD is a DynDNS client, written in C, and especially designed for small gateway machines, like a Soekris box.
Its main feature is that it does not require any Perl or Python interpreter. It supports HTTPS, can send a mail report, and can run as daemon. OpenDD project is also very easy to deploy.
You just have to compile it with an OpenBSD box, with gcc, and copy the
"opendd" binary to your gateway, that do not have a C compiler.
An example of how I use it, assuming the gateway run on OpenBSD :
- Copy the binary to your gateway
- Copy the opendd.conf to /etc/opendd.conf
- Edit /etc/opendd.conf to suit your needs
- chmod 600 /etc/opendd.conf, since it contains your DynDNS login/password "en clair"
"opendd" is now ready to run.
Now "opendd" can be run in daemon mode.
You must add the following parameter in your opendd.conf :
runasdaemon = 1
In daemon mode, the program will poll every X seconds to check if update must be done.
The poll frequency can be adjusted with the following parameter :
pollfrequency = 300
If not set, 300 seconds is the default.
For daemon mode, parameter "pidfile_path" has been added :
pidfile_path = /var/run/opendd.pid
If not set, /var/run/opendd.pid is the default.
This file has a double function :
- First, it stores the pid number
- Second, it is used as a lock file to prevent multiple opendd daemon process
Parameter "domain_lifetime" has been added :
domain_lifetime = 28
It means that if no update has been done for 28 days, a forced update will be done
in order to prevent your dyndns domains to expire.
"opendd" now supports HTTPS, using openssl library.
To compile with openssl support, type the following command :
env USE_SOCKET_SSL=yes make
To enable it, you must add the following parameters in your opendd.conf :
use_ssl = 1
cert_path = /etc/opendd.pem
So, do not forget to copy the opendd.pem cert file in the right place.
Now, it is possible to run "opendd", with privileges dropped, if run by root. For example, you can add the following parameter in your opendd.conf :
system_user = nobody
system_uid = 65534
system_group = nogroup
system_gid = 65533
In daemon mode, "opendd" can react to SIGUSR1 signals.
It is used to force a DynDNS update. Useful, if your hostnames will expire
because no update has been done.
!! Do not forget to not abuse of this feature, as DynDNS services will detect that
!! as updates abuses.
If you do not use the daemon mode and if you have an ADSL connection, with pppoe,
you can edit /etc/ppp/ppp.linkup like this :
Assuming you put opendd binary in /sbin
It will run opendd, on every ADSL connection or reconnection.
The program logs on the "local0" syslog facility with LOG_ERR or LOG_INFO. The syslog ident is "opendd".
Additional, "opendd" arguments are available :
opendd -c < another_config_file > -v
The -v option allow opendd to print information on stderr INSTEAD OF on syslog.
The followings are some TODO list I have in mind (so features that are not support at this time) :
- other dyndns services : static, custom
- login/password stored in a cryptable way.
Other wishlist are welcome.
What's New in This Release:
· It is now possible to activate or deactivate syslog, even in a non-daemon mode.
· The syslog facility can also be chosen. Moreover, all warnings from OpenBSD's compiler no longer appear: calls to strcpy, strcat, and sprintf were replaced by calls to strlcpy, strlcat, and snprintf.