Der Zweck eines NS-Eintrags besteht darin, dem Client mitzuteilen, welcher Nameserver die tatsächliche IP-Adresse für einen Domainnamen sicher kennt. Die folgende Abfrage besagt beispielsweise, dass Sie Folgendes facebook.com
fragen müssen, um eine verbindliche Antwort zu erhalten a.ns.facebook.com
:
> dig ns facebook.com 19:58:27
; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> ns facebook.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32063
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;facebook.com. IN NS
;; ANSWER SECTION:
facebook.com. 65000 IN NS a.ns.facebook.com.
facebook.com. 65000 IN NS b.ns.facebook.com.
;; Query time: 13 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Sun Mar 20 19:58:40 CET 2016
;; MSG SIZE rcvd: 65
Dies scheint cool und nützlich, aber ich frage mich, warum der ANSWER
Abschnitt den Hostnamen und nicht die IP der maßgeblichen Quelle enthält? Wäre es nicht einfacher für den Client, die tatsächliche IP-Adresse der autorisierenden Quelle und nicht den Hostnamen zu ermitteln?
Ich meine, wenn es den Hostnamen bekommt, muss es eine weitere Abfrage machen, um diesen Hostnamen in eine IP aufzulösen, und dann diese neue IP nach der ursprünglichen facebook.com
Domain fragen, nach der es gesucht hat. Ist das nicht ineffizient?
Mich würde eine Antwort interessieren, die mich auf einige Absätze in einem RFC verweist, die dieses Problem erklären.
quelle
Antworten:
Die Lösung des Problems sind DNS-Leimdatensätze, die unter Was ist ein Leimdatensatz? Beschrieben werden . .
RFC 1035 Abschnitt 3.3.11 besagt
Das Zurückgeben einer IP-Adresse ist gleichbedeutend mit der Angabe der Methode, mit der der Host kontaktiert werden kann, was gegen den RFC verstößt.
quelle
Jason hat den DNS-Mechanismus bereitgestellt, der das von Ihnen beschriebene Problem umgeht. Wir haben jedoch noch nicht untersucht, warum dies so ist.
Nehmen wir an, ich
example.com
besitze Content und habe einen Teil meiner Website-Inhalte an eine Content-Lieferfirma namens Contoso vergeben . Ihre Plattform erfordert, dass wir ansub.example.com
ihre Nameserver delegieren , damit sie steuern können, welche Antworten zurückgegeben werden.Wie Sie bereits bemerkt haben, haben wir die IP-Adressen der Contoso-Nameserver nicht angegeben. Alles, was unser Server weiß, ist, dem Internet mitzuteilen, "wir verwalten nicht
sub.example.com
, sondern fragen stattdessen Contoso" . Das ist sehr wichtig, weil:So weit, ist es gut. Ein Jahr vergeht, und ohne unser Wissen ändert Contoso die IP-Adressen seiner CDN-Nameserver. Da DNS so funktioniert, müssen sie nur die
A
Datensätze aktualisieren, die sie fürns1.cdn
und zurückgebenns2.cdn.contoso.com.
.Dies bringt uns zu einem wichtigen Punkt: Die von Jason beschriebenen Leimaufzeichnungen existieren, um "Huhn und Ei" -Szenarien im DNS zu behandeln, beispielsweise
google.com
um der Welt mitzuteilen, dass ihre Nameserverns1.google.com
und sindns2.google.com
. Sie sollten niemals Verbindungsdatensätze erstellen, die auf eine Infrastruktur verweisen, die Sie nicht besitzen, es sei denn, diese existieren, um ein Problem wie das folgende zu lösen:Dies vermeidet das Henne-Ei-Szenario, macht es aber auch so, dass Contoso jede IP-Änderung dieser Nameserver mit uns abstimmen muss . Dies ist sehr riskant und unerwünscht.
quelle