Project

General

Profile

Presentation

DDNS is a Dynamic DNS client and server.

DDNS is split into two parts:
  • a "MyIP" client and server, which is a very simple way to get your external IPv4 and IPv6 addresses
  • a "RegIP" client and server, which register IPs associated with hostnames

The MyIP service is a public service which basically returns your IP as seen by the webserver in a programmatic way (YAML).

The RegIP service is an authenticated service which check the hostnames you are allowed to modify and issue a secure update onto your DNS server (using nsupdate and TSIG). Currently RegIP does not care about authentification himself but relies on your webserver to secure its access. It also relies on it being able to return a specific multi-valued field containing the list of allowed hostnames associated with this account. It has been tested successfully with Apache Httpd and the LDAP provider (see configuration examples).

RegIP is currently working as a command you can add to your crontab but might work as a daemon in the future.

You can Specify which IP address you wish manually (even none, which would remove the DNS entry), or use automatic discovery (using MyIP).

Both services may be used in a multihomed setup if a specific interface is assigned to a specific provider (no DSCP/TOS support unfortunately).

Installation

Build-Dependencies:
  • ruby-setup

Runtime Dependencies:

  • common:
    • ruby (>= 1.9)
    • ruby-log4r
    • kwalify
  • clients:
    • ruby-curb
    • ruby-safe-yaml
  • servers:
    • ruby-activesupport
    • dnsutils (nsupdate)

for a real install in /usr/local

ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install
ruby setup.rb clean

for packagers

ruby setup.rb config --installdirs=std
ruby setup.rb setup
ruby setup.rb install --prefix=debian/ddns
ruby setup.rb clean

for in-place tests

ruby setup.rb config --bindir=bin --rbdir=lib --datadir=data --sysconfdir=conf --localstatedir=var --shebang=never
ruby setup.rb setup

Do tests, and when finished:
ruby setup.rb clean

Configuration

See Configuration and examples in source:examples.