Wie ist die DNS-Suchreihenfolge, wenn sowohl ein CNAME- als auch ein A-Eintrag vorhanden sind?

Wie ist die DNS-Suchreihenfolge, wenn sowohl ein CNAME- als auch ein A-Eintrag vorhanden sind?

Wenn wir einen A-Eintrag und einen CNAME-Eintrag für dieselbe Subdomäne festlegen, wie wird dann die DNS-Suche durchgeführt?

Zum Beispiel,

A record: 
example.com => xx.xx.xx.xx
www.example.com => xx.xx.xx.xx

CNAME record:
www. => example.com

Bei der Lösungwww.beispiel.com, sucht der DNS-Resolver direkt den A-Eintrag für die Subdomäne „www“ und erhält die IP-Adresse, oder sucht er den CNAME für „www“, um die Umleitungsdomäne (example.com) zu erhalten, und sucht dann den A-Eintrag von example.com, um am Ende die IP-Adresse zu erhalten?

Antwort1

Was sind CNAMEDatensätze?

Ein CNAMEDatensatz definiert dieBesitzername(der Name, unter dem der Datensatz hinzugefügt wird) als Alias ​​für den Namen im CNAMEDatensatzwert (dereindeutige Bezeichnung, gemäß dem Namen des Datensatztyps).
Beachten Sie, dass diese Definition eines Alias ​​auf Namensebene erfolgt und Datensatztypen völlig außer Acht lässt.

Eine Auswirkung des Aliasnamens des Eigentümernamens besteht darin, dass dieser nicht auch in anderen Datensätzen vorhanden sein kann, da dies in direktem Konflikt mit der bloßen Tatsache stünde, dass es sich lediglich um einen Aliasnamen für einen anderen Namen handelt.

Aus der Resolver-Perspektive Asind die gültigen Optionen für eine Antwort bei einer Abfrage nach eine Agetippte Antwort, wenn der Name kein Alias ​​war, oder eine CNAMEgetippte Antwort, wenn der Name ein Alias ​​war. Beides für denselben Namen zu erhalten, ist keine Option (die vom Standard nicht zugelassen ist und ohnehin ein definiertes Verhalten hätte).

Wie kann mein DNS-Dienstanbieter dies dann tun?

Angenommen, die Behauptung, Sie könnten CNAMEmehrere ADatensätze nebeneinander hinzufügen, stimmt, dann läuft bei ihrem Service etwas nicht Offensichtliches schief.

Ich würde es in zwei Hauptoptionen aufteilen. Ohne mehr zu wissen, ist es nicht wirklich möglich zu wissen, welche in Ihrem Fall relevant ist:

  • Ihr System verwendet die Benutzereingaben nicht direkt, sondern wandelt sie auf die eine oder andere Weise in etwas Gültiges um. Entweder fügen sie einen der widersprüchlichen Datensätze hinzu, aber nicht den anderen (was bedeuten würde, dass die Benutzeroberfläche nicht gut ist), oder es verfügt über eine Art „CNAME-Flattening“-Funktion, bei der sie die CNAMEvom Benutzer eingegebenen Datensätze nicht wirklich bereitstellen, sondern die relevanten Datensätze aus dem kanonischen Namen von ihrem Ende auflösen und diese bereitstellen, als wären sie direkt beim Aliasnamen (was keine Standardfunktion ist, aber einige Dienste haben diese Art dynamischer Nachschlagevorgänge implementiert, um sie zu „flatten“ CNAME).
  • Ihr System ist defekt, sodass der Benutzer inkonsistente Daten hinzufügen kann, die in den Spezifikationen nicht zulässig sind und auf die eine oder andere Weise seltsame Probleme verursachen können (entweder indem ihr Dienst defekt ist oder indem ihr Dienst tatsächlich inkonsistente Daten bereitstellt, die Dinge auf der Resolver-Seite beschädigen können). Der Benutzer würde sich selbst ins Bein schießen, wenn er diese Art von Defekt in seinem Dienst ausnutzen würde.

verwandte Informationen