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:
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?
dig
/nslookup
atau pembedahan Wireshark. (tcpdump
tidak akan cukup baik) Jika Anda menggunakannslookup
, jalankanset debug
terlebih dahulu.Jawaban:
Respons kosong yang Anda lihat adalah kondisi sintetis yang dikenal sebagai
NODATA
.NODATA
danNXDOMAIN
keduanya menunjukkan bahwa nama itu tidak ada, tetapiNXDOMAIN
berlaku untuk semua nama di bawah catatan yang ditunjukkan juga.NODATA
menyarankan bahwa nama itu dikaitkan dengan catatan dari jenis yang tidak diminta, atau bahwa ada catatan lain di bawah yang Anda minta. (yaituexample.test.xavamedia.nl.
)Pengambilan Anda dari
NODATA
danNXDOMAIN
secara 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 untukxavamedia.nl.
)Baik
NXDOMAIN
atauNODATA
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
SERVFAIL
respons ketika melihat ke atasmysql.xavamedia.nl.
. Itu menunjuk pada masalah dengan server rekursif mendapatkan jawaban dari server otoritatif. Baik server otoritatif menjawabSERVFAIL
, 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.sumber
NODATA
paket 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.NODATA
berarti nama itu memang ada, tetapi tidak memiliki catatan dari jenis yang diminta. Misalnya Anda memintaA
catatan, tetapi hanya memilikiMX
catatan. Itu juga bisa terjadi jika nama untuk node perantara dalam hirarki DNS dan tidak memiliki catatan sendiri.NXDOMAIN
berarti nama tidak ada,NODATA
berarti nama memang ada tetapi jenis catatan yang diminta tidak ada.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.
sumber