Gesaan dan konteks
Soalan teknikal umum ini menguji semantik protokol DNS, caching, dan diagnosis insiden. Jawapan yang kukuh membezakan antara "nama tidak wujud", "nama wujud tetapi tidak mempunyai jenis yang diminta", dan "resolusi gagal", kemudian menerangkan sebab membetulkan data autoritatif tidak memadamkan jawapan negatif lama secara serta-merta daripada penyelesai rekursif.
Perkara yang dinilai oleh penemu duga
- Membezakan NXDOMAIN daripada NODATA dan bukannya memanggil setiap jawapan kosong sebagai "DNS tiada".
- Menerangkan cara data SOA membekalkan masa cache negatif dan cara caching kegagalan dihadkan.
- Mengesan laluan stub, penyelesai rekursif, dan pelayan autoritatif dengan bukti serta baki TTL.
- Mereka bentuk prosedur penciptaan rekod, pemulihan (rollback), dan pemantauan tanpa pembersihan cache secara membuta tuli atau ribut percubaan semula (retry storms).
Soalan penjelasan untuk ditanya
Sahkan nama yang ditanya, jenis rekod, cap masa, kod respons, status penerbitan zon autoritatif, pengesahan DNSSEC, sama ada semua penyelesai atau hanya satu rangkaian yang terjejas, dan sama ada cache DNS tempatan, service-mesh, atau aplikasi terlibat.
Kerangka jawapan 30 saat
Saya akan menanyakan pelayan autoritatif terlebih dahulu, kemudian beberapa penyelesai rekursif sambil merekodkan NXDOMAIN, NODATA, atau SERVFAIL, SOA dalam bahagian Authority, dan TTL. NXDOMAIN menyatakan nama tidak wujud; NODATA menyatakan ia wujud tanpa jenis yang diminta, dan kedua-duanya boleh dicache secara negatif menggunakan parameter SOA. Jika autoriti adalah betul tetapi rekursi masih mengembalikan jawapan lama, tunggu TTL negatif atau gunakan pembatalan penyelesai yang terkawal; menyegarkan satu klien tidak boleh mengosongkan cache huluan.
Jawapan mendalam langkah demi langkah
1. Asingkan hasil negatif
NXDOMAIN bermakna rantaian autoritatif menyatakan nama yang ditanya tidak wujud. NODATA biasanya mempunyai respons yang berjaya dengan bahagian jawapan yang kosong, bermakna nama itu wujud tetapi tidak mempunyai jenis RR yang diminta. SERVFAIL bermakna proses resolusi gagal, contohnya kerana autoriti tidak dapat dihubungi atau pengesahan DNSSEC gagal; ia bukan bukti bahawa nama itu tiada.
2. Terangkan dari mana jangka hayat negatif datang
RFC 2308 membenarkan respons NXDOMAIN dan NODATA membawa SOA. Penyelesai rekursif menggunakan TTL negatif, yang biasanya dihadkan oleh nilai yang lebih kecil antara SOA MINIMUM dan SOA TTL dalam pelaksanaan semasa, untuk menentukan tempoh jawapan perlu dikekalkan. Pengendali harus menganggap nilai tersebut sebagai tetingkap penyebaran (propagation window) untuk mencipta atau menarik balik rekod. RFC 9520 juga memerlukan caching negatif yang terhad untuk kegagalan resolusi supaya gangguan sementara tidak menyekat pemulihan selama-lamanya.
3. Bina diagnosis yang boleh diulang
Jalankan dig @authoritative-server api.example.com A +norecurse untuk mengesahkan jawapan autoritatif, SOA, dan siri, kemudian jalankan pertanyaan yang sama terhadap beberapa penyelesai rekursif. Rekodkan status, bahagian Authority, TTL SOA, dan cap masa. Autoriti-positif ditambah NXDOMAIN rekursif menunjukkan cache negatif atau laluan delegasi; NXDOMAIN pada autoriti menunjukkan penerbitan zon atau penamaan; SERVFAIL menunjukkan kebolehcapaian, delegasi, atau DNSSEC.
4. Cegah amplifikasi cache dan ribut percubaan semula
Aplikasi tidak seharusnya melakukan gelung sibuk (busy-loop) pada jawapan negatif. Gunakan undur terhad (bounded backoff) untuk penemuan perkhidmatan dan log kod respons bersama usia cache. Terbitkan nama baharu sebelum trafik pengeluaran tiba supaya pertanyaan pertama tidak menyemai banyak cache rekursif dengan NXDOMAIN. Selepas perubahan, pantau nisbah jawapan negatif mengikut penyelesai dan rantau untuk membezakan cache yang belum tamat tempoh daripada kegagalan autoritatif yang berterusan.
5. Rancang pemulihan dan rollback
Anda tidak boleh memaksa setiap penyelesai rekursif awam memadamkan entri negatif dengan serta-merta. Tunggu TTL negatif, bersihkan penyelesai yang anda kawal, baiki autoriti atau DNSSEC, dan kekalkan titik akhir lama atau laluan penemuan alternatif semasa tetingkap tersebut. Sahkan tingkah laku autoritatif, rekursif, dan permintaan sebenar secara berterusan; alih keluar sandaran (fallback) hanya selepas kadar NXDOMAIN dan SERVFAIL kembali ke garis dasar (baseline).
Contoh jawapan berkualiti tinggi
Saya mengasingkan NXDOMAIN, NODATA, dan SERVFAIL terlebih dahulu. NXDOMAIN bermakna nama tiada, NODATA bermakna nama wujud tanpa jenis yang diminta, dan SERVFAIL bermakna rantaian resolusi gagal. Saya menanyakan autoriti untuk zon dan siri, kemudian membandingkan beberapa penyelesai rekursif, kod respons mereka, SOA bahagian Authority, dan baki TTL. Jawapan negatif boleh kekal dicache mengikut TTL negatif SOA, jadi rekod yang baru dicipta mungkin masih kelihatan seperti NXDOMAIN; penyelesai juga mungkin mengekalkan hasil kegagalan yang terhad. Saya mengelakkan ribut percubaan semula aplikasi, menerbitkan nama sebelum pertukaran (cutover), menggunakan tetingkap TTL negatif yang dirancang, dan memantau pelbagai rantau serta trafik sebenar sambil mengekalkan titik akhir sandaran.
Kesilapan biasa
- Memperlakukan NXDOMAIN, NODATA, dan SERVFAIL sebagai satu hasil kosong yang sama.
- Membersihkan cache komputer riba sambil mengabaikan keadaan penyelesai rekursif.
- Menganggap bahawa mengedit SOA memendekkan entri negatif yang telah disimpan secara serta-merta.
- Mencuba semula secara berterusan sedangkan perkhidmatan autoritatif masih rosak.
- Hanya menyemak A dan melupakan AAAA, delegasi, DNSSEC, atau ejaan.
Soalan susulan dan respons
Mengapakah rekod A baharu masih mengembalikan NXDOMAIN?
Sahkan bahawa autoriti telah memuatkan zon dan delegasi adalah betul. Jika autoriti mengembalikan A, NXDOMAIN rekursif biasanya merupakan entri negatif terdahulu; tunggu sehingga TTL negatif SOA tamat tempoh.
Bolehkah NODATA melambatkan rekod AAAA yang kemudian?
Ya. Penyelesai mungkin mencache bahawa nama itu wujud tanpa AAAA, jadi klien boleh terus melihat jawapan kosong sehingga TTL negatif khusus jenis tersebut tamat tempoh.
Bolehkah SERVFAIL dicache juga?
Ya, panduan moden memerlukan caching terhad untuk kegagalan resolusi, dengan had pelaksanaan. Selepas membaiki autoriti atau DNSSEC, sahkan dengan beberapa penyelesai sementara tetingkap kegagalan tersebut dikosongkan.
Bolehkah subdomain rawak memintas caching negatif?
Ia bukan penyelesaian menyeluruh. Nama rawak menambah pertanyaan autoritatif dan tekanan cache serta tidak membaiki ralat delegasi, zon, atau DNSSEC. Baiki fakta autoritatif dan biarkan entri sedia ada tamat tempoh.