![DNS: Auflösung einer Subdomain an einen anderen Nameserver delegieren](https://rvso.com/image/1502893/DNS%3A%20Aufl%C3%B6sung%20einer%20Subdomain%20an%20einen%20anderen%20Nameserver%20delegieren.png)
Ich richte zu Hause einen DNS-Server ein, um es mir einfacher zu machen, einige meiner lokalen Server mit Aliasnamen zu versehen, und auch als Projekt, um DNS besser zu verstehen. Da ich neu in diesem Bereich bin, verzeihen Sie mir bitte etwaige Fehler in der Terminologie (und korrigieren Sie sie, wenn Sie möchten)!
Der Zweck meines lokalen DNS-Servers besteht darin, meine Domäne für den Zugriff auf einige meiner lokalen Computer zu verwenden. Nehmen wir also an, meine Domäne ist my-domain.com
. Ich habe zu Hause einen Medienserver, auf den ich als zugreifen möchte media.my-domain.com
, und ich habe zwei lokale DNS-Server, die ich für diesen Zweck verwende. Diese DNS-Server delegieren für andere Abfragen an Google DNS.
Hier ist meine Zonendatei für , die auf meinem lokalen DNS-Server my-domain.com
gespeichert ist :/etc/bind/zones/db.my-domain.com
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.options
auf 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/24
ist mein lokales Subnetz, und ns1
hier ns2
sind mein primärer und sekundärer DNS-Server.
Ich verwende es my-domain.com
für andere Zwecke im Internet. Wenn ich beispielsweise admin.my-domain.com
darauf zugreife, werde ich zur Administratorkonsole einer öffentlich sichtbaren Website weitergeleitet. Das heißt, wenn Sie einen nslookup
Zugriff admin.my-domain.com
von den DNS-Servern von Google ausführen, sehen Sie, dass dieser einer global zugänglichen öffentlichen IP-Adresse zugeordnet ist.
Leider kann ich nach der Implementierung meiner lokalen DNS-Server nicht mehr admin.my-domain.com
richtig auflösen. Meine nslookup
Anfragen landen bei meinen lokalen DNS-Servern, die nicht für diese Subdomain konfiguriert sind, und ich erhalte von meinem lokalen DNS die Meldung „Keine Antwort“.
Stattdessen hätte ich gerne, dass meine DNS-Server Anfragen für my-domain.com
an Google DNS weiterleiten und nur Antworten für ns1.my-domain.com
, ns2.my-domain.com
, und bereitstellen media.my-domain.com
. Ich habe einige Fragen gesehen, die meinen ähnlich sind, aber die Antworten bestehen meist darin, für jede Subdomäne eine einzelne Zonendatei zu erstellen. Ist das wirklich die einzige Möglichkeit? Ich würde wirklich gerne sagen können: „Wenn ich eine Regel für angegeben habe, x.my-domain.com
dann folge dieser Regel. Andernfalls delegiere die Aufgabe an die nächste Stelle (in meinem Fall an Google DNS).“
Ich bin mir nicht sicher, wie ich das Problem mit Google beheben kann, da ich die Terminologie nicht wirklich verstehe und da ich ein absoluter Neuling bin, weiß ich nicht, wo ich anfangen soll, es selbst zu beheben. Ist das, worum ich bitte, überhaupt möglich? Für jede Hilfe, wie ich dieses Verhalten implementieren oder danach suchen kann, wäre ich sehr dankbar. Danke!
Antwort1
Das Problem besteht darin, dass Sie Bind so konfiguriert haben, dass es für ganz maßgeblich ist example.com
.
Daher müssen Sie Ihr lokales Bind so konfigurieren, dass es nicht nur Ihre internen DNS-Einträge, sondern auch eine Kopie aller Ihrer öffentlichen DNS-Einträge in der Zonendatei für speichert example.com
.
Anstatt Bind als autorisierend festzulegen, example.com
reservieren Sie eine Subdomäne von example.com für Ihre interne Verwendung, und machen Sie Ihren internen DNS nur dafür autorisierend. Erstellen Sie beispielsweise eine Zone namens home.example.com
und verwenden Sie media.home.example.com
. Auf diese Weise können Sie keine widersprüchlichen Einträge in Ihrem internen und öffentlichen DNS haben.