Kann BIND eine Antwort basierend auf der Anforderung einer IP-Adresse ändern?

7

Hallo Server Fehler ,

Ich arbeite für ein Krankenhaus, das sein Netzwerk mit 192.168.0.0/23 eingerichtet hat (bevor ich ankam). Wir möchten, dass Laptops und mobile Clients über VPN von entfernten Standorten aus eine Verbindung herstellen, aber das Krankenhausnetzwerk stößt bei den meisten Heimroutern sehr stark zusammen. Ich habe das Management unter Druck gesetzt, uns Zeit zu geben, dies zu ändern, aber da es sich um ein Krankenhaus mit Servern / Geräten / usw. handelt, war dies unmöglich zu arrangieren. Deshalb haben wir das Problem mit einem 1: 1-Wert von 10.22.0.0/23 behoben.

Das Problem: Clients können über die IP-Adresse 10.22.0.0/23 ohne Probleme eine Verbindung herstellen und auf Ressourcen zugreifen. Wenn sie jedoch den DNS-Server abfragen, erhalten sie 192.168.0.0/23 Antworten. Gibt es in BIND eine korrekte Möglichkeit, diese im laufenden Betrieb in 10.22.0.0/23 Adressen zu übersetzen, wenn die Abfrage aus dem VPN-Subnetz stammt? Betonung auf richtig, da ich es über BIND-Ansichten mit den folgenden in cron arbeiten habe:

sed -e 's/192.168.0./10.22.0./' -e 's/192.168.1./10.22.1./' /var/lib/bind/db.company.local > /var/lib/bind/db.company.local.ext && /usr/sbin/rndc reload company.local in extView

Dies funktioniert hervorragend, wird jedoch um 15 bis 20 Minuten verzögert, da das Zurückschreiben des BIND-Journals in die Datei db.company.local ungefähr 15 Minuten dauert.

Ich habe ein bisschen über RPZ gelesen, aber die Informationen scheinen fleckig. Kann mich jemand in die richtige Richtung weisen? Wenn nicht, können Sie meine Lösung eleganter gestalten?

EDIT: Ich möchte nur klarstellen, dass ich bereits BIND-Ansichten verwende, aber ich mache es mit zwei Zonen. Ich generiere meine zweite Zone aus der ersten, sende sie durch sed, um die IPs zu ändern, und führe in dieser Ansicht ein rndc-Reload für diese Zone durch. Dies hat eine große Verzögerung. Gibt es eine Möglichkeit, dieselbe Zonendatei in beiden Ansichten zu verwenden und die DNS-Antwort zur Abfragezeit zu ändern?

Vielen Dank!

Abscheulicher Brigandier
quelle
1
Klingt so, als würden Sie nach Bindungsansichten suchen.
Michael Hampton
Wenn ich bereits Ansichten verwende (Zeile direkt über dem Codeblock), scheint es einfach nicht elegant / korrekt zu sein, wie ich meine zweite "übersetzte" Zonendatei erstellen muss, und ich frage mich, ob ich überhaupt eine andere Zonendatei haben soll, wenn Es gibt eine "on the fly" -Regex-Methode, mit der die Einträge zur Antwortzeit geändert werden können.
Vile Brigandier

Antworten:

1

Dies sollte ein Prozessproblem sein. Normalerweise fügen Administratoren den Zonendateien beider Ansichten neue Datensätze hinzu. Zwingen Sie sie, Skripte zu verwenden, wenn ihr Speicher schlecht ist. Disziplinieren Sie sie, wenn sie sich weigern, die Skripte zu verwenden. Aber wenn es ein Irrenhaus ist und Sie dies nur brauchen, um zu funktionieren, können Sie dies möglicherweise mit ansichtsbasierten Antwortrichtlinien tun.

Angenommen, Sie haben Datensätze, die so aussehen:

$ORIGIN db.company.local.net.
test1   IN A 10.22.0.1
test2   IN A 10.22.1.255

Definieren Sie in den Ansichtsoptionen für Ihre 192space-Ansicht die folgende Antwortrichtlinie:

options {
    response-policy { zone "192remap.rpz"; };
}

zone "192remap.rpz" {
    type master;
    file "192remap.rpz.zone";
};

Die Antwortrichtlinie wird verwendet, um alle 10-Space-IPs in 192space umzuschreiben. Dies ist wie jede andere Zonendatei, aber die NS-Datensätze sind bedeutungslos und die Datensätze haben spezielle Bedeutungen. Da das Aufschreiben jeder einzelnen IP-Adress-Neuzuordnung von Hand mühsam wäre, verwenden wir $GENERATEBlöcke, um die Zonendatei für Sie zu füllen .

@            IN    SOA  localhost. root.localhost.  (
                      2   ; serial 
                      3H  ; refresh 
                      1H  ; retry 
                      1W  ; expiry 
                      1H) ; minimum 

             IN    NS    localhost.

; 32.$.0.22.10.rpz-ip. -> 10.22.0.$/32
$GENERATE 0 255 32.$.0.22.10.rpz-ip. A 192.168.0.$
$GENERATE 0 255 32.$.1.22.10.rpz-ip. A 192.168.1.$

Dadurch werden nicht nur alle IP-Adressen 10.22.0.0/23 im Abschnitt ANTWORT einer DNS-Antwort neu zugeordnet, sondern auch alle hinterhältigen IP-Adressen abgefangen, die aus irgendeinem Grund in den Abschnitten AUTHORITY oder ADDITIONAL angezeigt werden. Bei einer Anfrage für test1.db.company.local.net.(10.22.0.1) sollte die Antwort auf 192.168.0.1 umgeschrieben werden, und zwar nur für die Clients, die Ihre 192space-Ansicht treffen.

Hoffe das hilft und lass es uns wissen, wenn es funktioniert. Weitere Informationen zu RPZ und Links zur Dokumentation finden Sie in einer anderen Antwort, die ich vor einigen Monaten geschrieben habe.

Andrew B.
quelle
In dieser Antwort fehlte ursprünglich das Präfix / 32, stellen Sie also sicher, dass Sie das neueste Beispiel verwenden.
Andrew B
Andrew, danke. Genau das habe ich gesucht. Ich stimme voll und ganz zu, wie damit umgegangen werden soll. Leider mag mein Management Active Directory-automatisierte DNS-Einträge sehr. : - \
Vile Brigandier
7

Ja, Sie können dies mit Bindungsansichten tun:

http://www.zytrax.com/books/dns/ch7/view.html

Grundsätzlich definieren Sie jede Ansicht als Subnetz, und dann verwaltet jede Ansicht ihre eigene Zonendatei. Abhängig von der Quell-IP / dem Subnetz der DNS-Abfrage erhalten Sie eine andere "Ansicht".

Dies ist üblich, dass Nameserver in einer "internen" / "externen" Ansicht verwendet werden, sodass DNS-Namen in der externen Ansicht öffentlich aufgelöst werden, in der internen LAN jedoch "intern" in die private IP des Hosts aufgelöst werden, wenn sie von der internen abgefragt werden Privatsprache (n).

nandoP
quelle
Ich würde dies positiv bewerten, wenn ich genug Wiederholungen auf diesem Stapel hätte, sorry. Ich verwende derzeit Ansichten mit einer zweiten Zonendatei gemäß Ihrem Vorschlag, aber die Art und Weise, wie ich diese zweite Zonendatei generiere, hat eine Verzögerung und scheint etwas manipuliert zu sein. Ich verstehe, dass ich weiterhin Ansichten verwenden muss, aber gibt es Anweisungen, die so etwas wie einen regulären Ausdruck für das Ergebnis tun und es im laufenden Betrieb ändern können, anstatt vollständig separate Zonen zu verwenden? Dh "Die Hauptzone sagt, dass dies 192.168.1.5 ist, aber der Anforderer ist ein VPN-Benutzer. Ich werde dies einfach in 10.22.1.5 umschreiben und es ihnen zuführen."
Vile Brigandier