Ich habe eine Domäne example.com
und verwende Azure DNS, um alle Hostnamen aufzulösen, die vom Internet aus sichtbar sein sollen. Ich habe den mail.example.com
Verweis darauf definiert 198.51.100.123
und er kann von externen Clients problemlos aufgelöst werden.
Das example.com
wird auch in meinem LAN verwendet und löst mit bind alle lokalen IP-Adressen auf, was für die lokalen Hostnamen gut funktioniert. Mein DHCP-Server weiß auch damit umzugehen und aktualisiert die Zonendateien ordnungsgemäß. Alle DNS-Anfragen für andere Zonen werden an Cloudflare DNS weitergeleitet.
Ich möchte, dass mein Server den lokalen Nameserver verwendet und wenn er keinen Eintrag in der lokalen Zonendatei findet, soll er den Azure-Server kontaktieren und diesen prüfen. Wenn ich meiner Zonendatei die folgenden Einträge hinzufüge, funktioniert es für diese Hostnamen:
external-dns A 1.1.1.1
vpn NS external-dns
www NS external-dns
ftp NS external-dns
Platzhalter funktionieren in Bind9 nicht mehr, daher kann ich nicht verwenden * NS external-dns
. Gibt es eine andere Möglichkeit, dies zu erreichen?
Antwort1
Verwenden Sie eine response-policy
Zone anstelle einer Masterzone fürexample.com
Beim Versuch, einen Hostnamen aufzulösen, sucht Bind response-policy
zuerst in der Zonendatei und setzt die Suche fort, wenn es keine Antwort findet.
Hier ist ein Beispiel-Setup:
options {
# Your normal options
response-policy { zone "local_example_com"; };
};
zone "local_example_com" {
type master;
file "master/local_example.zone";
allow-query {none;};
};
Fügen Sie dann eine Zonendatei mit dem Namen hinzu, master/local_example.zone
die Folgendes enthält:
$TTL 24H
@ SOA LOCALHOST. named-mgr.example.com (1 1d 1h 30d 2h)
NS LOCALHOST.
host1.example.com A 192.168.1.1
host2.example.com A 192.168.1.2
host3.example.com A 192.168.1.3
host4.example.com A 192.168.1.4
Beim Versuch der Auflösung host1.example.com
wird die Antwort aus der Zone abgerufen response-policy
und beim Versuch der Auflösung mail.example.com
wird die Auflösung mithilfe example.com
von Nameservern durchgeführt.
Antwort2
Da ein Platzhalter nicht möglich ist, habe ich mich für einen anderen Ansatz entschieden:
- Alle externen Sites werden auf der Domäne gehostet
example.com
. - Alle internen Sites werden auf der Domäne gehostet
int.example.com
.
Es example.com
wurde nichts geändert und es ist weiterhin in Azure DNS verfügbar (wie immer). Der interne Bind-Server hostet jetzt die int.example.com
Domäne und der DHCP-Server wird ebenfalls aktualisiert, um int.example.com
als lokale Domäne zu pushen.
Ich möchte, dass meine internen Websites über HTTPS verfügbar sind. Daher muss ich in der Lage sein, mit LetsEncrypt Zertifikate für die int.example.com
Domäne zu erstellen. LetsEncrypt kann meine internen Dienste nicht erreichen, daher muss ich auf die DNS-Verifizierung zurückgreifen.
Ich habe die int.example.com
Zone als untergeordnete Zone example.com
in Azure DNS hinzugefügt. Diese Zone wird keine DNS-Einträge haben, da wir dafür den lokalen Server verwenden. Wir möchten keine internen Informationen an externe DNS-Server weitergeben. Ihr einziger Zweck ist die DNS-Verifizierung für LetsEncrypt, daher sollte AcmeSh über die richtigen Anmeldeinformationen verfügen, um TXT-Einträge zu erstellen/entfernen. Ich bin den Anweisungen gefolgtdieser Leitfadenum die richtigen Anmeldeinformationen zu erstellen. Mein Setup verwendet Azure DNS, aber es sollte mit jedem DNS funktionieren, das Subzonen unterstützt.