Response Policy Zones zum Überschreiben von DNS-Einträgen am BIND Nameserver nutzen
Es gibt unterschiedliche Szenarien, bei denen es notwendig werden kann im lokalen Netzwerk DNS-Einträge für einzelne Domains (egal ob eigene oder nicht durch einen selbst verwaltete) zu manipulieren. Sei es um den Zugriff auf externe Ressourcen aus dem internen Netzwerk zu unterbinden oder eine Split-DNS-Konfiguration für eine eigene von einem externen Domainserver verwaltet Domain zu realisieren.
Seit Version 9.8 unterstützt der BIND Nameserver das Konzept von Response Policy Zones mit der genau solche Anforderungen sehr einfach, ohne Domains am eigenen Nameserver zu verwalten und damit doppelt abzubilden, realisieren lassen.
Konfiguration
Fügen Sie im Abschnitt options {} der allgemeinen Konfiguration von BIND (unter Ubuntu ist das die Datei /etc/bind/named.conf.options) den folgenden Eintrag hinzu. Der Name der Zone ist frei wählbar und ich habe im Beispiel den Namen rpz-vpn gewählt (weil ich für meine VPN-Verbindung ein Split-DNS-Setup damit aufbaue).
response-policy {
zone "rpz-vpn";
};
Danach muss die Zone definiert werden. Unter Ubuntu passiert das in der Konfigurationsdatei /etc/bind/named.conf.local. Dabei wird auch die Konfigurationsdatei der Zone definiert, deren Name wieder frei definiert werden kann.
zone "rpz-vpn" {
type master;
file "/etc/bind/rpz-vpn-override";
allow-query { none; };
};
Die Datei /etc/bind/rpz-vpn-override orientiert sich am unten abgebildeten Aufbau und es können darin beliebige viele und vor allem auch unterschiedliche zu überschreibende Domains definiert werden. Es stehen wie bei den normalen DNS-Zonen-Dateien die verschiedenen Record-Typen bereit. Im unteren Fall wird die Domain internal.bartlweb.net überschrieben, um im internen Netzwerk (bzw. bei Zugriff mittels VPN) die interne IP-Adresse und nicht wie der öffentliche Nameserver die IP-Adresse meines Internetanschlusses zu liefern.
$TTL 1H
@ SOA LOCALHOST. named-mgr.example.com (1 1h 15m 30d 2h)
NS LOCALHOST.
; define all internal domains to overwrite - make them work in vpn
internal.bartlweb.net CNAME internalserver.local.
;test.example.com A 192.168.0.1
Fehlervermeidung
Um Fehler in den Konfigurationsdateien zu erkennen bzw. zu vermeiden bietet es sich an die BIND-Konfiguration mit dem folgenden Befehl auf Fehler zu prüfen:
named-checkconf -zj
Eine mögliche Fehlerquelle möchte ich explizit erwähnen, da mir diese doch etwas Kopfzerbrechen bereitet hat: Bennen Sie die Zonen-Datei für den RPZ-Eintrag nie nach dem schema db.*, da ansonsten der untenstehende Fehler auftritt.
/etc/bind/db.rpz:3: unknown RR type 'LOCALHOST.'
/etc/bind/db.rpz:6: file does not end with newline
zone rpz/IN: loading from master file /etc/bind/db.rpz failed: unknown class/type
zone rpz/IN: not loaded due to errors.
_default/rpz/IN: unknown class/type