Bagaimana seharusnya waktu tunggu DNS berfungsi?

9

Baru-baru ini saya memiliki masalah ketika layanan jarak jauh yang meminta alamat IP untuk server saya (dengan penyedia DNS yang di-host) merespons dengan:

DNS problem: SERVFAIL looking up A for mysql.xavamedia.nl

(Pembaruan: layanan jarak jauh yang disebutkan di sini adalah Let's Encrypt; Saya mengajukan bug terhadap pelacak masalah mereka, yang membawa saya ke jalur ini.)

Dalam pengujian pada jaringan lokal saya, saya dapat melihat bahwa saya terkadang mendapatkan respons DNS kosong dari server DNS yang dihosting. Tampaknya ini terputus-putus karena hanya terjadi ketika catatan DNS tidak ada dalam cache, dan itu hanya masalah ketika server DNS benar-benar sibuk.

Berikut adalah deskripsi Wireshark tentang pesan respons kosong:

Tangkapan layar Wireshark dari respons kosong

Tentu saja, karena sebagian besar permintaan DNS dan tanggapan dikirim melalui UDP, resolver lokal hanya akan menunggu beberapa saat untuk tanggapan, dan kemudian menyerah. Apa yang sekarang saya pikirkan adalah apakah ada panduan untuk waktu respons DNS? Jenis DNS hoster saya mengangkat bahu dan mengatakan bahwa resolver lokal saya mengirim respons kosong terlalu cepat. Saya belum pernah mengalami masalah ini sebelumnya, tetapi saya terkejut dengan mode kegagalan - respons DNS kosong tanpa kode kesalahan.

Apakah ada yang tahu beberapa pedoman tentang bagaimana ini seharusnya bekerja, dan kapan / bagaimana saya bisa membuktikan hosting DNS saya melakukan sesuatu yang salah?

djc
sumber
1
Bisakah Anda memperbarui pertanyaan untuk memberikan informasi lebih lanjut tentang respons kosong? Itu bisa berarti sejumlah hal tergantung pada flag yang ditetapkan dan seperti apa bagian otoritas. Kita perlu melihat hasil dari dig/ nslookupatau pembedahan Wireshark. ( tcpdumptidak akan cukup baik) Jika Anda menggunakan nslookup, jalankan set debugterlebih dahulu.
Andrew B
Saya memiliki pcap, tetapi tidak yakin bagaimana cara terbaik untuk menunjukkannya di sini?
djc
1
Buka di Wireshark, klik pada paket, lalu perluas informasi untuk protokol DNS. Luaskan subkategori juga, lalu posting tangkapan layar di pertanyaan Anda menggunakan tombol sisipkan gambar. Anda dapat memotong tangkapan layar ke hal-hal protokol DNS.
Andrew B

Jawaban:

6

Respons kosong yang Anda lihat adalah kondisi sintetis yang dikenal sebagai NODATA. NODATAdan NXDOMAINkeduanya menunjukkan bahwa nama itu tidak ada, tetapi NXDOMAINberlaku untuk semua nama di bawah catatan yang ditunjukkan juga. NODATAmenyarankan bahwa nama itu dikaitkan dengan catatan dari jenis yang tidak diminta, atau bahwa ada catatan lain di bawah yang Anda minta. (yaitu example.test.xavamedia.nl.)

Pengambilan Anda dari NODATAdan NXDOMAINsecara efektif sama dalam konteks ini: catatan nama dan tipe yang diminta tidak ada. Server nama yang otoritatif dicapai untuk domain yang diminta, dan itu menjawab kembali dengan menyatakan bahwa catatan nama dan jenis itu tidak ada. Ini bukan kesalahan komunikasi. Server yang berwenang mengatakan bahwa ia tidak memiliki data. Kemungkinan besar server yang Anda ajak bicara telah memproses permintaan ini dan negatif cache tidak adanya catatan itu dalam empat jam terakhir. (14400 detik adalah interval cache negatif yang ditentukan oleh catatan SOA untuk xavamedia.nl.)

Baik NXDOMAINatau NODATA sendiri akan menghasilkan batas waktu ketika ditemui dalam hal ini, tetapi perpustakaan resolver Anda mungkin akan pindah dari sini ke menambahkan akhiran pencarian DNS, yang pada gilirannya dapat memicu batas waktu untuk server DNS otoritatif dari domain pencarian.

Perlu dicatat bahwa tidak satu pun dari ini yang menjelaskan mengapa Anda menemui SERVFAILrespons ketika melihat ke atas mysql.xavamedia.nl.. Itu menunjuk pada masalah dengan server rekursif mendapatkan jawaban dari server otoritatif. Baik server otoritatif menjawab SERVFAIL, server rekursif tidak dapat mencapai server otoritatif, atau server rekursif menentukan bahwa data yang dikembalikan tidak valid. Semua ini tidak dapat dibuktikan dengan informasi yang Anda berikan.

Andrew B
sumber
Terima kasih atas jawaban terinci Anda! Beberapa hal masih belum jelas: jika respons NODATA diprakarsai oleh server otoritatif entah bagaimana, hosting DNS saya memiliki masalah, karena domain ini sudah ada sejak lama (berdasarkan catatan wild card A record). Jadi pertanyaan saya yang lain adalah, bagaimana saya bisa membuktikan apakah server yang berwenang melakukan sesuatu yang salah?
djc
Dalam NODATApaket capture Anda adalah buktinya. Pertanyaan terkait adalah "mengapa server otoritatif menjawab dan mengatakan bahwa tidak ada catatan seperti itu ada?" . Sayangnya ini adalah masalah yang sulit untuk ditekan kecuali jika Anda dapat membuktikannya dengan pencarian langsung terhadap server otoritatif (menghilangkan kemampuan untuk mengangkat bahu dan menyalahkan operator dari server rekursif), perlu diingat bahwa hanya satu dari ketiganya yang kadang-kadang mengalami kesalahan perilaku.
Andrew B
NODATAberarti nama itu memang ada, tetapi tidak memiliki catatan dari jenis yang diminta. Misalnya Anda meminta Acatatan, tetapi hanya memiliki MXcatatan. Itu juga bisa terjadi jika nama untuk node perantara dalam hirarki DNS dan tidak memiliki catatan sendiri.
Barmar
@Barmar Ya, apa yang dikatakan di sini adalah bahwa server otoritatif melaporkan tidak adanya pasangan nama + jenis rekaman itu, dan djc mengungkapkan kebingungan mengenai hal ini karena catatan wildcard yang telah ada selama beberapa waktu.
Andrew B
Komentar saya ditujukan ke poin pertama Anda "NODATA dan NXDOMAIN keduanya menunjukkan bahwa nama itu tidak ada". NXDOMAINberarti nama tidak ada, NODATAberarti nama memang ada tetapi jenis catatan yang diminta tidak ada.
Barmar
2

Saya tidak tahu pedoman khusus apa pun kecuali yang ditentukan di bagian "6.1.3.3 Penggunaan Sumber Daya Efisien" dari RFC 1123 http://tools.ietf.org/rfcmarkup?rfc=1123#page-77

Ada nilai batas waktu "tidak kurang dari 5 detik" yang ditentukan. RFC juga menyatakan bahwa kegagalan sementara harus di-cache. Ini untuk mencegah permintaan DNS dalam jumlah yang berlebihan jika klien melanggar bagian 2.2 dari RFC. Bagian itu menyatakan bahwa klien harus menunggu jumlah waktu yang "masuk akal" antara percobaan ulang jika terjadi kegagalan lunak.

Ada juga utas Stackoverflow tentang topik ini, tetapi tidak mengandung lebih banyak informasi kecuali untuk beberapa pengamatan di dunia nyata. /programming/3036054/ideal-timeout- Period-for-dns-lookup

Itu yang bisa saya katakan tentang topik ini. Jika ada orang lain yang ingin ditambahkan, saya akan tertarik juga.

Janek Bevendorff
sumber