Mengapa catatan NS tidak berisi alamat IP?

18

Inti dari catatan NS adalah memberi tahu klien server nama mana yang akan tahu pasti alamat IP sebenarnya untuk nama domain. Jadi misalnya, kueri berikut memberi tahu Anda bahwa jika Anda ingin mendapatkan jawaban resmi tentang facebook.comAnda harus bertanya 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

Ini sepertinya keren dan bermanfaat, tetapi saya bertanya-tanya mengapa ANSWERbagian ini berisi nama host dan bukan IP dari sumber yang berwenang? Bukankah lebih mudah bagi klien untuk mendapatkan alamat IP aktual dari sumber yang berwenang dan bukan nama host?

Maksud saya jika mendapat nama host, ia harus membuat permintaan lain untuk menyelesaikan nama host ini menjadi IP dan kemudian bertanya IP baru ini tentang facebook.comdomain awal yang dicari. Bukankah ini tidak efisien?

Saya akan tertarik pada jawaban yang mengarahkan saya ke beberapa paragraf di beberapa RFC yang menjelaskan masalah ini.

Pawelmhm
sumber
"Itu menjelaskan masalah ini." yang mana? Apakah maksud Anda satu permintaan tambahan?
ALex_hha
yeah @ALex_hha maksud saya permintaan tambahan
Pawelmhm

Jawaban:

17

Solusi untuk masalah ini adalah catatan lem DNS, yang dijelaskan di Apa itu catatan lem? .

RFC 1035 Bagian 3.3.11 menyatakan

"... Perhatikan bahwa kelas tidak boleh menunjukkan keluarga protokol yang harus digunakan untuk berkomunikasi" dengan tuan rumah, meskipun biasanya petunjuk yang kuat. "

Mengembalikan alamat IP sama saja dengan menyatakan metode di mana tuan rumah dapat dihubungi, yang bertentangan dengan RFC.

Jason Martin
sumber
terima kasih Jason jadi jika catatan NS akan berisi IP ini akan menunjukkan keluarga protokol, dan RFC melarang itu, apakah itu benar? Apakah itu berarti bahwa klien dapat menggunakan keluarga protokol yang berbeda ketika melakukan permintaan dns? Saya pikir hanya bisa menggunakan UDP / TCP?
Pawelmhm
5
Keluarga protokol mengacu pada IPv4, IPv6
sendmoreinfo
Jika Anda tahu pertanyaannya adalah duplikat, maka karena Anda tidak dapat memilih untuk menutup sebagai korban penipuan, Anda harus memberi tanda seperti itu.
user9517 mendukung GoFundMonica
3
Saya pikir RFC menggunakan "mungkin tidak" dalam arti "mungkin tidak", bukan dalam arti larangan. (Ini mendahului RFC2119, yang menstandarkan jenis bahasa ini untuk mengurangi ambiguitas.)
David
37

Jason menyediakan mekanisme DNS yang mengatasi masalah yang Anda jelaskan, tetapi kami masih belum melihat mengapa hal-hal dilakukan dengan cara ini.

Katakanlah saya memiliki example.com, dan saya telah mengontrak beberapa konten situs web saya ke perusahaan pengiriman konten bernama Contoso . Platform mereka mengharuskan kita untuk mendelegasikan sub.example.comke server nama mereka sehingga mereka dapat mengontrol respons apa yang dikembalikan.

; SOA and MX omitted from this example
$ORIGIN example.com.

@           IN      NS            ns1
@           IN      NS            ns2

; delegate sub.example.com to Contoso's nameservers
sub         IN      NS            ns1.cdn.contoso.com.
sub         IN      NS            ns2.cdn.contoso.com.

; this is ours, not Contoso's
www         IN      A             198.51.100.1

Seperti yang telah Anda catat, kami belum menentukan alamat IP nameserver Contoso. Yang diketahui oleh server kami adalah memberi tahu internet "kami tidak mengelola sub.example.com, tanyakan kepada Contoso sebagai gantinya" . Ini sangat penting, karena:

  • Kami tidak memiliki Contoso.com.
  • Kami tidak dapat mengharapkan Contoso untuk mengoordinasikan perubahan IP server nama mereka dengan semua pelanggan mereka. Itulah yang harus terjadi jika server kami menyediakan IP tersebut.

Sejauh ini baik. Setahun berlalu, dan tanpa sepengetahuan kami Contoso mengubah alamat IP server nama CDN mereka. Karena DNS berfungsi sebagaimana mestinya, yang harus mereka lakukan hanyalah memperbarui Acatatan yang mereka kembalikan ns1.cdndan ns2.cdn.contoso.com..

Ini membawa kita ke poin penting: catatan lem yang dijelaskan oleh Jason ada untuk menangani skenario "ayam dan telur" dalam DNS, seperti google.commemberi tahu dunia bahwa server nama mereka adalah ns1.google.comdan ns2.google.com. Anda tidak boleh membuat catatan lem yang menunjuk ke infrastruktur yang bukan milik Anda kecuali jika ada untuk menyelesaikan masalah seperti ini:

@           IN      NS            ns1
@           IN      NS            ns2

; delegate sub.example.com to ns1 and ns2.sub.example.com
sub         IN      NS            ns1.sub
sub         IN      NS            ns2.sub

; provide the IP addresses of ns1 and ns2 so that nameservers
; on the internet can find them.
;
; these IP addresses are owned by Contoso, not us, and they must
; coordinate changes to these IPs with us
ns1.sub     IN       A            203.0.113.10
ns1.sub     IN       A            203.1.113.10

Ini menghindari skenario ayam dan telur, tetapi juga membuatnya agar Contoso harus mengoordinasikan setiap perubahan IP dari nameserver tersebut dengan kami. Ini sangat berisiko dan tidak diinginkan.

Andrew B
sumber
Ah, itu masuk akal ketika server nama tidak di-host-sendiri.
Jason Martin