Kann ich CNAME mit IP-Adresse verwenden? Warum, wenn es (manchmal) funktioniert?

13

Ich glaube, dass die einfachste Antwort auf die erste Frage "Nein, Sie haben" A "dafür" ist, aber ich habe versehentlich eine Subdomain mit CNAME eingerichtet, die auf die IP-Adresse zeigt, und es hat auf wenigen Computern in meinem Büro funktioniert. Ich frage mich, wie es möglich war?

Jetzt, wenn ich es von zu Hause aus überprüfe, habe ich folgenden Fehler:

beast:~ viroos$ host somesubdomain.somedomain.com
Host somesubdomain.somedomain.com not found: 3(NXDOMAIN)

Ich bin zu 100% damit beschäftigt, in meinem Büro zu arbeiten (derzeit sieht es nicht so aus, aber ich überprüfe es auf einem anderen Computer). Daher bin ich nicht zu 100% zufrieden, wenn es aufgrund einer speziellen Netzwerkkonfiguration funktioniert hat oder weil ich es direkt nach dem Hinzufügen eines DNS-Eintrags getestet habe.

Ich weiß, dass diese Geschichte ein bisschen verrückt / unglaublich klingt, aber kann mir jemand helfen, dieses Rätsel zu lösen.

// edit: Ich füge dig output hinzu

; <<>> DiG 9.6-ESV-R4-P3 <<>> somesubdomain.somedomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60224
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;somesubdomain.somedomain.com.      IN  A

;; ANSWER SECTION:
somesubdomain.somedomain.com.   67  IN  CNAME   xxx.xxx.xxx.xx1.

;; AUTHORITY SECTION:
.           1800    IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2012040901 1800 900 604800 86400

;; Query time: 72 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Apr 10 00:11:01 2012
;; MSG SIZE  rcvd: 136
Maciek Sawicki
quelle
2
Sind Sie sicher, dass die Büromaschinen nicht durch irgendetwas anderes funktionieren? Zwischengespeicherte Einträge? Autorisierter Server für diese Domain im lokalen Netzwerk, der die öffentliche Auflösung überschreibt? Hosts Dateien?
Shane Madden
Um genau zu sein, funktionierte es auf zwei Rechnern, beide sind OSX. Auf Ubuntu-Rechnern funktionierte es nicht. Da es auf zwei Rechnern funktionierte, ignorierte ich das Ubuntu-Problem (das war ein Fehler), da ich glaubte, es handele sich um ein Problem mit der DNS-Verbreitung oder um einen DNS-Cache. Ich habe nur das DNS-Setup auf jedem Client überprüft und es war dasselbe (dies hinterließ einige Unsicherheiten hinsichtlich der DNS-Propagationstheorie). Einer dieser Computer ist mein MacBook, und ich verwende es derzeit von zu Hause aus, und die von mir eingerichtete Website funktioniert nicht mehr ordnungsgemäß: "Der Server unter somesubdomain.somedomain.com kann aufgrund des DNS nicht gefunden werden Suche fehlgeschlagen. "
Maciek Sawicki
Was wird zurückgegeben, wenn Sie mit nach dem Namen fragen dig?
Shane Madden
Ich habe dig output hinzugefügt, um Fragen zu stellen.
Maciek Sawicki
Ich vermute sehr, dass die OSX-Computer etwas anderes als DNS für die Suche verwenden, wie mDNS (was überhaupt nicht dasselbe ist).
Chris S

Antworten:

16

Die Daten in einem CNAMEDatensatz müssen immer einen anderen DNS-Namen haben - das ist der springende Punkt von a CNAME.

Wie in RFC 1034 formuliert, sollten die Daten in a wie CNAMEfolgt lauten:

            CNAME           a domain name.

Wenn Sie auf eine IP-Adresse verweisen möchten, lautet Ihr Ticket:

            A               For the IN class, a 32 bit IP address

CNAMEist als DNS-Alias ​​konzipiert und implementiert. Es hat keine Vorstellung davon, eine IP-Adresse in diesem Datenfeld zu haben. Als solches wird es wie vorgesehen als Alias ​​für einen anderen DNS-Namen interpretiert. Schließlich passt eine IP-Adresse zur Syntax eines DNS-Namens.

Nehmen wir zum Beispiel an, Ihre DNS-Daten lauten:

somesubdomain.somedomain.com.   60  IN  CNAME   192.0.2.1.

Der rekursive DNS-Server, den Sie abfragen, erkennt, dass es sich bei dem Datensatz um einen handelt CNAME, und gibt an, dass Sie die tatsächlichen darin enthaltenen Daten benötigen. Es wurde kein anderer Datensatz als der CNAMEgefunden, sodass dem Kunden keine Antwort zu geben ist.

Es wird versucht, einen Datensatz 192innerhalb der Domäne nach einem Hostnamen abzufragen 0.2.1. Für diesen Namen ist nichts zwischengespeichert, daher werden die Stammserver gefragt. Sie bedienen Anfragen für TLDs wie .comund .net, aber diese Anfrage ist eine Anfrage für .1. Sie antworten umgehend, dass es keine solche gibt, und das sendet der Rekursor an Sie.

Die Antwort, die Sie sehen, digist Ihr rekursiver Nameserver, der sagt: "Nun, der Name, den Sie gesucht haben, deutete auf einen anderen Ort und dieser Ort existierte nicht - fragen Sie den Root-Server, ob Sie mir nicht glauben."


Ja, das Einfügen einer IP-Adresse in einen CNAMEDatensatz ist niemals gültig, und ich vermute, dass die Systeme, die funktionieren, über einen anderen Mechanismus wie eine Hostdatei oder eine lokale Namensauflösung ordnungsgemäß funktionieren.

Shane Madden
quelle
2

cname ist ein kanonischer Name, der nur ein Alias ​​eines anderen Namens ist, normalerweise der A-Datensatz oder ein anderer cname usw. Wenn Sie cname so einrichten, dass er auf eine IP verweist, ist er nur ein Alias ​​dieser IP. Ich glaube nicht, dass Ihr DNS-Server überprüft, ob das Ziel legitim ist oder nicht, da der Standard-RFC nicht wirklich angibt, wie das Datenformat / die Validierung für das Ziel von cname lautet. Dies ist keine übliche Verwendung, aber wenn es für Sie funktioniert, dann funktioniert es. Die Tatsache, dass es manchmal nicht funktioniert, sollte ausreichen, um das zu verwenden, was es üblicherweise verwendet wird, denke ich.

johnshen64
quelle
0

Du kannst haben:

example IN CNAME 1.2.3.4.

Dabei ist 1.2.3.4 eine funktionierende IP-Adresse. Beachten Sie jedoch den abschließenden Punkt im CNAME. Die Tatsache, dass einige Computer in Ihrem Büro damit arbeiten, während andere nicht der Meinung sind, dass die Computer, für die die Unterdomäne in der Datei lmhostsoder festgelegt ist, dies tun /etc/hosts.

adamo
quelle
1
Das sind zwar gültige Daten für einen CNAME, aber ich bin mir ziemlich sicher, dass dies keine zusätzliche Suche auslösen wird. Mit Ausnahme der Stammserver für eine nicht vorhandene TLD namens 4?
Shane Madden
Eine zusätzliche Suche wird mit einer ANY (zB host -a) Abfrage durchgeführt.
Adamo
@ ShaneMadden BTW, Ihr Kommentar erinnerte mich an
DJBs