DNS zaman aşımlarının nasıl çalışması gerekiyor?


9

Son zamanlarda sunucum için IP adresini isteyen bir uzak hizmetin (barındırılan bir DNS sağlayıcısıyla) yanıt verdiği bir sorun yaşadım:

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

(Güncelleme: Burada sözü edilen uzaktan hizmet Let's Encrypt; Sorun izleyicisine karşı bir hata bildirdim, bu da beni bu yolda yönlendirdi.)

Yerel ağımı test ederken, barındırılan DNS sunucusundan bazen boş bir DNS yanıtı aldığımı görebildim. Görünüşe göre bu aralıklı çünkü sadece DNS kayıtları önbellekte olmadığında ve sadece DNS sunucusu gerçekten meşgul olduğunda bir sorun var.

Boş bir yanıt mesajının Wireshark açıklaması:

Boş yanıtın Wireshark ekran görüntüsü

Tabii ki, çoğu DNS sorgusu ve yanıtı UDP üzerinden gönderildiğinden, yerel bir çözümleyici yanıt için sadece bir süre bekleyecek ve sonra vazgeçecektir. Şimdi merak ettiğim şey şu ki, DNS yanıt süreleri için yönergeler var mı? DNS sunucum bir tür omuz silkti ve yerel çözümleyicimin boş yanıtı çok erken gönderdiğini söyledi. Daha önce hiç bu sorunu yaşamadım, ancak hata modunda şaşırdım - hata kodu olmayan boş bir DNS yanıtı.

Birisi bunun nasıl çalışması gerektiği konusunda bazı yönergeler biliyor mu ve DNS barındırma işlemimin ne zaman / nasıl kanıtlayabildiğimi yanlış bir şey yaptığını kanıtlayabilir miyim?


1
Boş yanıt hakkında daha fazla bilgi sağlamak için lütfen soruyu güncelleyebilir misiniz? Bu, ayarlanan bayraklara ve yetki bölümünün neye benzediğine bağlı olarak bir dizi şey anlamına gelebilir. Biz çıktısını görmek için ya ihtiyacı olur dig/ nslookupveya Wireshark diseksiyonu. ( tcpdumpyeterince iyi olmayacak) Kullanıyorsanız nslookup, set debugönce çalıştırın .
Andrew B

Bir pcap var, ama burada en iyi nasıl gösterebilirim emin değilim?
djc

1
Wireshark'ta açın, pakete tıklayın, ardından DNS protokolü için bilgileri genişletin. Alt kategorileri de genişletin, ardından resim ekle düğmesini kullanarak sorunuza bir ekran görüntüsü gönderin. Ekran görüntüsünü DNS protokolü öğelerine kırpabilirsiniz.
Andrew B

Yanıtlar:


6

Baktığınız boş yanıt, bilinen sentetik bir durumdur NODATA. NODATAve NXDOMAINher ikisi de adın mevcut olmadığını, ancak belirtilen kaydın altındakiNXDOMAIN tüm adlar için de geçerli olduğunu belirtir. bu adın, talep edilmeyen türdeki kayıtlarla ilişkilendirilmesini veya istediğinizin altında başka kayıtların bulunmasını önerir. (yani )NODATAexample.test.xavamedia.nl.

Bu bağlamdaki paketiniz NODATAve NXDOMAINetkin olarak aynı: istenen adın ve türün kaydı mevcut değildi. İstenen etki alanı için yetkili bir ad sunucusuna ulaşıldı ve bu adın ve türün bir kaydının olmadığını belirterek yanıt verdi. Bu bir iletişim hatası değildir. Yetkili sunucu, verilere sahip olmadığını söyledi. Muhtemelen konuştuğunuz sunucu bu isteği zaten işlemişti ve negatif, son dört saat içinde bu kaydın yokluğunu önbelleğe aldı. (14400 saniye için SOA kaydı tarafından tanımlanan negatif önbellek aralığıdır xavamedia.nl.)

Ne NXDOMAINya NODATA kendileri tarafından bu durumda karşılaşılan ancak çözümleyici kütüphane muhtemelen arama alanının yetkili olan DNS sunucuları için tetiği bir zaman aşımı dönüşebilir DNS arama ekini, ekleyerek buradan hareket edecek zaman zaman aşımı ile sonuçlanacaktır.

Bunların hiçbirinin SERVFAILararken neden bir yanıtla karşılaştığınızı açıklayamaması gerekir mysql.xavamedia.nl.. Bu özyinelemeli sunucunun yetkili sunuculardan yanıt almasıyla ilgili bir soruna işaret eder. Yanıtlanan yetkili sunucu SERVFAIL, özyinelemeli sunucu yetkili sunucuların hiçbirine erişemedi veya özyinelemeli sunucu, döndürülen verilerin geçersiz olduğunu belirledi. Bunların hiçbiri verdiğiniz bilgilerle kanıtlanamaz.


Ayrıntılı cevabınız için teşekkürler! Bazı şeyler hala belirsiz: NODATA yanıtı yetkili sunucu tarafından bir şekilde başlatılırsa, DNS barındırma işlemimde bir sorun var, çünkü bu etki alanları uzun bir süredir (joker A kaydı nedeniyle) mevcuttu. Öyleyse diğer sorum şu: Yetkili sunucunun yanlış bir şey yapıp yapmadığını nasıl kanıtlayabilirim?
djc

NODATASenin paket yakalama kanıtıdır. İlgili soru, "yetkili bir sunucu neden böyle bir kaydın bulunmadığını yanıtladı ve söyledi?" . Maalesef, yetkili sunuculara (özyinelemeli sunucuların operatörlerini silme ve suçlama yeteneğini kaldırma), üçünden sadece birinin bazen hatalı davranabileceğini akılda tutarak, bunu yetkili sunuculara karşı doğrudan aramalarla kanıtlayamadıkça basmak zor bir konudur.
Andrew B

NODATAAdının anlamı yok var ama tipte bir kayıt talep yok. Örneğin, Akayıt istersiniz , ancak yalnızca MXkaydı vardır. Ad, DNS hiyerarşisindeki bir ara düğüm içinse ve kendi kaydı yoksa da olabilir.
Barmar

@Barmar Evet, burada söylenen şey, yetkili sunucunun bu kayıt adı + tür çiftinin yokluğunu bildirmesi ve djc'nin bir süredir mevcut olan joker karakter kaydı nedeniyle bu konuda karışıklık ifade ediyor olmasıdır.
Andrew B

Yorumum ilk noktanıza yöneliyor "NODATA ve NXDOMAIN her ikisi de adın mevcut olmadığını gösteriyor". NXDOMAINadın bulunmadığı, NODATAadın var olduğu ancak istenen kayıt türünün olmadığı anlamına gelir.
Barmar

2

Http://tools.ietf.org/rfcmarkup?rfc=1123#page-77 adresindeki "6.1.3.3 Verimli Kaynak Kullanımı" bölümünde tanımlananlar dışında belirli bir yönerge bilmiyorum.

"5 saniyeden az değil" zaman aşımı değeri belirtildi. RFC ayrıca geçici hataların önbelleğe alınması gerektiğini belirtir. Bu, istemciler RFC'nin 2.2 bölümünü ihlal ederse aşırı DNS isteklerini önlemektir. Bu bölüm, istemcilerin, yumuşak hata durumunda yeniden denemeler arasında "makul" bir süre beklemesi gerektiğini belirtir.

Bu konuyla ilgili bir Stackoverflow iş parçacığı da var, ancak bazı gerçek dünya gözlemleri dışında daha fazla bilgi içermiyor. /programming/3036054/ideal-timeout-period-for-dns-lookup

Bu konu hakkında söyleyebileceğim tek şey bu. Başka birinin ekleyeceği daha çok şey varsa, ben de ilgilenirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.