Linux-Magazin-Logo Die Zeitschrift für Linux-Professionals

Aus dem Nähkästchen geplaudert: Dynamische DNS-Dienste

Partnersuche

Marc André Selig

Die billige Internetanbindung per DSL hat einen Schönheitsfehler: Die Provider rücken nur dynamische IP-Adressen heraus und zwingen zum täglichen Adresswechsel. Damit ist es schwer, Serverdienste zu betreiben. Dynamische DNS-Dienste lösen das Beziehungsproblem: Sie vermitteln dauerhafte Namen.

Jeder Computer braucht eine IP-Adresse, wenn er per Internetprotokoll kommunizieren will. Allerdings knausern die Provider und geben ihren Kunden keine statische IP, sondern lediglich dynamische Adressen. Wer gerade online ist, erhält eine beliebige Nummer aus dem Adresspool seines Providers. Serverbetreiber ärgert diese Knausrigkeit - sie müssen bei jedem Adresswechsel die Clients informieren.

Die Sparsamkeit hat ihren Grund: Die (noch) aktuellen IPv4-Adressen bestehen aus 4 Byte. Daraus errechnen sich 2564 Adressen, also etwa vier Milliarden. Aber nur ein kleiner Teil ist auch wirklich nutzbar. Das liegt manchmal an Besonderheiten der eingesetzten Protokolle (etwa Multicast), aber schlimmer ist die verschwenderische Reservierung aus den frühen Tage des Internets. Für ein globales Netz ist der Adressraum recht knapp bemessen, freie Adressblöcke sind heute schwer zu erhalten.

Die meisten Provider begnügen sich mit Adresspools, deren Zahl an Einträgen deutlich kleiner ist als die Zahl der Kunden. Jeder Benutzer erhält eine Adresse aus dem Pool für genau jene Zeit, die er sich über seinen Provider eingewählt hat. Trennt er die Verbindung, steht die Adresse für den nächsten Kunden zur Verfügung. Der Provider muss also nur so viele IPs besitzen, wie sich Computer gleichzeitig einwählen.

Ärger beim Serverbetrieb

Dieser Trick entschärft das Problem der Adressknappheit. Aber so vorteilhaft dies für den Provider ist, so viele Nachteile bringt es dem Kunden. Eine dynamische Adresse ist zwar wunderbar für Clients geeignet, um über HTTP einen Webserver abzufragen. Der Server selbst wäre mit ihr allerdings nicht zufrieden: Alle Browser müssten erfahren, welche der vielen dynamischen Adressen der Server im Moment benutzt.

Für größere Unternehmen stellt sich das Problem nicht, sie sind über Standleitungen ans Netz angebunden und benutzen feste IP-Adressen aus einem eigenen Kontingent. Kleine Firmen oder Privatleute betreiben aber nur selten einen Webserver auf eigenen Rechnern, sondern benutzen die Hosting-Dienste spezialisierter Anbieter.

Besonders in kleinen und mittleren Netzen gibt es aber interessante Aufgaben, bei denen DSL für den Server ausreicht. So könnte eine Firma über das Internet die Fernwartung ihrer Computer zulassen, um die Kosten für den Consultant zu drücken. Oder ein Privatmann liest seine E-Mail per Handy über einen WAP-Server auf dem PC im Arbeitszimmer. Im Zeitalter von DSL und Flatrate oder volumenbasierter Abrechnung ist es billig und praktikabel, den Rechner ständig online zu lassen. Allerdings müssen Consultant und Handy die aktuell gültigen IP-Adresse des Servers erfahren.

Dynamischer DNS für dynamische Adressen

Der Domain Name Service (DNS) übersetzt zwischen numerischen IP-Adressen und symbolischen Hostnamen. Der Zugriff per Internetprotokoll auf den Rechner »www.zpid.de« erfordert dessen IP-Adresse »136.199.85.18«. Wer Daten von diesem Server benötigt, hat sich den symbolischen Namen »www.zpid.de« gemerkt oder notiert. Per DNS ermittelt sein Computer die zugehörige IP-Adresse. Ändert sich diese, vermerkt der Betreiber das im DNS. Schlägt später ein anderer Browser die IP-Adresse nach, erhält er die neue.

Dieses System eignet sich auch, um den aktuellen Stand dynamischer IP-Adressen zu dokumentieren. Sobald sich die eigene Adresse ändert, trägt man sie im DNS-Server ein. Der Client fragt dort vor jedem Zugriff nach der neuesten Nummer. Es sind allerdings ein paar Besonderheiten zu beachten.

DNS-Server publizieren nicht nur Namen und Adressen. Sie geben auch an, wie lange die Paarungen gültig bleiben. Nachgeordnete Nameserver sparen damit kostbares Datenvolumen: Fordern innerhalb der Gültigkeitsdauer mehrere Clients eine Adresse an, antworten sie sofort aus dem Cache, ohne erneute Rückfrage beim maßgeblichen (authoritative) Nameserver.

Listing 1 zeigt ein Beispiel für eine manuelle DNS-Anfrage mit »dig www.zpid.de«. Der Rechnername »www.zpid.de« ist ein Alias für »zpidsu7.zpid.de«; diese Aussage bleibt noch für mindestens 8 Stunden, 10 Minuten und 41 Sekunden gültig. Die IP-Adresse von »zpidsu7.zpid.de« wird sich innerhalb von knapp 3 Stunden nicht ändern.

Listing 1: Timeout im DNS

01 ;; QUERY SECTION:
02 ;;      www.zpid.de, type = A, class = IN
03 
04 ;; ANSWER SECTION:
05 www.zpid.de.      8h10m41s IN CNAME  zpidsu7.zpid.de.
06 zpidsu7.zpid.de.  2h39m44s IN A   136.199.85.18

Unerwartete Änderung

Stimmt diese Erwartung nicht, kommt es zu Zugriffsproblemen. Zum Beispiel wenn »zpidsu7.zpid.de« eine Adresse aus einem dynamischen Pool benutzt und sich diese Adresse vor Ablauf der 2 Stunden, 39 Minuten und 44 Sekunden ändert. Der Client würde weiter die Cache-Information benutzen, ebenso wie alle anderen Rechner, die auf diesen Nameserver zugreifen. Nur Nameserver, deren Cache noch kein Eintrag für »www.zpid.de« enthält, würden ihre Daten sofort aktualisieren. Bei der Lösung dieses Problems hilft es, dynamische DNS-Einträge mit einer möglichst kurzen Gültigkeitsdauer zu versehen.

Kurze Timeouts erhöhen zwar den Datenfluss zum DNS-Server erheblich, verkürzen aber die unsicheren Zeiträume unmittelbar nach einem Wechsel der IP-Adresse. Listing 2 zeigt ein typisches Beispiel für einen solchen dynamischen Eintrag: Die Ausgabe von »dig selig.dyndns.org« informiert den Benutzer, dass die Adresszuordnung noch 51 Sekunden gültig bleibt. In der Praxis wird sie der Nameserver vermutlich schon früher aus seinem Cache löschen.

Listing 2: Kurzlebige DNS-Daten

01 ;; QUERY SECTION:
02 ;;      selig.dyndns.org, type = A, class = IN
03 
04 ;; ANSWER SECTION:
05 selig.dyndns.org.     51S IN A      80.128.96.209

DynDNS-Dienstleister

Ein DNS-Server, der dynamische Adressen veröffentlicht, darf seinerseits keine dynamische IP-Adresse benutzen. Sonst käme es zu einem Henne-und-Ei-Problem. Zum Glück gibt es einige Anbieter von DNS-Diensten, die diese Aufgabe auf statischen IP-Adressen übernehmen. Der Autor dieses Artikels benutzt DynDNS[1] und NO-IP[2], daneben existieren viele ähnliche Dienste.

Bleibt zu klären, wie der eigene Computer seine DNS-Daten aktualisiert. Die Konfigurationsdateien, mit denen Admins ihre Nameserver normalerweise füttern, sind recht kompliziert. Sie bei jedem IP-Wechsel manuell auf den neuesten Stand zu bringen, wäre ein enormer Aufwand. Praktischer ist spezielle Client-Software, die nach der Einwahl ins Internet oder dem Wechsel der IP-Adresse automatisch die neuen Daten an den Nameserver schickt. Für diese Aufgabe gibt es mehrere Protokolle.

Viele Router für den Soho-Bereich (Small Office, Home Office) enthalten bereits einen Client für dynamische DNS-Dienste; Abbildung 1 zeigt ein Beispiel. Ähnlich bequem kann jedes Linux-System die Einträge automatisch aktualisieren. Es ist dabei unerheblich, ob der Internetzugang über einen eigenen Router erfolgt oder ob das Linux-System selbst als Router arbeitet und eine Verbindung über Modem, ISDN, ADSL oder eine andere Technik nutzt. Je nach DNS-Provider braucht der Client aber unterschiedliche Software.

Abbildung 1: Viele Router-Appliances (hier von Draytek) enthalten bereits einen Client für DynDNS-Dienste. Es genügt, die Daten in der integrierten Weboberfläche zu ergänzen - schon sind die eigenen Server immer per DNS erreichbar.

DynDNS kennt immer die aktuelle Adresse

Das Tool »ddclient«[3] eignet sich für mehrere Anbieter. Es ist in zahlreichen Linux-Distributionen bereits enthalten, etwa bei Suse und Debian. Die Software liest die Konfiguration in »/etc/ddclient .conf« (Listing 3). Im einfachsten Fall läuft das Programm als Daemon und prüft in bestimmten Zeitabständen, ob sich die IP-Adresse eines Netzwerk-Interface (Zeile 4) geändert hat. Im Beispiel beträgt das Prüfintervall 60 Sekunden (Zeile 1).

Listing 3: DD-Client-Konfiguration

01 daemon=60     # IP-Adresse alle 60 Sekunden prüfen
02 syslog=yes
03 mail=root
04 use=if, if=eth0
05 login=seligm
06 password=strenggeheim
07 server=members.dyndns.org, protocol=dyndns2   selig.dyndns.org

Hat sich die Adresse geändert, aktualisiert »ddclient« die Daten im DNS-Server. Es benutzt dazu das in Zeile 7 konfigurierte Protokoll und den dort angegebenen Rechnernamen. Im Ergebnis antworten die Nameserver auf ein Frage nach »selig.dyndns.org« immer mit der gerade aktuellen IP-Nummer des Rechners, der damit jederzeit Serverdienste anbieten kann. (fjl)