Als Alternative zur Aktualisierung der DynDNS-Informationen über eine einfache HTTP-Anfrage nutzen manche Dienste das GnuDIP-Protokoll. Das GnuDIP-Protokoll basiert auf einem Challenge-Response-Mechanismus:
- Der Client öffnet die Verbindung zum GnuDIP-Server.
- Der Server antwortet mit einem für die Sitzung berechneten Zufallswert.
- Der Client erzeugt aus dem Zufallswert und dem Password einen Hashwert und sendet diesen an den Server zurück.
- Der Server prüft diesen Hashwert und meldet das Ergebnis in Form einer Ziffer zurück an den Client.
Das GnuDIP-Protokoll kann die Nachrichten zwischen Client und Server entweder auf einer einfachen TCP-Verbindung austauschen (Standard-Port 3495) oder als CGI-Skript auf einem Internetserver laufen. Die Variante über einen HTTP-Aufruf des CGI-Skripts hat den Vorteil, dass auf dem Server kein weiterer Port für GnuDIP geöffnet werden muss, außerdem sichert HTTPS zusätzlich gegen passives Abhören und Offline-Wörterbuch-Attacken.
Die Anfragen an einen GnuDIP-Server werden aus dem Gerät mit einer Aktion in der folgenden Form ausgelöst:
- gnudip://<srv>[:port][/pfad]?<parameter>
- <srv> – Die Adresse des GnuDIP-Servers.
- [:port] – Die Angabe des Ports ist optional, falls nicht definiert, werden die Standardwerte verwendet (3495 für TCP, 80 bzw. 443 für HTTP/HTTPS).
- [/pfad] – Die Pfadangabe wird nur bei HTTP/HTTPS benötigt, um den Speicherort des CGI-Skriptes zu definieren.
- method=<tcp|http|https> – Wählt das Protokoll aus, das für die Übertragung zwischen GnuDIP-Server und -Client verwendet werden soll. Hier kann nur genau ein Protokoll gewählt werden.
- user=<username> – Gibt den Benutzernamen für das Konto auf dem GnuDIP-Server an.
- pass=<password> – Gibt das Kennwort für das Konto auf dem GnuDIP-Server an.
- domn=<domain> – Gibt die DNS-Domäne an, in der sich der DynDNS-Eintrag befindet.
- reqc=<0|1|2> – Definiert die Aktion, die mit der Anfrage ausgelöst werden soll. Mit der Aktion <0> wird eine dedizierte IP-Adresse an den Server übermittelt, die für das Update verwendet werden soll. Mit der Aktion <1> wird ein DynDNS-Eintrag gelöscht. Mit der Aktion <2> wird ein Update ausgelöst, es wird aber keine IP-Adresse an den Server übermittelt. Statt dessen verwendet der Server die IP-Adresse des GnuDIP-Clients für das Update.
- addr=<address> – Gibt für eine Aktion mit dem Parameter <0> die IP-Adresse an, die für das Update des DynDNS-Eintrags verwendet werden soll. Fehlt diese Angabe bei einer <0>-Aktion, so wird die Anfrage wie eine <2>-Aktion behandelt.
- gnudip://gnudipsrv?method=tcp&user=myserver&domn=mydomain.org &pass=password&reqc=0&addr=%a
- gnudip://gnudipsrv?method=tcp&user=myserver&domn=mydomain.org &pass=password&reqc=1
Der GnuDIP-Server gibt als Ergebnis der Anfrage einen der folgenden Werte an den GnuDIP-Client zurück (vorausgesetzt, die Verbindung zwischen Server und Client konnte hergestellt werden):
- 0 – Der DynDNS-Eintrag wurde erfolgreich aktualisiert.
- 0:Adresse – Der DynDNS-Eintrag wurde erfolgreich mit der angegebenen Adresse aktualisiert.
- 1 – Die Authentifizierung am GnuDIP-Server war nicht erfolgreich.
- 2 – Der DynDNS-Eintrag wurde erfolgreich gelöscht.
Diese Antworten können in den Aktionen des Geräts ausgewertet werden, um bei Bedarf weitere Aktionen einzuleiten.