Klarifikasi mengapa file zona DNS memerlukan catatan NS

18

Pertanyaan ini awalnya ditanyakan di sini: Mengapa file zona DNS memerlukan catatan NS?

Untuk meringkas: "Ketika saya pergi ke registrar saya dan membeli example.com, saya akan memberi tahu registrar saya bahwa server nama saya adalah ns1.example.org dan ns2.example.org".

Tapi tolong tolong jelaskan yang berikut ini:

Setelah pendaftaran, registri .com sekarang akan memiliki catatan yang memberi tahu penyelesai perlu mengunjungi ns1.example.org atau ns2.example.org untuk mengetahui alamat IP example.com. Alamat IP berada di catatan A di file zona di ns1.example.org dan memiliki salinan yang sama di ns2.example.org.

Namun, di dalam file ini, harus juga ada 2 catatan NS yang mencantumkan ns1.example.org dan ns2.example.org sebagai nameserver. Tetapi karena kita sudah berada di salah satu server ini, informasi ini sepertinya digandakan.

Jawaban yang awalnya diberikan untuk pertanyaan tersebut mengatakan server nama yang tercantum dalam file zona "otoritatif". Jika server nama tidak cocok, maka server nama resmi akan diutamakan. Itu semua sangat baik dan bagus, tetapi resolver tersebut tiba di nameserver menggunakan nameserver yang tercantum dalam registri .com , dan jika nameserver tidak cocok, maka resolver akan mencari file zona pada nameserver yang salah dan tidak akan ' t tidak dapat menemukannya.

Atau apakah ini merupakan kasus dari registri .com mengekstrak informasi server nama dari catatan file zona dan tidak? (Tapi kemudian saya kira jika Anda mengubah ns merekam file zona tanpa memberitahu registri, maka itu tidak akan memiliki cara untuk mengetahui ke mana harus mencari.)

Terima kasih

Lars
sumber

Jawaban:

23

Mari kita jabarkan sedikit.

Catatan NS di zona TLD (misalnya, example.com NS ...dalam com) adalah catatan delegasi .

Catatan A dan AAAA di zona TLD (misalnya, ns1.example.com A ...dalam com) adalah catatan lem .

Catatan NS di zona itu sendiri (yaitu, example.com NS ...di example.com) adalah catatan otoritas .

Catatan A dan AAAA di zona itu sendiri ( ns1.example.com A ...di example.com) adalah catatan alamat , jelas dan sederhana.

Ketika resolver (rekursif) dimulai tanpa ada cache data zona Anda dan hanya cache zona root (yang digunakan untuk mem-bootstrap proses resolusi nama), maka pertama-tama akan pergi ke ., kemudian com.. The comserver akan merespon dengan bagian respon otoritas yang pada dasarnya mengatakan "Saya tidak tahu, tapi lihat di sini untuk seseorang yang tidak tahu", sama dengan server untuk .do tentang com. Respons kueri ini tidak resmi dan tidak termasuk bagian jawaban yang terisi. Ini mungkin juga termasuk yang disebut tambahanbagian yang memberikan pemetaan alamat untuk nama host apa pun yang diketahui oleh server tertentu (baik dari catatan lem atau, dalam hal resolver rekursif, dari data yang sebelumnya di-cache). Penyelesai akan mengambil respons delegasi ini, menyelesaikan nama host dari catatan NS jika perlu, dan melanjutkan ke kueri server DNS yang otoritasnya telah didelegasikan. Proses ini dapat diulang beberapa kali jika Anda memiliki hierarki delegasi yang mendalam, tetapi akhirnya menghasilkan respons kueri dengan set flag "jawaban otoritatif" .

Penting untuk dicatat bahwa resolver (umumnya, mudah-mudahan) tidak akan mencoba menjabarkan nama host yang diputuskan untuk menanyakannya sepotong demi sepotong, tetapi hanya akan mengirimkannya secara keseluruhan ke server "terbaik" yang diketahuinya. Karena rata-rata server nama otoritatif di Internet tidak otoritatif untuk sebagian besar nama DNS yang valid, responsnya akan berupa respons delegasi non-otoritatif yang menunjuk ke beberapa server DNS lainnya.

Sekarang, server tidak harus disebutkan dalam delegasi atau catatan otoritas di mana saja untuk otoritatif untuk suatu zona. Pertimbangkan misalnya kasus server master pribadi; dalam hal ini terdapat server DNS yang otoritatif yang hanya diketahui oleh administrator server slave DNS untuk zona tersebut. Server DNS adalah otoritatif untuk suatu zona jika, melalui beberapa mekanisme, menurut pendapatnya memiliki pengetahuan yang lengkap dan akurat tentang zona tersebut. Server DNS yang biasanya otoritatif dapat, misalnya, menjadi non-otoritatif jika server master yang dikonfigurasi tidak dapat dijangkau dalam batas waktu yang ditentukan sebagai waktu kedaluwarsa dalam catatan SOA.

Hanya jawaban otoritatif yang harus dianggap sebagai respons kueri yang tepat; yang lainnya adalah delegasi, atau semacam kesalahan. Delegasi ke server non-otoritatif disebut delegasi "lumpuh", dan berarti resolver harus mundur satu langkah dan mencoba beberapa server DNS lain yang bernama. Jika tidak ada server nama yang dapat dijangkau yang berwibawa di delegasi, maka resolusi nama gagal (jika tidak, itu hanya akan lebih lambat dari biasanya).

Ini semua penting karena data non-otoritatif tidak boleh di-cache . Bagaimana mungkin, karena server non-otoritatif tidak memiliki gambaran lengkap? Jadi server otoritatif harus, atas kemauannya sendiri, dapat menjawab pertanyaan "siapa yang seharusnya berwibawa, dan untuk apa?". Itulah informasi yang disediakan oleh catatan NS dalam zona.

Ada sejumlah kasus tepi di mana ini benar-benar dapat membuat perbedaan serius, terutama berpusat di sekitar beberapa label nama host di dalam satu zona (mungkin cukup umum misalnya dengan zona DNS terbalik terutama untuk rentang IP dinamis besar) atau ketika daftar server nama berbeda antara zona induk dan zona yang dimaksud (yang kemungkinan besar adalah kesalahan, tetapi dapat dilakukan dengan sengaja juga).


Anda dapat melihat bagaimana ini bekerja dengan sedikit lebih detail menggunakan digdan +norec(jangan meminta rekursi) dan @fitur server specifier. Berikut ini adalah ilustrasi tentang cara kerja server DNS penyelesaian aktual. Permintaan untuk catatan A untuk unix.stackexchange.commemulai misalnya a.root-servers.net:

$ dig unix.stackexchange.com. A @a.root-servers.net. +norec

Perhatikan baik- flagsbaik perhitungan jumlah dan per bagian. qradalah Query Response dan aamerupakan Authoritative Answer. Perhatikan bahwa Anda hanya didelegasikan ke comserver. Secara manual ikuti delegasi itu (dalam kehidupan nyata penyelesai rekursif akan menggunakan alamat IP dari bagian tambahan jika disediakan, atau memulai resolusi nama terpisah dari salah satu server nama yang bernama jika tidak ada IP yang disediakan dalam respons delegasi, tetapi kami akan lewati bagian itu dan kembali saja ke resolver normal sistem operasi untuk singkatnya contoh):

$ dig unix.stackexchange.com. A @a.gtld-servers.net. +norec

Sekarang Anda melihat bahwa stackexchange.comitu didelegasikan kepada (antara lain) ns1.serverfault.com, dan Anda masih belum mendapatkan jawaban yang resmi. Sekali lagi ikuti delegasi:

$ dig unix.stackexchange.com. A @ns1.serverfault.com. +norec
...
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35713
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;unix.stackexchange.com. IN A

;; ANSWER SECTION:
unix.stackexchange.com. 300 IN A 198.252.206.16

Bingo! Kami mendapat jawaban, karena aaflag sudah diatur, dan kebetulan berisi alamat IP seperti yang kami harapkan. Sebagai tambahan, perlu dicatat bahwa setidaknya pada saat saya menulis posting ini, daftar server nama yang didelegasikan-ke dan terdaftar-otoritas berbeda, menunjukkan bahwa keduanya tidak perlu identik. Apa yang saya contohkan di atas pada dasarnya adalah pekerjaan yang dilakukan oleh setiap resolver, kecuali setiap resolver praktis juga akan menyimpan respons cache sepanjang jalan sehingga tidak harus menekan server root setiap kali.

Seperti yang dapat Anda lihat dari contoh di atas, catatan delegasi dan lem memiliki tujuan yang berbeda dari otoritas dan catatan alamat di zona itu sendiri.

Caching, menyelesaikan nama server juga umumnya akan melakukan beberapa pemeriksaan kewarasan pada data yang dikembalikan untuk melindungi terhadap keracunan cache. Misalnya, mungkin menolak untuk menembolokkan jawaban yang menamai server otoritatif untuk comdari sumber selain yang telah dinamai oleh zona induk sebagai didelegasikan ke untuk com. Rinciannya tergantung pada server tetapi tujuannya adalah untuk cache sebanyak mungkin sementara tidak membuka pintu gudang yang memungkinkan server nama acak di Internet untuk menimpa catatan delegasi untuk apa pun yang tidak secara resmi di bawah "yurisdiksinya".

sebuah CVn
sumber
Terima kasih banyak atas jawaban terperinci ini. Jadi bayangkan catatan delegasi mengirimkan resolver ke ns4.serverfault.com. Ini tidak tercantum dalam catatan NS file zona itu. Apakah resolver memperhatikan ketidakcocokan dan mundur? (delegasi lumpuh)? Saya kira itu kemudian menimbulkan pertanyaan, mengapa ns4.serverfault.com. terdaftar sebagai catatan delegasi jika tidak terdaftar dalam file zona?
Lars
@ Lars No, ns4.serverfault.com akan tetap berwibawa; otoritas (apakah itu sepatah kata pun?) tidak tergantung apakah server yang dimaksud disebutkan dalam catatan NS atau tidak, baik di zona itu sendiri atau dalam delegasi. Ini hanya delegasi lumpuh jika server yang didelegasikan merespons secara non-otoritatif (yaitu, aaflag tidak diatur pada respons).
CVn
1

Registri .com adalah "catatan lem" yang memiliki lokasi server nama Anda sebagai alamat IP. Penyelesai tidak memiliki cara untuk mengetahui "identitas" dari server DNS Anda sehingga menggunakan catatan NS untuk memastikan angka-angka cocok.

Permintaan DNS -> .com registry (ip adalah xxxx) -> DNS (NS xxxx) cocok, atasi.

Jika mereka tidak cocok atau ada, maka itu adalah jawaban yang tidak sah untuk domain tersebut.

Nathan C
sumber
Terima kasih tapi saya masih sedikit bingung. Penyelesai menggunakan alamat IP dalam catatan lem dalam registri .com untuk pergi ke file zona yang disimpan di alamat IP tersebut. Sekarang dapat mengambil catatan A. Mengapa perlu memeriksa bahwa server nameserver ini cocok dengan catatan NS di file zona?
Lars
Sehingga ia tahu ia mencari di tempat yang tepat. Misalnya, jika Anda memiliki subdomain yang catatan A-nya berada di server yang berbeda , catatan NS akan memberi tahu resolver ke mana harus mencari. Jenis remah roti seperti.
Nathan C