Ein Nameserver dient der Namensauflösung eines Hostnamens zu einer IP-Adresse (und umgekehrt) und zur Bekanntgabe von bestimmten Servern, die bestimmte Funktionen für eine Domain erfüllen (z.B. Mailserver).
Es gibt zwei Arten von Nameservern:
- Rekursive Nameserver
- fragen andere (autoritative oder auch rekursive) Nameserver ab, meist haben sie auch eine Cache-Funktion, sie besitzen keine eigenen Zoneninformationen.
- Autoritative Nameserver
- verwalten die Zonen von bestimmten Domänen oder Subnetzen, d.h. sind diese "zuständig".
Ein (autoritativer) Nameserver kann für jede Zone entweder als Master (primary) oder als Slave (secondary) betrieben werden. In ersterem Falle stellt er die letzte Instanz für Abfragen dar, in zweiterem Falle holt er sich regelmäßig die Daten vom Masterserver und dient als Backup, falls der Master ausfällt oder nicht erreichbar ist.
Die obige Erläuterung ist etwas verwirrend und ungenau. Es gibt zum einen echte Nameserver mit unterschiedlicher Funktionsvielfalt und dann sog. Nameserver-Cache (oben als "rekursive Nameserver" bezeichnet). Das sind Daemonen, die nur Daten zwischenspeichern bzw. weitergeben. "Rekursiv" hat aber mit einem Nameserver-Cache nix zutun. Auch gilt es zu differenzieren zwischen "Server" im Sinne von "Software und "Server" im Sinne von "Host". "Server" wird für beides verwendet. Bei "autoritativ" geht es eigentlich in erster Linie um die Antworten. So gibt z.B. der Nameserver Deines Internet-Zugangs-Providers normalerweise die selben Antworten (z.B. zu "linuxwiki.de") wie die Server, die für linuxwiki.de zuständig sind. Welche Nameserver zuständig sind findet man zum einen über die Abfrage von whois linuxwiki.de bzw. über host -t ns linuxwiki.de -- 217.186.148.55 2004-12-03 00:21:43
Inhaltsverzeichnis
NameServer-Software für Linux
BIND - Der Standard unter den Namenservern
MaraDns - unterstützt kein ipv6
ldapdns autoritativer Nameserver basierend auf OpenLDAP (GPL)
dnsmasq - Ein sehr schnell eingerichteter NameServer (und mehr) für kleine Netze
Wildcard Records
Neuerdings scheinen Wildcard-A-Records für eigentlich nicht existierende Top-Level-Domains in Mode gekommen zu sein.
Siehe http://heise.de/newsticker/data/ad-17.09.03-000/.
Da das nicht nur nervig, sondern auch für Spam-Versender ziemlich vorteilhaft ist, sollte man Abhilfe schaffen.
- auf Nameserver-Ebene
BIND: Releases 9.2.2-P1, 9.1.3-P1
MaraDns: http://maradns.org/download/patches/maradns-1.0.19-verisign1.patch
auf MailServer-Ebene
Courier: die IPs als badmx in bofh eintragen
siehe auch http://www.imperialviolet.org/dnsfix.html.
Mit folgendem Skript kann man sich eine Liste aller Wildcard-TLDs und deren IPs erzeugen:
{{{#!/bin/sh curl -s ftp://ftp.internic.net/domain/root.zone.gz \ | gunzip -c | awk '/[^.]+\. NS / {print $1}' | sort -u \ | xargs -i host -W10 _.{} \ | perl -n -e 'print if s/^_\.(\w+) has address ([\d\.]+)$/$1 $2/;' }}}
Zonen
Es gibt zwei Arten von Zonen: reguläre und umgekehrte (reverse zone). Reguläre Zonen enthalten die Zuordnungen von IP-Adressen zu Rechnernamen, umgekehrte die Zuordnungen von Namen zu IP-Adressen.
Dynamisches DNS (DDNS)
Dynamisches DNS benutzt man, wenn man DNS-Namen für einen Rechner benutzen will, der keine feste IP-Adresse hat (z.B. bei Dialup). DDNS ist eine Kopplung aus einem Nameserver und Update-Programm (was wiederum aus Server und Client besteht).
Hier ein Beispiel:
- Man ist mit einer Flatrate mit dem Internet verbunden, wird aber alle 24 Stunden automatisch getrennt.
- Wenn der Rechner sich wieder einwählt sagt er dem DDNS seine neue IP-Adresse und man kann auf den Rechner z.B. über den Namen meindialup.dyndns.org zugreifen.
Wenn ein Rechner dann (z.B. per dynDNS) im Internet erreichbar ist, sollten alle anderen Dienste (wie z.B. die Dateifreigabe über einen Samba-Server) so konfiguriert werden, dass sie von außen nicht erreichbar sind, denn ein "Angreifer" findet den Rechner ja sehr leicht wieder, da er die IP-Adresse nicht raten muss. Hierfür den z. B. Samba-Server auf den privaten IP-Adressbereich des lokalen Netzes und die interne Netzwerkkarte beschränken.
Von DDNS gibt es verschiedene Varianten der Konfiguration:
- Hostname ist fest, IP-Adresse dynamisch
- Das erlaubt es, den Client umzuziehen, ohne seine Konfiguration zu ändern.
- Der Hostname kann dabei Client-seitig oder Server-seitig eingestellt sein.
- Bei Client-seitiger Festlegung des Hostnamens gibt es Nachteile:
- Der Client sollte authentifiziert werden
- Die einmalige Vergabe eines Hostnamens ist schwieriger
- Man muss Clients anpassen (das ist schon ein riesiger Nachteil an sich)
- Hostname und IP-Adresse sind dynamisch
- das macht nur sehr begrenzt Sinn, da man auch gleich zu allen möglichen Adressen Hostnamen einrichten kann
- Hostname und IP-Adresse sind fest (aber dynamisch im DNS eingetragen)
- klingt unsinnig, erspart aber die doppelte Konfiguration
Bei Dialup-Verbindungen tritt praktisch nur der erste Fall auf. Provider nutzen meist die zweite Variante (oder das, was im Kommentar steht). Wer im Internet Server stehen hat und mehr als eine IP-Adresse zur Verfügung kann selber derartige Dienste (Dynamic DNS Tools, ddt) installieren.
Dyndns-Anbieter liefern meist eigene Clients. Wer selbst Dyndns aufsetzen will, findet mit GNU-Dip einen freien, in Perl geschriebenen Server und Client.
Ein paar Anbieter:
Nameserver
BIND9 out-of-the-box
- andere mit Anpassungen
(Update-)Server
LAN
Dialup
Falls man Herr über einen eigenen Nameserver ist, kann man diesen natürlich auch selber dynamisch verändern:
- in älteren Versionen vom GNUdip funktioniert der Update über das Umschreiben der Zonefiles
in der aktuellen Version (2.3.5++) geht der update auch per nsupdate vom BIND, was wesentlich eleganter ist
- für kleine Installationen sollte man sich MiniDIP angucken, welches in der Version 2.3.5 dabei ist
(Update-)Clients
LAN
In lokalen Netzwerken wird ein DHCP oder BOOTP-Client verwendet. (siehe auch DisklessLinux)
Dialup
Eine Beispiellösung gibts auf der Seite DynamischesDNS (mit ddclient).
ez-ipupdate in C, unterstützt sehr viele Server
opt-dyndns für fli4l
ipcheck.py für die Python-Freaks