FreeBSD als DNS-Server
Domain Name Service
Der Domain Name Service übernimmt die Namensauflösung von Netzwerkadressen. So kann man im Netzwerk die einzelnen Rechner mit einem Namen ansprechen und anstelle mit nur IP-Adressen kommunizieren. So wird z. B. wiki.cmoser.org in die zugewiesene IP-Adresse umgewandelt.
Wenn man aber keinen DNS-Server selbst hostet, aber eine Namensauflösung will, kann man auf jeden Rechner die /etc/hosts (unter Windows die %WINDIR%\system32\drivers\etc\hosts) editieren, um eine Namensauflösung zu ermöglichen. Wenn das Netzwerk aber über mehrere Rechner verfügt und man einen Computer hinzufügen will, wird es schnell aufwendig, die /etc/hosts auf jeden Rechner zu bearbeiten. Hier kommt dann ein DNS ins Spiel. Als DNS-Service nehme ich BIND.
Ich habe mir einst ein Raspberry PI gekauft und nehme es als DNS-Server her, weil es wenig Strom verbraucht und eigentlich recht günstig zu erwerben ist. FreeBSD nutze ich, weil es eigentlich mein bevorzugtes Unix ist. Die Rechenleistung des RPI reicht bei weiten aus um einige Services, darunter auch einen DNS-Server zu betreiben.
Es wird davon ausgegangen, dass das FreeBSD-Basissetup bereits abgeschlossen ist.
Wie komme ich zu einer Domäne
Eine Domäne zu erfinden ist meistens keine gute Idee, da man sich hier möglicherweise von im Internet angebotenen Services ausschließt, wenn man eine Domäne überschreibt. Die Domain lässt sich bei einem Registrar registrieren. Bei den meisten Webhosting Angeboten ist eine eigene Domäne mit inkludiert. Wenn man keinen Webserver im Internet betreiben will, aber eine Domäne für seine Zwecke braucht, kann man sie auch einzeln registrieren. Eine Domäne kostet normalerweise keine 20 € im Jahr. Hier sind ein paar Links, wo man sich eine Domäne registrieren kann. Diese Registrare unterstützen auch PayPal.
Aufbau einer Domäne
Die Domain wird in Zonen unterteilt. Jede Zone ist eine eigene Domain bzw. Subdomain. Z. B. cmoser.org ist eine eigene Zone im Nameserver des DNS-Providers. Jede Zone enthält einen oder mehrere Einträge, wie die Mailserver der Domäne, die einzelnen Hosts mit Namen und IP-Adresse und die Adressen der einzelnen Nameserver der Domäne. Es gibt auch eine Reverse-Lookup Zone, die die umgekehrte Auflösung von IP-Adressen in den Host-Namen übernimmt. Sekundäre Zonen werden vom primären DNS-Server geholt und helfen bei der Namensauflösung, wenn der Primäre DNS-Server eine höhere Last aufweist und dienen nebenbei auch der Redundanz. Fällt der primäre DNS-Server aus, hat man, wenn man auch einen Sekundären Nameserver betreibt, etwas Zeit sich um den Primären DNS-Server wieder zum Laufen zu bringen, bis die Namensauflösung nicht mehr funktioniert.
Jede Zone wird in einer eigenen Datei gespeichert. Diese Dateien befinden sich unter FreeBSD normalerweise unter /usr/local/etc/namedb/primary für primäre Zonen, /usr/local/etc/namedb/secondary für Sekundärzonen und /usr/local/etc/namedb/dynamic für dynamische Zonen.
Dynamische Zonen sind praktisch, wenn man einen DHCP-Server hostet und gerne die Clients, welche IP-Adressen über den DHCP-Server beziehen (wie z. B. Laptops, Handys, Tablets usw.), mit einer Namensauflösung versehen will. Im Artikel Raspberry PI und FreeBSD als DHCP-Server werde ich darauf näher eingehen.
Installation von BIND
Die für die Installation von BIND benötigten Pakete sind bind918 und bind-tools. Diese lassen sich einfach mit pkg installieren.
root@rpi# pkg install -y bind918 bind-tools
Um BIND bei jedem Systemstart automatisch zu starten muss man ihn noch in der /etc/rc.conf aktivieren.
root@rpi# sysrc named_enable=YES