Damit Computer im Internet mit­ein­an­der kom­mu­ni­zie­ren können, besitzen alle Teil­neh­mer im Netz eine einmalige Adresse: Durch IP-Adressen wissen Clients genau, welche Server sie an­spre­chen sollen. Aber kein Nutzer merkt sich die Zif­fern­fol­gen dieser Adressen, sondern nur Domain-Namen. Dafür ist das Domain-Name-System (DNS) da: Es wandelt Domains in Zahlen um und umgekehrt. Dazu müssen Clients erst einen oder mehrere DNS-Server anfragen, bevor sie die richtige Adresse geliefert bekommen. Das kostet mitunter wertvolle Zeit. Deshalb kann es sinnvoll sein, die In­ter­net­ver­bin­dung zu be­schleu­ni­gen, indem man sich einen eigenen DNS-Server ein­rich­tet. Ein Raspberry Pi, der kleine aber viel­sei­ti­ge Computer, bietet dafür eine sehr gute Basis. Wir erklären Ihnen, wie DNS funk­tio­niert und wie Sie Ihren eigenen DNS-Server aufsetzen können.

Was genau ist DNS?

Das Domain-Name-System hilft Ihnen, sich in Netz­wer­ken, die auf IP-Adressen basieren, zu­recht­zu­fin­den. In die Adress­zei­le Ihres Browsers geben Sie für ge­wöhn­lich eine Domain wie www.example.org ein. Für die Kom­mu­ni­ka­ti­on im Internet benutzen Computer al­ler­dings IPv4- oder IPv6-Adressen. Damit die Ver­stän­di­gung dennoch funk­tio­niert, muss die ein­präg­sa­me Domain um­ge­wan­delt werden. Die so­ge­nann­te Na­mens­auf­lö­sung geschieht unter Ver­wen­dung von DNS-Servern. Dafür sollte der Browser zunächst auf einen Cache zugreifen. Viel­leicht ist die Adresse dem eigenen System ja bereits bekannt und muss daher gar nicht angefragt werden.

Sollte dies nicht der Fall sein, wird die Anfrage an einen oder mehrere DNS-Server wei­ter­ge­lei­tet. Zunächst kommt hierfür meistens der DNS-Server des In­ter­net­pro­vi­ders in Frage. Dieser gleicht die Anfrage mit seiner Datenbank ab und liefert im Idealfall ein Ergebnis. Wenn er keinen Eintrag für die Domain haben sollte, wird direkt bei einem der 13 Root-Name­ser­ver des Internets nach­ge­fragt. Dort sind alle Adressen des World Wide Webs ge­spei­chert.

Im Zu­sam­men­hang mit DNS ist auch zu beachten, dass die meisten Teil­neh­mer des Internets, vor allem die Clients von ge­wöhn­li­chen In­ter­net­nut­zern, keine feste IP-Adresse besitzen. In­ter­net­pro­vi­der vergeben IP-Adressen innerhalb ihres Netzes nämlich meist nur für 24 Stunden. Danach wird eine sehr kurze Zwangs­tren­nung ein­ge­lei­tet, die In­ter­net­ver­bin­dung wird dabei un­ter­bro­chen, und der Teil­neh­mer bekommt eine neue IP-Adresse zu­ge­wie­sen. Das ist für ge­wöhn­lich kein Problem, denn Clients werden selten von außerhalb des lokalen Netzwerks an­ge­spro­chen, schließ­lich sind sie es, die Anfragen an Server senden – und nicht an­ders­her­um.

Für bestimmte An­wen­dungs­fäl­le ist es aber notwendig, einen eigenen Server ein­zu­rich­ten: Remote-Desktops oder ein eigener, kleiner Game­ser­ver bei­spiels­wei­se. In solchen Fällen setzt man auf Dynamic DNS. Über einen DDNS-Anbieter bekommt der heimische Server eine Domain zu­ge­wie­sen über die er durch­gän­gig er­reich­bar ist. Wenn Sie also Ihren selbst ge­hos­te­ten DNS-Server auch von außerhalb Ihres lokalen Netzes jederzeit an­spre­chen möchten, sollten Sie über DynDNS nach­den­ken.

vServer / VPS
VPS un­schlag­bar günstig auf Dell En­ter­pri­se Servern
  • 1 Gbit/s, un­be­grenzt Traffic & mehr Cores
  • Min­des­tens 99,99% Ver­füg­bar­keit & ISO-zer­ti­fi­zier­te Re­chen­zen­tren
  • Aus­ge­zeich­ne­ter 24/7 Premium-Support mit per­sön­li­chem Berater

Was bringt ein eigener DNS-Server?

Aus ganz un­ter­schied­li­chen Gründen greifen einige Nutzer lieber auf einen eigenen DNS-Server zurück, statt auswärts nach den IP-Adressen zu suchen. Die Ein­rich­tung eines eigenen Servers ist besonders dann sinnvoll, wenn mehrere Geräte und Personen innerhalb des Netzwerks online gehen, z. B. in einer größeren Familie, einer WG oder auch einem kleineren Büro.

  • Ge­schwin­dig­keit: Eine Web­an­fra­ge läuft – falls kein Cache-Eintrag vorhanden ist – mitunter über mehrere Router und Server, bis der Webinhalt beim Nutzer ankommt. Zwar bewegen sich diese War­te­zei­ten meist im Bereich von Mil­li­se­kun­den, aber wenn gar nicht erst eine Ver­bin­dung zum DNS-Server des In­ter­net­an­bie­ters aufgebaut werden muss, kann der Vorgang noch be­schleu­nigt werden.
  • Pri­vat­sphä­re: Damit das Domain-Name-System funk­tio­niert, müssen die Anfragen an fremde Server wei­ter­ge­lei­tet werden. Dabei entstehen Spuren im Internet, die manche Nutzer gerne vermeiden möchten. Mit einem eigenen DNS-Server bleiben viele Daten bei Ihnen.
  • Si­cher­heit: Wer seinen eigenen DNS-Server hostet, hat auch die Kontrolle über die Einträge. Cy­ber­kri­mi­nel­le versuchen gerne, sich bei Anfragen an den DNS-Server des Providers da­zwi­schen zu klinken und eine falsche IP-Adresse aus­zu­lie­fern. Statt der ei­gent­lich an­vi­sier­ten Website wird dann eine andere aus­ge­ge­ben. Dies ist besonders beim On­line­ban­king extrem ri­si­ko­reich: Werden sensible Kon­to­da­ten auf einer exakten Kopie der Bank-Website ein­ge­ge­ben, haben die Kri­mi­nel­len schnell die Geld­re­ser­ven ge­plün­dert.
  • Wer­be­fil­ter: Ad-Blocker greifen auf eine Liste von Wer­be­ser­vern, die gesperrt werden sollen, zurück. Dies kann auch ein selbst­er­stell­ter DNS-Server leisten. Damit können Sie sogar alle Geräte in Ihrem Heim­netz­werk auf einmal von Wer­be­ein­blen­dun­gen befreien, ohne dass Sie auf jedem Gerät extra Software in­stal­lie­ren müssen.
  • Ju­gend­schutz: Was mit Werbung funk­tio­niert, ist auch sinnvoll in puncto Ju­gend­schutz. Server, die ju­gend­ge­fähr­den­de Inhalte be­reit­stel­len, können über ein selbst­ver­wal­te­tes DNS einfach geblockt werden.
  • Lern­ef­fekt: Viele Nutzer in­stal­lie­ren ihre eigenen DNS-Server schlicht, um mehr über die Funk­ti­ons­wei­sen des Internets zu verstehen. Strom kommt aus der Steckdose und Websites aus dem Browser: Wer aber die Technik dahinter verstehen möchte, hat mit solchen Do-it-yourself-Projekten groß­ar­ti­ge Lern­ef­fek­te – wie im Übrigen mit vielen anderen Ideen für den Raspberry Pi.

Mit Raspberry Pi einen DNS-Server ein­rich­ten

Wenn Sie auf Ihrem Raspberry Pi einen DNS-Server in­stal­lie­ren möchten, brauchen Sie neben dem Mi­ni­rech­ner noch:

  • SD-Karte mit in­stal­lier­tem Rasbian
  • Ethernet-Ver­bin­dung zum Internet-Router
  • Strom­ver­sor­gung per Micro-USB-Kabel
  • SSH-Client (z. B. PuTTY)

Als Grundlage für DNS auf dem Raspberry Pi setzen wir in diesem Beispiel auf BIND. Bei BIND handelt es sich um eine Open-Source-Software, die auf den Berkeley Internet Name Domain Server zu­rück­geht. In­zwi­schen ist das Programm in seiner neunten Version vorhanden und wird vom Internet Software Con­sor­ti­um (ISC) wei­ter­ent­wi­ckelt.

Zunächst müssen Sie si­cher­stel­len, dass der Raspberry Pi innerhalb des lokalen Netzwerks eine statische IP-Adresse zu­ge­wie­sen bekommt. Dafür öffnen Sie die Netz­werk­kon­fi­gu­ra­ti­on:

sudo nano /etc/network/interfaces

Dort weisen Sie dem Raspberry Pi eine einmalige IP-Adresse zu.

Tipp

Bei Nano handelt es sich um einen einfachen Linux-Editor, den Sie auf jeden Fall auf Ihrem Raspberry Pi in­stal­lie­ren sollten.

Nun können Sie BIND in­stal­lie­ren. Es ist sinnvoll, neben dem ei­gent­li­chen Programm bind9 auch die beiden Pakete bind9utils und dnsutils zu in­stal­lie­ren. Diese sind zwar nicht notwendig, enthalten aber einige nützliche Werkzeuge für die Wartung Ihres neuen DNS-Servers. Wenden Sie folgenden Befehl an:

sudo apt-get install bind9 bind9utils dnsutils

Nun ist bind9 auf Ihrem System in­stal­liert. Al­ler­dings müssen sie, bevor Sie Ihren Raspberry Pi als DNS-Server verwenden können, noch ein paar Ein­stel­lun­gen vornehmen. Öffnen Sie deshalb nun die Kon­fi­gu­ra­ti­ons-Datei von bind9:

sudo nano /etc/bind/named.conf.local

Dort sollten Sie nun zwei Zonen ein­rich­ten: Eine für den Forward-Lookup, bei dem die IP-Adresse zur Domain gesucht wird, und eine für den Reverse-Lookup mit der um­ge­kehr­ten Fra­ge­stel­lung.

sudo nano /etc/bind/named.conf.local 
    zone "home.lan" IN {
            type master;
            file "/etc/bind/db.home.lan";
      };
    zone "1.168.192.in-addr.arpa" {
            type master;
            file "/etc/bind/db.rev.1.168.192.in-addr.arpa";
      };

Im Code ist zu erkennen, dass Sie zwei Dateien (db.home.lan und db.rev.1.168.192.in-addr.arpa) zur De­fi­ni­ti­on der Zonen verwenden. Diese müssen Sie aber erst einmal erstellen. Da Sie die Dateien selbst anlegen, können Sie diese auch benennen, wie Sie möchten, müssen dies dann aber auch an allen ent­spre­chen­den Stellen so eingeben. Erstellen Sie zunächst die Datei für den Forward-Lookup:

sudo nano /etc/bind/db.home.lan
    
        home.lan. IN SOA raspberry.home.lan. hostmaster.home.lan. (
             2017081401 ; serial
                8H ; refresh
                4H ; retry
                4W ; expire
                1D ; minimum
        )
        home.lan. IN NS raspberry.home.lan.
        home.lan. IN MX 10 raspberry.home.lan.
        localhost        IN A 127.0.0.1
        raspberry        IN A 192.168.1.31
        router             IN A 192.168.1.1

Die letzten beiden Einträge innerhalb der Datei müssen Sie anpassen. Geben Sie dort die IP-Adresse Ihres Raspberry Pi (dem Sie zu Anfang eine statische IP-Adresse zu­ge­wie­sen haben) und die Ihres Routers ein. Achten Sie auch darauf, dass Domain-Namen hier immer mit einem Punkt ab­ge­schlos­sen werden. Am Anfang der Datei, nach deren Se­ri­en­num­mer, legen Sie fest, wie viel Zeit zwischen re­gel­mä­ßi­gen Aktionen liegen soll. Die beiden Angaben NS und MX (siehe MX-Record) legen fest, dass sowohl der Name-Server als auch der Mail-Server vom Raspberry Pi gestellt werden.

Tipp

Zu Beginn der Dateien geben Sie diesen immer eine Se­ri­en­num­mer: Es hat sich das Format YY­YYMMDDXX ein­ge­bür­gert, also das Datum (in der Rei­hen­fol­ge Jahr, Monat, Tag) plus eine auf­stei­gen­de Se­ri­en­num­mer – falls Sie mehrere Versionen an einem Tag erstellen.

Nun erstellen Sie noch die Reverse-Zone-Datei:

sudo nano /etc/bind/db.rev.1.168.192.in-addr.arpa
    @ IN SOA raspberry.home.lan. hostmaster.home.lan. (
        2017081401 ; serial
        8H ; refresh
        4H ; retry
        4W ; expire
        1D ; minimum
    )
               IN NS raspberry.home.lan.
    1         IN PTR router.home.lan.
    31        IN PTR raspberry.home.lan.

Dieses Beispiel geht davon aus, dass Ihre lokale Netz­werk­adres­se mit 192.168.1. beginnt. Sollte dies nicht der Fall sein, müssen Sie den richtigen Adress­raum in der Datei und dem Da­tei­na­men de­fi­nie­ren. Denken Sie daran, dass dann auch ein anderer Dateiname in /etc/bind/named.conf.local an ent­spre­chen­der Stelle ein­zu­tra­gen ist.

Wenn Sie auf Ihrem Raspberry Pi einen DNS-Server in­stal­lie­ren, fungiert dieser als Cache von DNS-Anfragen. Das heißt, sobald Sie einmal eine Na­mens­auf­lö­sung angefragt haben, bleibt der Eintrag auf Ihrem DNS-Server ge­spei­chert. Fürs Erste werden also DNS-Anfragen noch auf andere Server wei­ter­ge­lei­tet. Welche Server dies sind, legen Sie in /etc/bind/named.conf.options fest. Öffnen Sie dafür die Datei und ändern Sie die IP-Adressen im Eintrag „For­war­ders“:

sudo nano /etc/bind/named.conf.options 
    forwarders {
      1.2.3.4;
      5.6.7.8;
    };

Hier tragen Sie bei­spiels­wei­se die IP-Adresse des DNS-Servers Ihres In­ter­net­pro­vi­ders ein oder die eines offenen Systems. Bekannt ist z. B. das Angebot von Google (8.8.8.8). Wer sich un­ab­hän­gi­ger von kom­mer­zi­el­len Anbietern machen möchte, kann aber auch ein freies System wie das des Di­gi­tal­cou­ra­ge e. V. (85.214.20.141) wählen.

Nun haben Sie auf Ihrem Raspberry Pi den DNS-Server mit BIND kon­fi­gu­riert. Damit die Än­de­run­gen wirksam werden, sollten Sie das Programm an dieser Stelle neu­star­ten:

sudo service bind9 restart

Oder:

sudo service bind9 stop
sudo service bind9 start

Falls beim Starten des DNS-Servers Fehler auftreten, lohnt es sich, einen Blick in die Logdatei unter /var/log/syslog zu werfen. Damit Sie nach einem Neustart Ihres Raspberry Pis den DNS-Server nicht erneut per Hand starten müssen, können Sie diesen in den Autostart des Systems legen:

sudo update-rc.d bind9 defaults

Nun müssen Sie nur noch Ihren neuen DNS-Server in den Ein­stel­lun­gen Ihres Routers eintragen, damit Anfragen zur Na­men­auf­lö­sung über Ihren Raspberry Pi laufen. Tragen Sie dazu in den Ein­stel­lun­gen des Geräts (dieses lässt sich meist über eine Web­ober­flä­che aufrufen) die IP-Adresse des Raspberry Pi ein. Nun haben Sie Kontrolle über die DNS-Einträge und können bestimmte Server blocken, um sich bei­spiels­wei­se vor Seiten zu schützen, die Ihnen schaden wollen. Dazu müssen Sie DNS-Sperren ein­rich­ten. Dies geschieht in einer Datei, die Sie zunächst in die Kon­fi­gu­ra­ti­ons­da­tei von bind9 eintragen:

sudo nano /etc/bind/named.conf

Die Datei wird als neuer Eintrag unter die bereits vor­han­de­nen eingefügt und mit einem Semikolon ab­ge­schlos­sen:

include „/etc/bin/named.conf.blocked“;

In diese Datei tragen Sie nun die Domains ein, die Sie blocken möchten. Damit Sie wissen, welche Domains gesperrt werden sollen, können Sie auf ver­schie­de­ne Listen zugreifen. In diesem Beispiel verwenden wir eine Liste des DNS-BH-Projekts, die eine Zone-File für BIND be­reit­stel­len. Diese können Sie her­un­ter­la­den und mit einem Text­edi­tor öffnen. Einträge dort sind bereits im richtigen Format und können deshalb einfach in Ihre Block­lis­te kopiert werden. Einträge müssen – auch wenn Sie andere Quellen verwenden – dieses Format haben:

zone "malware-example.ga"  {type master; file "/etc/namedb/blockeddomain.hosts";};

Am Ende der Zeile wird eine Datei genannt, die aus­ge­führt wird, wenn die ent­spre­chen­de Domain auf­ge­ru­fen werden soll. Diese Datei legen Sie so an:

sudo nano /etc/namedb/blockeddomain.hosts

Dort fügen Sie folgenden Code ein:

$TTL        86400
@             IN            SOA         raspberry.home.lan. hostmaster.home.lan. (
                                                        2017081401 ; serial
                                                        8H ; refresh
                                                        2H ; retry
                                                        10D ; expire
                                                        1D ; minimum
)
    NS raspberry.home.lan.
    A 127.0.0.1
* IN            A             127.0.0.1

Achten Sie darauf, dass auch hier wieder die richtigen Werte für Ihre eigene Domain (in diesem Fall raspberry.home.lan) ein­ge­tra­gen sind. Starten Sie bind9 ein weiteres Mal neu. Nun sollte Ihr DNS-Server korrekt kon­fi­gu­riert und start­be­reit sein.

Tipp

Mit einem Raspberry Pi können Sie auch andere Server aufsetzen: Erfahren Sie, wie Sie einen Webserver oder einen Mail­ser­ver mit dem Mi­ni­com­pu­ter erstellen!

Zum Hauptmenü