Ich habe eine einfache Installation mit Debian als Gast in Virtualbox. Ich habe das resolvconf
Paket installiert. Die Datei resolv.conf ist diese:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 10.3.x.x
nameserver 10.219.x.x
Ich habe Nameserver über die GUI (Anwendungen/Systemtools/Netzwerktools) hinzugefügt.
8.8.8.8 ist Googles DNS und ich möchte es zum Auflösen von Internetadressen verwenden. 10.3.xx und 10.219.xx werden zum Auflösen interner Domänen wie teleportal.company.intra benötigt.
Wenn ich diese Nameserver in resolv.conf habe (und 8.8.8.8 ist der erste), erhalte ich bei der internen Abfrage einer Adresse eine Fehlermeldung:
> host teleportal.company.intra
Host teleportal.company.intra not found: 3(NXDOMAIN)
Wenn ich jedoch die nameserver
Adresse des zweiten explizit als Nameserver für nslookup einstelle, funktioniert es:
» nslookup teleportal.company.intra 10.3.x.x
Server: 10.3.x.x
Address: 10.3.x.x#53
teleportal.company.intra canonical name = proxy.dummy1.dummy2.private.
Name: proxy.dummy1.dummy2.private
Address: 172.27.x.x
Name: proxy.dummy1.dummy2.private
Address: 172.27.x.x
In der resolv.conf-Dokumentation heißt es, dass die nameserver
Einträge der Reihe nach ausprobiert werden, wenn einer von ihnen die Abfrage nicht lösen kann. Wenn ich jedoch bei der Verwendung das Debuggen einschalte, nslookup
sehe ich, dass nslookup
nicht einmal andere Einträge ausprobiert werden, sondern nur der erste.
Wenn ich die Reihenfolge ändere nameservers
, werden interne Adressen richtig aufgelöst (nslookup verwendet weiterhin nur den ersten Eintrag).
Wie kann ich drei Nameserver einrichten, sodass die Dienstprogramme sie alle der Reihe nach verwenden?
Antwort1
Die resolv.conf
Liste der Nameserver wird nur im Falle eines Timeouts nacheinander kontaktiert. Nicht, wenn ein Nameserver autoritär sagt „es gibt keine solche Domain“ ( NXDOMAIN
). In Ihrem Fall 8.8.8.8
weiß der DNS anscheinend nichts davon teleportal.company.intra
und der Resolver hat angehalten, als er das bekam NXDOMAIN
.
Wenn möglich, sollten Sie einen DNS-Server konfigurieren und ihn für alle Ihre Auflösungen verwenden und den DNS-Server entscheiden lassen, wie der Name aufgelöst wird. Wenn es 10.3.x.x
Ihr Intranet-DNS-Server ist, könnte er wahrscheinlich auch die Internet-Hostnamen auflösen.
Wenn Sie die Anfragen jedoch wirklich an verschiedene DNS-Server basierend auf den Namen weiterleiten möchten, können Sie Folgendes versuchen:Abonnieren. Es handelt sich um ein zwischenspeicherndes DNS-Proxy-Programm, das lokal ausgeführt wird. Installieren Sie es ( apt-get install pdnsd
) und fügen Sie Ihren localhost ( 127.0.0.1
) zu resolv.conf hinzu. In der pdnsd.conf
Konfigurationsdatei können Sie angeben, welche DNS-Server basierend auf der Namensübereinstimmung kontaktiert werden sollen. Ein Beispielabsatz für Ihr /etc/pdnsd.conf
:
server {
label= "google";
exclude = ".company.intra";
ip = 8.8.8.8;
}
server {
label= "intra";
include = ".company.intra";
ip = 10.3.x.x;
}
Ich habe viele andere Parameter aus der obigen Datei herausgeschnitten. Sie sollten der Dokumentation und der Beispielkonfigurationsdatei folgen, die mit dem Debian-Paket geliefert wird, um Ihr einzurichten pdnsd.conf
.
Antwort2
ICHdenkendass der Resolver auf sekundäre (oder tertiäre oder ...) DNS zurückgreiftnur wenn der erste (oder zweite oder ...) fehlschlägt.
In diesem Fall die Abfragescheitert nicht, gibt es korrekt zurück NXDOMAIN
, d. h. der Domänenname existiert nicht.
Wenn Sie wirklich Googles DNS (oder ein beliebiges anderes DNS) verwenden möchten, um externe Domänen aufzulösen (anstelle Ihrer internen Nameserver), können Sie Ihre Server 10.3.x.x
so konfigurieren, dass sie nur für Ihre internen Namen 10.219.x.x
dienen authoritative
und alle anderen Abfragen an externe DNS weiterleiten. Verwenden Sie dann Ihre internen Nameserver alsnurNameserver auf Ihren internen Computern.