unbound.conf-Serveroption „private-domain“ – Domänenname, der mit einem Punkt endet oder nicht?

unbound.conf-Serveroption „private-domain“ – Domänenname, der mit einem Punkt endet oder nicht?

unbound.confdient zur KonfigurationUngebunden, ein zwischenspeichernder DNS-Resolver. DerDokumentationder Version 1.6.8 sagt:

Server Options
    private-domain: <domain name>
        Allow this domain, and all its subdomains to contain private
        addresses. Give multiple times to allow multiple domain names
        to contain private addresses. Default is none.

Wir betreiben unbound Version 1.6.0 mit Debian Stretch (Manpage und zitierte Dokumentation unterscheiden sich hier nicht).

Wir haben die folgenden drei Varianten getestet, getrennt durch

  • Bearbeitung/etc/unbound/unbound.conf
  • Überprüfungunbound-checkconf
  • Neustartsystemctl restart unbound.service
  • Überwachen der ungebundenen Protokolldatei.

Variante 1 (endet mit einem Punkt):

private-domain: domain.example.

Variante 2 (endet nicht mit einem Punkt):

private-domain: domain.example

Variante 3 (in angegebener Reihenfolge):

private-domain: "domain.example. domain.example"

Für alle drei Varianten unbound-checkconfergibt sich:

unbound-checkconf: no errors in /etc/unbound/unbound.conf

Bei Variante 3 finden wir im Logfile:

debug: ignoring duplicate private-domain: domain.example.

Das ist sinnvoll, da ein Eintrag für denselben Domänennamen ausreichen muss und es zu bestätigen scheint, dass unbound beide Schreibweisen der Domänennamen (mit/ohne Punkt) identisch behandelt.

Beide Möglichkeiten funktionieren, aber was ist die korrekte Syntax, um private Domänennamen in unbound zu definieren? Sollten Domänennamen mit einem Punkt enden oder nicht? Ist der Punkt am Ende sinnvoll oder bedeutungslos? Welche Auswirkungen könnte ein unnötiger oder fehlender Punkt haben?

Antwort1

Diese Frage ist zwar uralt, aber bei mir erschien sie dennoch als erster Eintrag bei einer Suche, daher ist sie meiner Meinung nach einen Versuch wert, sie zu beantworten.

Fazit: In diesem und den meisten anderen Kontexten gibt es keinen praktischen Unterschied zwischen domain.example(ohne Trailing .) und domain.example.(mit Training .). Beide sind daher korrekt.

Nun die lange Antwort. :) Diese Antwort – und der einzige andere Kommentar hier, aus dem Jahr 2018 – geht von dem aus, was in der Spezifikation steht, wie es auch der Kommentar von 2018 zum OP tut. Obwohl es semantische Unterschiede zwischen dem RFC und der Art und Weise geben kann, wie Unbound Domänennamen verwendet, wäre dies eine Abweichung von der Spezifikation und würde wahrscheinlich als Fehler angesehen werden.

RFC 1034 Abschnitt 3.1definiert die Kernsyntax von Domänennamen folgendermaßen:

Wenn ein Benutzer einen Domänennamen eingeben muss, wird die Länge jedes Labels weggelassen und die Labels werden durch Punkte (".") getrennt. Da ein vollständiger Domänenname mit dem Stammlabel endet, führt dies zu einem gedruckten Formular, das mit einem Punkt endet. Wir verwenden diese Eigenschaft, um zu unterscheiden zwischen:

  • eine Zeichenfolge, die einen vollständigen Domänennamen darstellt (oft „absolut“ genannt). Zum Beispiel „poneria.ISI.EDU.“

  • eine Zeichenfolge, die die Anfangsbezeichnungen eines Domänennamens darstellt, der unvollständig ist und von lokaler Software unter Verwendung der Kenntnisse der lokalen Domäne vervollständigt werden sollte(oft „Verwandter“ genannt). Beispielsweise wird „poneria“ in der Domäne ISI.EDU verwendet.

Relative Namen werden entweder relativ zu einem bekannten Ursprung oder zu einer Liste von Domänen verwendet, die als Suchliste dient.

Beachten Sie den letzten Satz: Sofern keine „Liste von Domänen, die als Suchliste verwendet werden“ definiert ist, werden Namen ohne abschließenden Punkt als relativ zu einem „bekannten Ursprung“ betrachtet – also der Wurzel der Namenshierarchie. Bei öffentlichen DNS entspricht die DNS-Wurzel demWurzelzone; private Namenshierarchien weichen selten von dieser Konvention ab.

In der Praxis bedeutet dies, dass ein vollqualifizierter Domänenname (FQDN) ohne abschließenden Namen .fast immer relativ zur Wurzel der Namenshierarchie betrachtet werden sollte, was der gleichen „absoluten“ Domäne entspricht. Daher gilt domain.example== „ domain.examplerelativ zur Wurzel“ == domain.example..

Wann könnten die unterschiedlichen Darstellungen Auswirkungen haben? Wenn Sie sich mitFragmenteeines Domänennamens anstelle eines FQDN. In diesem Fall sollten Sie den Punkt weglassen und erwägen, den Punkt in den FQDNs zu verwenden. Wenn Sie ausführen example.com.(beachten Sie den Punkt; der Root-Server sendet Datenverkehr an Sie) und als Subdomäne *.example.comeinrichten möchten , ist die Subdomäne; ist die Top-Level-Domäne (TLD) .east.example.com.easteast..east

Noch einmal: Das steht in der Spezifikation. Überprüfen Sie wie immer die Dokumentation für das Tool, das Sie konfigurieren. Es gibt auch andere Bereiche der Spezifikation, insbesondere DNS-Komprimierung, in denen einige zusätzliche Semantiken eingeführt werden. Sie können diese ignorieren, wenn Sie nicht buchstäblich Nachrichten im DNS-Wire-Protokoll analysieren oder generieren.

Hoffentlich beantwortet das die Frage vollständig. Ich hoffe, das ist für jemanden hilfreich.

verwandte Informationen