Ich habe eine Anwendung auf einem Linux-Rechner, die Reverse Lookup zur Auflösung von Hostnamen verwendet. Das Problem ist, dass ich in meiner resolve.conf zwei Sätze DNS-Server habe (insgesamt 4 Server), wobei jeder Satz einem anderen IP-Bereich entspricht. Für einen IP-Bereich funktioniert es einwandfrei, je nachdem, welcher zufällig im ersten aufgelisteten Server enthalten ist, aber wenn ich versuche, den anderen Bereich per nslookup aufzurufen, wird „nicht gefunden: 3(NXDOMAIN)“ gemeldet. Wenn es einfach den nächsten Server in der Liste versuchen würde, wäre es erfolgreich … gibt es eine Möglichkeit, dies zu erreichen? Die DNS-Server sind nur für ihre jeweiligen Bereiche maßgebend.
Antwort1
Ich würde dnsmasq installieren, es (127.0.0.1) zum einzigen Nameserver machen und es so konfigurieren, dass es diesen oder jenen Server für diese oder jene Domäne mit der dnsmasq.conf-Direktive „server“ abfragt.
Wenn es eine Möglichkeit gibt, einen anderen Server auf einer NXDOMAIN als einen DNS-Server auszuprobieren, wäre dies die Verwendung eines lokalen DNS-Servers mit dieser Funktionalität. Der Linux-Resolver lässt dies nicht zu. PowerDNS kann so konfiguriert werden, dass bei jeder Abfrage Befehle ausgeführt werden. Als letzten Ausweg können Sie dies also immer tun.
Antwort2
Eine Antwort an @cstamas, nur um zu klären, wie das VPN-Problem mit dnsmasq gelöst werden kann.
Angenommen, Ihr Computer befindet sich in der Domäne homenetwork.test mit den IP-Adressen 10.1.0.0/16 und der DNS-Server ist 10.1.0.1. Dieser DNS-Server kann nur die „externen“ Domänennamen für die Domäne worknetwork.test abfragen. Er ist (intern) maßgebend für homenetwork.test und 1.10.in-addr.arp.
Jetzt verbinden Sie ein VPN, um dem Arbeitsnetzwerk beizutreten, und Sie haben jetzt über diese Schnittstelle eine neue Route zu 10.2.0.0/16 und einen neuen DNS-Server 10.2.0.1, der für worknetwork.test und 2.10.in-addr.arpa maßgebend ist. Wenn Sie einen dieser Nameserver verwenden, können Sie nur eine der Domänen worknetwork.test und homenetwork.test auflösen.
Wenn Sie beide DNS-Server (und RES_ROTATE) verwenden, ist das nicht besser, da Sie manchmal nur den einen oder den anderen auflösen können.
Wenn Sie nun
dnsmasq --no-resolv --no-negcache --no-host --conf-file= \
--server=/worknetwork.test/10.2.0.1 \
--server=/2.10.in-addr.arpa/10.2.0.1 \
--server=10.1.0.1
Und wenn Sie in resolv.conf den „Nameserver 127.0.0.1“ haben, verwenden Sie 10.2.0.1 zum Auflösen der IP-Adressen worknetwork.test und 10.2.xx und Ihren DNS-Heimserver für den Rest.
Antwort3
Sie geben nur wenige Informationen preis, daher ist es schwer, anzufangen, aber ich werde es versuchen ...
Zunächst einmal sind die Server, von denen Sie sprechen, autoritative DNS-Server (die Informationen über die von Ihnen eingerichteten Zonen bereitstellen), richtig? Wenn ja, sollten Sie in Ihrer resolv.conf einen Server einrichten, der nur rekursiv ist (nur DNS-Namen für Sie auflöst, keine Informationen bereitstellt). Sie können ihn so installieren, dass er auf localhost lauscht, alsschsagte.
Wenn ein Server hingegen eine nxdomain zurückgibt, bedeutet das: „Ich kenne diesen Namen, ich bin ein autoritativer Server dafür und dieser Name existiert nicht.“ Der Standardalgorithmus zur DNS-Auflösung endet hier. Das ist es also, daran führt kein Weg vorbei. Sie sollten Ihre autoritativen DNS-Server so einstellen, dass sie für diesen Namen nicht autoritativer Server sind.