Der Schizophrene DNS

Heute möchte ich euch ein kleines, praktisches Feature von Nameservern am Beispiel BIND vorstellen, das auf den ersten Blick vielleicht ein bisschen seltsam aussieht, jedoch irre praktisch ist: BIND kann je nach Anfrage verschiedene IPs für den selben Namen liefern.

Wozu braucht man das? Server hängen selten direkt im Internet und haben daher hinter der Firewall meistens einen anderen Nummernkreis in der sogenannten DMZ. Das heißt auch, dass die Server zum Teil auch direkt miteinander kommunizieren könnten, sofern es die Konfiguration zulässt.

Wenn ich Server nicht unbedingt per IP ansprechen will, sondern in den Konfigurationen eben einen Namen stehen haben möchte, bleibt mir der Weg über /etc/hosts oder über einen Nameserver, wobei ersteres nicht unbedingt pflegeleicht ist und sogar einigen Aufwand bedeutet. Beim Nameserver habe ich zumindest nur eine zentrale Stelle wo ich an den Konfigurationsdateien etwas ändern muss…

Um das nun zu realisieren, beginnen wir den Umbau der named.conf mit einer ACL mit welcher wir eine Gruppe definieren, in unserem Fall my-dmz, in welcher der IP Kreis 192.168.1.1-254 vertreten ist:

acl my-dmz {
    192.168.1.0/24;
 };

Dann erweitern wir die Konfiguration um sogenannte ‚views‘ mit den vorhin angelegten ACLs, in die wir unsere aktuellen Zonen verschieben. Besonderheiten dabei sind, dass wir intern keine anderen DNS Server verständigen müssen und wir extern keine rekursiven Abfragen zulassen:

view "internal" {
        match-clients { my-dmz; };
        recursion yes;
        notify no;

        zone "." in {
                type hint;
                file "/var/bind/root.cache";
        };

        zone "localhost" IN {
                type master;
                file "pri/localhost.zone";
                notify no;
        };

        zone "127.in-addr.arpa" IN {
                type master;
                file "pri/127.zone";
                notify no;
        };


        zone "example.com" {
                type master;
                file "/var/bind/pri/example.local.hosts";
        };

};

view "external" {
        match-clients { !my_dmz; any; };

        zone "example.com" {
                type master;
                file "/var/bind/pri/example.com.hosts";
        };
};

In den entsprechenden Zone-Files sind dann die Einträge entsprechend für die Hosts gesetzt. Diese müssen nicht gleich sein, sondern können den Bedürfnissen entsprechend angepasst werden. Das Ergebnis ist dann ein DNS Server, der je nach Quelle der Anfrage die passenden Antworten gibt. Ein Schizophrener DNS Server. Ein Plus an Sicherheit.

Author:

2 thoughts on “Der Schizophrene DNS”

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert