GnuDIP Logo

GnuDIP Dynamic DNS


features  -  required packages  -  current release/download  -  known problems and fixes  -  client-server protocol  -  to do  -  credits  -  contributed documentation  -  mailing list

If you would like to mirror this site, just download gnudip-2.3.5-www.tar.gz. This site was last modified on 2003/09/05. The GnuDIP Perl source was last modified on 2003/09/03. The GnuDIP help HTML was last modified on 2003/08/27.
Note: GnuDIP is now only minimally maintained. New development will not occur unless a new developer steps forward.

The GnuDIP software implements a Dynamic IP DNS service. It provides clients with a static DNS name even if their IP address is dynamically assigned.

GnuDIP has two main parts on the server side:

On the client side, GnuDIP provides two ways to maintain the correct IP address at the server:

Features

  • DNS Dynamic Update Protocol
- The "DNS Dynamic Update" protocol as described in RFC 2136 and RFC 2137 is used to send updates to DNS servers.

The GnuDIP server only sends an update to the DNS server(s) if the IP address has changed from the value on record in the GnuDIP user database.

  • Generic Support for Legacy BIND and tinydns
- Early releases of BIND and tinydns, which cannot be updated using nsupdate are supported using a set of "back end" scripts that interface with GnuDIP where nsupdate normally would.
  • Web Configuration
- The administrator uses the web tool for administration of the GnuDIP server.
  • Explicit Authorization of IP Subnetworks
- The GnuDIP site administrator must explicitly specify the IP subnetworks for which domain names may be registered. In this way an ISP could provide GnuDIP service to only their own IP addresses.
  • Manual IP Address Update Via Web Interface
- Users may use the web tool to manually update their IP address.

Users may enter the IP address themselves, but the default value will normally do. If Javascript and Java are enabled in the browser, the default IP address will be the IP address of the machine the browser is running on. Otherwise it will be the IP address of the machine that connects to the GnuDIP Web Tool. These two addresses will of course be the same unless the user is behind a proxy of some sort.

  • Automatic IP Address Update Via Auto URL (Optional)
- If the GnuDIP site supports this option, users may set a web page at the GnuDIP site as their web browser's default page and the GnuDIP server will automatically authenticate the user, set the current IP address and redirect the browser to a page of the user's choice.
  • Automatic IP Address Update Via GnuDIP Client
- If users install the appropriate GnuDIP client for their platform they can have their IP address updated automatically at several GnuDIP sites simultaneously.

The GnuDIP client will only send an update to the GnuDIP server if the IP address at the time of the last update is no longer valid. The validity of the old address is determined without generating any network traffic.

The client sends the IP address it detects at its end of the connection to the update server, unless it is configured to operate behind an NAT gateway, in which case the server detects the address at the other end of the connection and informs the client.

The client can invoke a command when an address for a dynamic domain name changes. This command is passed all IP addresses the client has validated as arguments. It could be used for example to reconfigure and reload a DNS server on the client machine.

The client can invoke a command to supply the address to be registered. A sample Perl script to use SNMP/MIB-2 to query an NAT gateway for its "external" address is provided.

  • Strong Security
- Passwords passed between the GnuDIP client and GnuDIP server are salted and MD5 digested.

The web tool forces users (or robot agents) to login through the login page by embedding "signed" credentials in the HTML of each web page. These credentials are only generated by passing through the login page.

  • Support by Third Party Dynamic DNS Clients
- The GnuDIP update protocol is supported by generic dynamic DNS clients such as DynSite, DirectUpdate and ez-ipupdate.
  • Offline
- Users can set their GnuDIP host name "offline" so that DNS servers will not respond with incorrect answers that host name.
  • Self Signup (Optional)
- If the GnuDIP site supports this option, users can register themselves as user with no administrator intervention required.
  • Valid E-mail Address Enforcement (Optional)
- There is a "Require and Validate E-mail" system preference. When this is on, a user must provide an E-mail address during self-registration. An E-mail is sent to the address provided. The E-mail contains a "signed" URL which may be used to create a user with the information the user entered. In this way we are sure that the E-mail address provided is valid. When a user changes their E-mail address, an E-mail is again sent in order to validate that the address is valid.
  • Multiple Domains
- The GnuDIP server allows multiple GnuDIP domains. Each domain has its own user list.
  • Web Page Customization
- A mechanism is provided to embed the GnuDIP HTML pages within customized site HTML pages, without the need to modify Perl code. It is also possible to override the pages for "Self Registration", "Forgotten Password" and "Delete Current User".
  • Optional Non-DBMS Installation
- GnuDIP can operate without MySQL or PostgreSQL, using the Linux/UNIX file system instead. This allows rapid initial installation, and is probably adequate for sites with up to several hundred users. Unload and reload utilities are provided to convert between database environments.
  • Ability to Maintain GnuDIP Users Independently of GnuDIP
- Using web page customization together with either the user maintainance commands (which may be used from the command line or a script) or the remote user maintenance TCP daemon, the management of the GnuDIP user base may be made completely independent of the GnuDIP web interface.

Having Your Own Domain Name with a Dynamic IP Address

See owndomain.html.

Required Packages

GnuDIP is written in Perl.

Server

The requirements to operate the server are:

To use secret key rather than IP address access control for dynamic DNS you may also want the dnskeygen command from BIND 8 or the dnssec-keygen command from BIND 9, to generate input files for nsupdate, and probably the key values in them.

Although not required, GnuDIP will run a bit faster if you install the Perl Digest-MD5 module.

Also, the GnuDIP web interface and IP address update CGI scripts are compatible with both mod_perl Apache::Registry and mod_fastcgi and the FCGI Perl module. These environments can dramatically improve performance.

In order to use MySQL rather than the Linux/UNIX file system for Web Tool configuration and user information, you will also need:

In order to use PostreSQL rather than the Linux/UNIX file system for Web Tool configuration and user information, you will also need:

If you have Linux, OpenBSD or such, Perl (including the DBI module), BIND and Sendmail will probably be available as options from your installation CD. You may need to obtain and install the rest.

UNIX Client

The only requirement to operate the UNIX client is the base Perl Language system. The client will however be a bit faster if you install the Perl Digest-MD5 module.

Windows Client

The only requirement to operate the Windows client is ActivePerl. The need to install ActivePerl can be avoided by using the Stand-Alone Windows client package (see below).

Current Release

The current GnuDIP Release is 2.3.5.

You can download or browse the server package from:

src/

The directory contains a tar ball and a directory which is the unpacked tar ball.

The server package includes client packages for Linux/UNIX and for Windows.

Note that this release has had bug fixes and minor upgrades applied since it was first released (see the note at the top of this page). If you encounter a problem with GnuDIP some time after installing it, check the date on the tar ball to see if it has been updated. Your problem may have been addressed by a fix.

For GnuDIP client software see clients.html.

Release Notes

See release.html.

Only changes since release 2.1.2 are listed. The original release 2.1.2 is available in http://gnudip2.sourceforge.net/legacy/download/gnudip/gnudip-2.1.2.tar.gz or at the original GnuDIP site in ftp://cheapnet.net/pub/GnuDIP/gnudip-2.1.2.tar.gz.

Known Problems with the Current Release and Fixed Scripts

The list of known problems with the current release is in problems.html.

Client-Server Update Protocol

The protocol used by a client to request an update from the server is described in protocol.html.

To Do

See TODO.html.

Credits

See credits.html.

User Contributed Documentation

Roger Buck at Studio Of Arts And Sciences has set up a wiki site containing an extended and user extendable manual for GnuDIP.

You may find this manual helpful, or be able to contribute to it based on your experience.

Mailing List

The author of GnuDIP no longer actively supports users of GnuDIP. The author may not be a member of the mailing list.

The author will not normally reply to requests for assistance or information for GnuDIP sent directly to him. The author may reply if you want to join a group of users who are interested in maintaining this version of GnuDIP, or want to add something to GnuDIP, or have a bug fix to offer. But please try contacting these users directly on the mailing list first.

The Mailman page for the mailing list is at:

You must be a member of the mailing list to post to it. This is to block spam.

The list is anonymous. The "From", "Sender" and "Reply-To" mail headers are stripped. This is to avoid having a poster's E-mail address placed in the mail archive, which is scanned by spammers.

The mailing list is also archived at:

If your problem is with getting BIND/nsupdate/named working, since this is really a BIND configuration problem, you may be better off using the BIND mailing lists or their archives.

History

  • 10/28/2002
Release 2.3.5++ - More changes and upgrades:
  • Made more bug fixes and minor upgrades to release 2.3.5 - without bumping the release number.
  • Made changes to accomodate Perl 5.8.0 when using "-T".
  • Removed all occurences "-T", "-w" and "use warnings;", in the hope of avoiding future problems with new releases of Perl.
  • Removed the authors' names, E-mail addresses and web site names from all Perl source and web page source, except for the names (no E-mail or web sites) in the "credits.html" files, and the name of the legacy GnuDIP author in files that evolved directly from the legacy version.
  • 05/10/2002
Release 2.3.5++ - New features:
  • Made bug fixes and minor upgrades to release 2.3.5 - without bumping the release number!
  • Chopped SourceForge web site down, creating this portable site.
  • Thanks to the work of Thilo Bangert, support for tinydns has been completed.
  • 10/23/2001
Release 2.3.5 - New features:
  • Removed all links to the SourceForge web site.
  • Replaced gnudip.gif with gnudip.jpg.
  • The clients can now be downloaded from the "help" page.
  • 10/06/2001
Release 2.3.4 - New features:
  • The Client-Server update protocol has been adapted to HTTP. Assisted author of DynSite with related changes.
Valuable feed back and/or help with testing were provided by:
  • 09/25/2001
Release 2.3.3 - New features:
  • The command invoked when an address for a dynamic domain name changes is passed all IP addresses the client has validated as arguments.
  • The client can invoke a command to supply the address to be registered. A sample Perl script to use SNMP/MIB-2 to query an NAT gateway for its "external" address is provided.
  • 09/19/2001
Release 2.3.2 - New features:
  • The client uses UDP rather than TCP for validating IP addresses.
  • The default timeout of 1 second for the arrival of address validation packets can be overridden to any value.
  • The client only validates an address once.
  • The client and update server support operation behind NAT/IP masquerade boxes. The client will send and receive on specified ports for address validation. The update server returns the IP address to the client.
  • The client can run continually (in "daemon" mode), checking the address for validity at a specified interval. This interval can be any value, not just multiples of 1 minute, as for cron or Windows Task Scheduler.
  • The client can invoke a command when an address for a dynamic domain name changes. This command could be used for example to reconfigure and reload a DNS server on the client machine.
  • 09/10/2001
Release 2.3.1 - New features:
  • Fixed a few bugs and made a few cosmetic changes.
  • GnuDIP can now be run without MySQL, using normal UNIX files instead. As a by-product GnuDIP now has full database abstraction.
  • The Digest::MD5 Perl module is now optional, for better performance.
  • 08/21/2001
Release 2.3.0 - This is pretty much a complete rewrite.

Valuable feed back and/or help with testing were provided by:

  • 05/11/2001
New Web Site and Release 2.2.0 - The web site has much the same format. But easier on the eyes?