Ich versuche, die wundervolle Welt des DNS zu verstehen.
Ich habe eine Zonendatei für example.com erstellt, die Folgendes enthält:
@ A 1.2.3.4
* A 1.2.3.4
Ich richte jedoch auch meinen lokalen DNS ein, local.example.com, für den ich eine separate Zonendatei erstellt habe, die Folgendes enthält:
machine1 A 192.168.0.1
machine2 A 192.168.0.2
Wenn ich machine1.local.example.com suche, wird der A-Eintrag 192.168.0.1 zurückgegeben, großartig.
Leider gibt badmachine.local.example.com 1.2.3.4 zurück, ebenso wie local.example.com.
Ich bin mir nicht sicher, wie ich das am besten verhindern kann. Wenn ich Folgendes zu local.example.com hinzufüge, werden für die beiden obigen Beispiele leere A-Einträge zurückgegeben, was das von mir gewünschte Verhalten ist:
@ A
* A
Ich möchte, dass alles auf.example.com das Platzhalterzeichen verwendet, AUSSER alles in der Subdomäne local.example.com, für das ich keine Antwort geben möchte, sofern nicht anders angegeben. Im Wesentlichen brauche ich ein Platzhalterzeichen mit einer Ausnahme.
Ist das erlaubt? Ist das die beste Vorgehensweise oder mache ich etwas ganz falsch? Ich verwende PowerDNS mit BIND-Backend.
Danke für Ihre Gedanken!
Antwort1
Erstens klärt (oder modifiziert) Ihr Kommentar an Chris S. oben Ihre ursprüngliche Frage erheblich, und ich hoffe, Sie verzeihen mir, dass ich ihn in Ihre ursprüngliche Frage einarbeite.
Zweitens sind Nulldatensätze nicht zulässig, wie andere bereits angemerkt haben.
Drittens denke ich, dass Sie Ihr Ziel erreichen, indem Sie es local.example.com
als richtige Subdomäne deklarieren:
local IN NS ns1.example.com
local IN NS ns2.example.com
Auflistung der gleichen beiden Nameserver, die Sie derzeit für example.com verwenden (Hinweis: Ich kenne PowerDNS nicht, daher sind meine obigen Einträge im BIND-Format). Dann deklarieren Sie auf diesen Nameservern (ich gehe davon aus, dass es sich hier um diesen Nameserver handelt) eine Zonendatei für local.example.com, die nur die Hosts enthält, die Sie auflösen möchten, und keinen Platzhalterdatensatz.
Wenn also nach gesucht wird foo.example.com
(vorausgesetzt, dass es nicht aufgeführt ist), wird es mit dem vorhandenen Platzhalterdatensatz übereinstimmen und zurückgegeben 1.2.3.4
(oder was auch immer). Wenn jedoch nach gesucht wird
foo.local.example.com
, werden die Nameserver-Datensätze für local.example.com
zurückgegeben und eine weitere Rekursion wird stattfinden, wobei Ihr Nameserver nun die Zonendatei für durchsucht local.example.com
und sagt (in Ermangelung eines bestimmten Datensatzes für foo)Undein Platzhalter in local.example.com) „Nein, es gibt keinen solchen Datensatz“.
Antwort2
Es wäre nützlich, genau zu wissen, nach welchen Antworten Sie suchen. Die ersten beiden in Ihrer Frage zitierten Zeilen legen die Standardantwort für die Domäne und auch die Antwort auf nicht übereinstimmende Datensätze fest. Daher wird example.com vom Datensatz "@" bedient und anything-that-doesnt-exist.exmaple.com wird vom Datensatz "*" bedient. Sie sind nicht notwendig, Sie können beide entfernen. Sie auf leere Werte zu setzen ist eine ungültige Konfiguration (auf den meisten Systemen).
Antwort3
Mir fällt keine Möglichkeit ein, einen Eintrag auf „Null“ zu setzen. Leere A-Datensätze sind nicht zulässig.
Vielleicht *.example.com A 1.2.3.4
würde das Überschreiben der .local.example.com-Einträge verhindern? Es klingt, als würde sich PowerDNS laut Spezifikation falsch verhalten. Wenn die Domäne local.example.com definiert ist, sollte das Platzhalterzeichen nichts in dieser Domäne überschreiben. Können Sie vollständige Zonendateien posten? Das würde eine Reihe kleinerer Fragen beantworten.
Antwort4
Achten Sie auf das konkrete Verhalten des von Ihnen genutzten Servers, da dieses Feature nicht konsequent umgesetzt wurde:
Um aus RFC 4592 zu zitieren: Viele DNS-Implementierungen weichen auf unterschiedliche Weise von der ursprünglichen Definition von Platzhaltern ab.
Was Sie mit dem Platzhaltereintrag erreichen möchten, ist richtig, so wie ich die Definition der Platzhalterverwendung verstehe (man sollte es besser als Standardwert für den letzten Ausweg betrachten). Ich werde versuchen, Zeit zu finden, um das erläuternde RFC zu lesen und hier zu aktualisieren ...