= Dynamisches DNS =

== Das Problem ==

Wenn man sich über einen normalen Provider ins Internet einwählt,
bekommt man von diesem eine dynamische IP-Nummer zugewiesen. Diese
Nummer ist jedesmal eine andere aus dem IP-Pool, der dem Provider
zur Verfügung steht.

Jetzt ist das wie bei einem Telefonanschluß, der jeden Tag eine
andere Nummer hat: Man kann zwar wunderbar raustelefonieren (sprich
surfen etc.) aber wenn jemand anders einen anrufen will, wird's
kompliziert. Will man also Dienste anbieten, wie z.B. ein eigener
Webserver, ein ssh-Eingang, EMail-Abruf aus dem Urlaub, oder auch
ein VirtualPrivateNetwork, so muss der Rechner irgendwie erreichbar
sein.

Der potentielle Nutzer muss fuer diese Dienste also die IP-Adresse
kennen. Diese ändert sich aber bei jeder Einwahl. Normalerweise
benutzt man für diese Adresse das DNS-System des Internet und der
Rechner bekommt einen Domain-Namen. Allerdings muss man dazu wieder
eine IP-Adresse beim DNS hinterlegen. Und das geht ja nicht...

Gerade im Zeitalter der Flatrates wird es aber immer interessanter,
auch für "Heimbenutzer" oder kleine Firmen, Dienste ins Internet zu
stellen.

'''Ein anderes Problem''', das man auch mit ''dynamisches DNS''
bezeichnen kann, ist es übrigens, wenn man seinen eigenen
Nameserver dynamisch updaten will, z.B. von einem DHCP-Server aus.
Dazu steht etwas auf der Seite DHCPServerMitDNS.

== Die Lösung ==

die primitivste Lösung ist, bei jedem Verbindungsaufbau automatisch
eine Webseite mit der Mitteilung "Jetzt habe ich die IP-Adresse
a.b.c.d" auf einen bestehenden Webserver hochzuladen. Dieser
Webserver kann von einem Provider für Webspace wie z.B. gmx,
freenet, etc. sein und hat dann eine offizielle, mit DNS
zugängliche Adresse. Der potentielle Client nimmt also seinen
Webbrowser, öffnet die Seite people.freenet.de/~benutzer, sieht
dort die Adresse und trägt sie z.B. in seinen Browser ein, um auf
den eigentlichen Server zu kommen.

Eine etwas schönere Lösung ist, direkt eine HTML-Umleitungs-Seite
anzulegen. Dann hat man sich einen lästigen Schritt gespart.
Nachteil des Verfahrens: Es funktioniert nur für HTML-Seiten.
Andere Dienste lassen sich so nicht umlenken.

Und jetzt kommen wir zur schönsten Lösung: Was wäre, wenn es
spezielle DNS-Server gäbe, die man bei jedem Verbindungsaufbau
permanent umstellen könnte? Normalerweise steht dem das TTL (Time
To Live)-Feld im DNS-Eintrag entgegen, der besagt, daß der Eintrag
für z.B. eine Woche gültig ist. Dadurch wird der Eintrag von allen
anderen Nameservern im Internet gecached. Wenn man später auf
diesen Domainnamen zugreift, bekommt man also die alte Adresse. Nun
könnte man theoretisch das TTL-Feld auf z.B. 5 Minuten stellen.
Würden das alle machen, würde das ganze DNS-System ewig langsam
werden, weil nichts mehr gecached wird, aber für ein paar
dynamische IPs sollte das gehen.

Jetzt die gute Nachricht: Es gibt Leute, die solche Nameserver
anbieten. Man kann eine Unterdomain der Hauptdomain des Anbieters
für sich reservieren und ein kleines Programm, das beim
Verbindungsaufbau gestartet wird, sorgt dafür, daß die IP-Adresse
richtig eingetragen wird.

== Anbieter ==

Es gibt eine ganze Menge Anbieter. Sucht in Eurer favorisierten
Suchmaschine einfach mal nach "dynamic DNS". Ich selber habe
erstmal mit dyndns angefangen. Die meisten Dienste sind kostenlos.
Es gibt aber auch Anbieter, die gegen Gebühr sogar Hauptdomains
(eigenername.com) registrieren und dynamisch umleiten. Wer
Erfahrungen mit einem Anbieter hat, kann diesen hier gerne mit
angeben:

* http://www.dyndns.org

== Einrichtung ==

=== DNS-Eintrag erstellen ===

Beispielhaft wird hier die Einrichtung bei dyndns vorgestellt.
Zuerstmal sollte man sich bei http://www.dyndns.org umschauen.
Insbesondere die FAQ und das HOWTO sollte man überfliegen. Danach
muss man einen Useraccount anlegen. Danach bekommt man ein Passwort
zugesandt, muss dieses dann ändern und kann sich dann endlich
richtig einloggen. Ist das geschafft, klickt man rechts im Menü auf
"Dynamic DNS" und dann auf "Create New Host". Dann gibt man die
benötigten Daten ein und hat damit seinen DNS-Eintrag erstellt.

=== Adresse automatisch anpassen ===

Zur automatischen Anpassung der Adresse bei jedem Verbindungsaufbau
gibt es verschiedene Client-Programme. Ich selber habe mich für
ddclient entschieden. Es arbeitet mit dyndns.org zusammen und ist
in Perl geschrieben. Dieses Programm ist über die Seite
http://members.home.net/ddclient/ zu bekommen. Es gibt auch ein
Debian-Paket, das natürlich einfacher zu installieren ist. Aufgrund
der inzwischen sehr schönen debconf-Einbindung installiert es sich
fast von selbst.

Übrigens hat es sich - eine Flatrate vorausgesetzt - als sinnvoller
herausgestellt, ddclient im Daemon-Mode laufen zu lassen anstatt
jeweils beim Verbindungsaufbau. Falls mit der DNS-Umstellung
irgendwas schiefläuft, bessert ddclient dann von selber nach fünf
Minuten nach. Ansonsten muss man z.B. bei T-DSL dann 24h bis zum
nächsten Verbindungsaufbau warten.

'''Für die, die es interessiert, hier nochmal ein äterer Text, mit
dem ich ddclient "von Hand" installiert habe:'''

''Das Paket wird entpackt. Es handelt sich nur um ein
Programmskript, die Konfigurationsdatei und ein Init-Skript. Die
habe ich erstmal folgendermassen installiert:

  cd ddclient-3.4.5
  cp sample-etc_rc.d_init.d_ddclient /etc/init.d/ddclient
  cp sample-etc_ddclient.conf /etc/ddclient.conf
  cp ddclient /usr/sbin/  

Um die Runlevel-Skripten richtig zu installieren, jetzt noch
folgendes unter Debian (andere Distributionen ggf. mit chkconfig
(RedHat) oder von Hand die Links einfügen): 

  update-rc.d ddclient defaults

Dann habe ich zur Konfiguration die Datei /etc/ddclient.conf in
meinen Lieblingseditor geladen und folgende Eintragungen
vorgenommen bzw. Kommentarzeichen entfernt:

  daemon=300
  use=web                               
  login=mein_nic_username
  password=mein_dyn_dns_passwort
  # Sektion "dyndns.org dynamic addresses":
  server=members.dyndns.org,           \
  protocol=dyndns2,                    \
  meine_dyndns_domain.dyndns.org

Jetzt noch mit

  /etc/init.d/ddclient start

den Dämonen gestartet und fertig!''

== Firewall ==

Der ddclient benutzt ausschließlich den http-Port. Er geht also
über die ganz normale Webseite von dyndns, um dort die IP zu
ändern. Daher dürfte es keine Probleme mit gängigen Firewalls
geben. Wer allerdings das Skript auf einem Server laufen lässt, der
keinen Zugang zum Web hat, muss sich ggf. etwas einfallen lassen.
Oft werden bei internen Webservern oder auch Firewall-Rechnern alle
Ports inklusive dem Port 80 gesperrt, um potentielle
Kommunikationskanäle für Backdoor-Programme zu schließen.

== Erfahrungen ==

Es heisst, daß es trotz des kurzen TTL-Feldes oft Probleme geben
kann, die über die versprochenen 5 Minuten hinausgehen, daß der
Namenseintrag doch irgendwo gecachet wird. Dabei heisst es, dass
normalerweise spätestens nach 1 Stunde das ganze Internet von der
Änderung erfahren hat.

Meine eigenen Erfahrungen bis jetzt sind gut. Ich habe ein '''host
meinedomain.dyndns.org''' gemacht, dann den Dämonen gestart und ca.
10 Sekunden danach nochmal nachgefragt, da hatte ich schon die neue
Adresse. Also wird zwischen dem dyndns-Nameserver und meinem
Provider (T-Online) wohl nirgendwo länger gecached als erlaubt.

== Sicherheit ==

Man sollte beachten, daß man der ganzen Welt und damit auch jedem
Hacker seine IP-Adresse offenlegt. Andererseits ist das IMHO nicht
gefährlicher, als einfach so seine Flatrate dauernd offen zu haben
- nämlich saugefährlich. Denkt daran: '''Jeder Computer, der am
Internet hängt - egal, wie lange und egal, mit welchen Diensten -
wird Ziel von Angriffen sein.''' Meine Firewall meldet 3-50
Angriffsversuche pro Tag (ohne dynamisches DNS). Also immer hübsch
die Firewall laufen lassen! Das eigentliche Sicherheitsproblem
entsteht viel eher bei den von Euch angebotenen Diensten, aber
damit kann ich Euch jetzt hier auch nicht helfen.

Übrigens habe ich eine Untersuchung gelesen, bei der
Internet-Rechner von Surfern getestet wurden. 3% der Rechner waren
Windows-Rechner, auf denen das Laufwerk C: per Gastzugang ohne
Passwort als Share zugänglich war...

== eigener dynamischer DNS-Server ==

Nachdem in 2014 dyndns.org seinen kostenlosen Service eingestellt hat, war die Frage, was man nun tut. Die einfache Lösung ist, das es etliche andere Anbieter gibt, die einen ähnlichen Service bieten (siehe z.B. im [Heise-Artikel|http://www.heise.de/netze/meldung/DynDNS-Urgestein-stellt-Gratis-Angebot-ein-2165239.html] hierzu). Ich wäre natürlich kein echter LUGer, wenn ich nicht wenigstens mal nachgeschaut hätte, ob man einen derartigen Server nicht auch selber betreiben kann. Kann man natürlich, wenn man über einen Server mit fester IP verfügt, den man als Nameserver einrichten kann. :-) Hierzu ein paar Links:

* http://andrwe.org/linux/own-ddns - Lösung mit bind, die ein Update per HTTP erlaubt, wie das auch ~DynDNS macht
* http://linux.yyz.us/dns/ddns-server.html oder https://emanuelduss.ch/2013/07/eigener-dynamischer-dns-ddns-service-betreiben-
eigenes-dyndns/ - Lösung mit bind, die mit nsupdate arbeitet
* Eine dritte Lösung nutzt PeterHormanns, der im Prinzip per ssh auf den Server zugreift und dort das Zonefile austauscht.

== Weiteres zum Thema ==

Wer eine "richtige" Webseite auf seinem heimischen PC haben will, kann diese auf seinen dynamischen Server umleiten, wenn er Zugriff auf die Nameserver-Einträge seines Providers nehmen kann. Dazu steht einiges auf der Seite ApacheVirtualHosts.

[{Tag Netzwerk ServerDienste VPN}]