GnuDIP Dynamic DNS |
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:
- a daemon that receives connections from client applications and updates their host name
- a web interface that is used as the administration tool and as the user's tool to manage their own account
On the client side, GnuDIP provides two ways to maintain the correct IP address at the server:
- manually (or automatically via "Auto URL", if supported by the GnuDIP site) using the web interface
- manually or automatically using a GnuDIP client
| - |
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. |
| - |
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.
|
| - | The administrator uses the web tool for administration of the GnuDIP server. |
| - | 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. |
| - |
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. |
| - | 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. |
| - |
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. |
| - |
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. |
| - | The GnuDIP update protocol is supported by generic dynamic DNS clients such as DynSite, DirectUpdate and ez-ipupdate. |
| - | Users can set their GnuDIP host name "offline" so that DNS servers will not respond with incorrect answers that host name. |
| - | If the GnuDIP site supports this option, users can register themselves as user with no administrator intervention required. |
| - | 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. |
| - | The GnuDIP server allows multiple GnuDIP domains. Each domain has its own user list. |
| - | 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". |
| - | 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. |
| - | 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. |
See owndomain.html.
GnuDIP is written in Perl.
- Server
The requirements to operate the server are:
- the base Perl Language system
- the
nsupdate
command from either BIND 8 or BIND 9- the
sendmail
command from Sendmail or the clone program provided by Sendmail replacements such as Exim, qmail or Postfix.To use secret key rather than IP address access control for dynamic DNS you may also want the
dnskeygen
command from BIND 8 or thednssec-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).
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.
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.
The list of known problems with the current release is in problems.html.
The protocol used by a client to request an update from the server is described in protocol.html.
See TODO.html.
See credits.html.
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.
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:
- http://marc.theaimsgroup.com/?l=gnudip2-general
- http://www.mail-archive.com/gnudip2-general@lists.sourceforge.net/maillist.html
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.
| Release 2.3.5++ | - |
More changes and upgrades:
|
| Release 2.3.5++ | - |
New features:
|
| Release 2.3.5 | - |
New features:
|
| Release 2.3.4 | - |
New features:
|
| Release 2.3.3 | - |
New features:
|
| Release 2.3.2 | - |
New features:
|
| Release 2.3.1 | - |
New features:
|
| Release 2.3.0 | - |
This is pretty much a complete rewrite.
Valuable feed back and/or help with testing were provided by:
|
| New Web Site and Release 2.2.0 | - | The web site has much the same format. But easier on the eyes? |