Bagaimana cara kerja server nama DNS?

14

Kami memiliki dua server DNS yang tercantum dalam catatan NS kami. Tadi malam, salah satu server DNS kami turun. Seperti yang diharapkan, beberapa server DNS tidak menyelesaikan nama host kami. Saya berasumsi ini akan bersifat sementara dan akan mulai bekerja setelah TTL dari catatan NS kami akan kedaluwarsa (1 jam).

Satu jam kemudian, saya masih mendapatkan DNS timeout dari desktop yang menggunakan Earthlink, Verizon dan OpenDNS severs. Saya menguji untuk melihat apakah server DNS lain menjawab:

dig @ns2.example.com www.example.com +short

Ini berhasil.

Pertanyaan saya:

  1. Apakah ada yang punya jawaban mengapa server DNS lain tidak mengenai server DNS kami yang lain bahkan setelah TTL kedaluwarsa?
  2. Apakah server DNS lebih memilih server DNS utama domain (dari SOAcatatan)?
  3. Apakah ada algoritma yang digunakan untuk memilih server nama dari catatan NS yang tersedia? Saya berasumsi ini adalah implementasi khusus tetapi mungkin ada beberapa standar yang berlaku di sini.
Belmin Fernandez
sumber
TTL tidak ada hubungannya dengan apa pun. Karena tidak ada catatan yang diubah, itu tidak memiliki efek yang relevan.
David Schwartz
Ah, saya melihatnya sekarang. Doh.
Belmin Fernandez

Jawaban:

17

Ini adalah iritasi yang tidak menguntungkan. Beberapa server DNS seharusnya meningkatkan keandalan, tetapi dalam praktiknya seringkali memiliki efek sebaliknya.

Masalahnya adalah bahwa klien hanya menunggu respon yang begitu lama, dan server menunggu dengan jumlah waktu yang sama. Katakanlah Anda memiliki dua server DNS, A dan B. Say A berfungsi dan B telah gagal. Ini terjadi:

  1. Klien terhubung ke server nama Z dan meminta informasi. Z memilih B dan mengirim kueri.

  2. Klien kehabisan waktu karena server nama Z tidak merespons.

  3. Klien mencoba server nama Y. Y memilih B dan mengirim kueri.

  4. Beri nama server Z waktu habis dan coba A. Ia mendapat jawaban yang benar, tetapi klien tidak menunggu lagi.

  5. Klien kehabisan waktu karena server nama Y tidak merespons.

  6. Klien menyerah, karena kedua server namanya gagal merespons.

  7. Beri nama server Y waktu habis dan coba A. Ini mendapatkan jawaban yang benar, tetapi klien tidak menunggu lagi.

Dan tidak ada solusi yang baik. Semakin lama Anda menunggu untuk melihat apakah server nama membalas, semakin lama Anda harus menunggu karena server nama yang Anda tunggu sendiri menunggu lebih lama. Boleh dibilang, masalahnya adalah bahwa Y dan Z tidak menyerah pada B cukup cepat.

Pada dasarnya, jika ada server nama Anda yang keluar, beberapa klien akan, melalui nasib buruk semata, berhenti karena mereka hanya mencoba yang buruk.

Sisi baiknya, jika Anda memiliki dua server nama dan satu gagal, sekitar 75% server nama akan mendapatkan jawaban, bukan 0%.

David Schwartz
sumber
Saya mengerti apa yang kamu maksud. Eek. Jadi nameserver klien ( Z) tidak akan melakukan cache nameserver mana yang terakhir digunakan yang berfungsi?
Belmin Fernandez
1
Beberapa server nama melakukan itu dan terkadang itu membantu. Ini sering tergantung pada cara yang tepat di mana server nama gagal. Anda harus ingat bahwa ini semua di atas UDP, sehingga kegagalan untuk mendapatkan balasan (bahkan setelah satu atau dua transmisi ulang) tidak membuktikan ada yang salah dengan server nama.
David Schwartz
Saya membaca salinan DNS dan BIND saya (Paul Albitz dan Cricket Lui, O'Rielly p278) bahwa server Bind 8.2.3 memilih server yang merespons paling cepat dari daftar penerusannya, yang berarti bahwa jika server dalam daftar gagal, itu cukup banyak dijatuhkan secara otomatis. Bind 9 belum mengimplementasikan ini, ia meminta server yang maju dalam urutan daftar. Adakah yang tahu kalau ini sudah berubah?
Jaydee
Hanya untuk memperjelas, bagi mereka yang kurang berpengalaman dalam pengaturan DNS (butuh beberapa saat untuk memahami ini) server nama DNS Z dan Y dalam contoh ini kemungkinan besar server nama rekursif yang berbasis di jaringan klien, misalnya server DNS yang disediakan ISP untuk pelanggannya melalui DHCP. Dan masalah muncul ketika server ini memiliki nilai batas waktu lebih lama daripada resolver DNS klien (mis. Sistem operasi perangkat.)
Jordan Rieger