DNS: Delegieren Sie die Auflösung einer Unterdomäne an einen anderen Nameserver

2

Ich richte zu Hause einen DNS-Server ein, um es mir zu erleichtern, einige meiner lokalen Server zu aliasen, und auch als Projekt, um DNS besser zu verstehen. Da ich neu in diesem Bereich bin, bitte ich Sie, eventuelle terminologische Fehler zu verzeihen (und diese zu korrigieren)!

Der Zweck meines lokalen DNS-Servers besteht darin, meine Domain für den Zugriff auf einige meiner lokalen Computer zu verwenden. Nehmen wir also an, meine Domain ist my-domain.com. Ich habe zu Hause einen Medienserver, auf den ich zugreifen möchte media.my-domain.com, und ich habe zwei lokale DNS-Server, die ich für diesen Zweck verwende. Diese DNS-Server werden für andere Abfragen an Google DNS delegiert.

Hier ist meine Zonendatei für my-domain.com, die /etc/bind/zones/db.my-domain.comauf meinem lokalen DNS-Server gespeichert ist ns1:

;
; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA ns1.my-domain.com. admin.my-domain.com. (
                  3     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
; name servers - NS records
@   IN  NS  ns1.my-domain.com.
@   IN  NS  ns2.my-domain.com.
;
; name servers - A records
ns1.my-domain.com.  IN  A   10.55.55.55
ns2.my-domain.com.  IN  A   10.55.55.56
;
; 10.55.55.0/24 - A records
media.my-domain.com.    IN  A   10.55.55.100

Hier ist meine Optionsdatei, die /etc/bind/named.conf.optionsauf meinem lokalen DNS-Server gespeichert ist ns1:

acl "trusted" {
    10.55.55.0/24; # home network
};
options {
    directory "/var/cache/bind";

    recursion yes;
    allow-recursion { trusted; };
    listen-on { 10.55.55.55; };
    allow-transfer {none; }; # disable zone transfers

    forwarders {
        8.8.8.8; # google1
        8.8.4.4; # google2
    };

    //========================================================================
    // If BIND logs error messages about the root key being expired,
    // you will need to update your keys.  See https://www.isc.org/bind-keys
    //========================================================================
    dnssec-validation auto;

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

Hier 10.55.55.0/24ist mein lokales Subnetz ns1und dort ns2sind meine primären und sekundären DNS-Server.

Ich verwende es my-domain.comfür andere Zwecke im Internet. Wenn ich also darauf zugreife admin.my-domain.com, rufe ich die Administratorkonsole einer öffentlich sichtbaren Website auf. Das heißt, wenn Sie ein ausführen nslookupauf admin.my-domain.comaus dem Google-DNS - Server werden Sie sehen , um es zu einem global zugänglichen öffentlichen IP - Adresse zugeordnet.

Nachdem ich meine lokalen DNS-Server implementiert habe, kann ich leider nicht admin.my-domain.comrichtig auflösen . Meine nslookupAnfragen treffen auf meine lokalen DNS-Server, die nicht für diese Unterdomäne konfiguriert sind, und ich erhalte "Keine Antwort" von meinem lokalen DNS.

Das Verhalten Ich mag würde, stattdessen ist für meine DNS - Server - Anfragen für weiterleiten my-domain.comzu Google DNS und nur Antworten geben für ns1.my-domain.com, ns2.my-domain.comund media.my-domain.com. Ich habe einige Fragen gesehen, die meinen ähnlich sind, aber die Antworten bestehen in der Regel darin, für jede Unterdomäne eine einzelne Zonendatei zu erstellen. Ist das wirklich der einzige Weg? Ich möchte wirklich sagen können: "Wenn ich eine Regel angegeben habe, x.my-domain.combefolgen Sie diese Regel. Andernfalls delegieren Sie die Kette (in meinem Fall an Google DNS)."

Ich bin mir nicht sicher, wie ich das mit Google beheben soll, da mir die Terminologie nicht wirklich klar ist und ich als absoluter Neuling nicht weiß, wo ich anfangen soll, sie selbst zu beheben. Ist das, wonach ich bitte, überhaupt möglich? Jede Hilfe, wie ich dieses Verhalten implementieren oder danach suchen könnte, wäre sehr dankbar. Vielen Dank!

Jake
quelle

Antworten:

2

Das Problem ist, dass Sie Bind so konfiguriert haben, dass es für das gesamte System maßgeblich ist example.com.

Sie müssen also entweder Ihre lokale Bindung so konfigurieren, dass sie nicht nur Ihre internen DNS-Einträge enthält, sondern auch eine Kopie aller Ihrer öffentlichen DNS-Einträge in der Zonendatei für example.com.

Alternativ dazu, anstatt Bind autorisierend für example.comSie zu machen, reservieren Sie eine Unterdomäne von example.com für Ihre interne Verwendung, und legen Sie fest, dass Ihr interner DNS nur dafür autorisierend ist. dh eine Zone mit dem Namen erstellen home.example.comund verwenden media.home.example.com. Auf diese Weise können in Ihrem internen und öffentlichen DNS keine widersprüchlichen Einträge vorhanden sein.

HBruijn
quelle