Özyinelemeli bir DNS aramasında aslında kim “recurses”?


16

Yinelemeli ve özyinelemeli DNS aramaları arasındaki farkı anlamaya çalışıyorum. Temel olarak, yinelemeli olarak, bir ürün arayan bir mağazaya çağrı yapmak gibi olduğunu düşünüyorum ve ürüne sahip olmadıklarında, size aramak için şubelerinden birinin sayısını veriyorlar ve sonra diğer şubeyi kendiniz çağırıyorsunuz. Mağaza çağırarak gibidir ve onlar sonra ne konum olmadığı zamanlarda, özyinelemeli, Karşı onlar ürün arayan sizin adınıza diğer şube arayın. Şey, DNS söz konusu olduğunda bununla ilgili çelişkili görüşler alıyorum. Özyinelemeyi düşündüğümde, şöyle görünen bir şey düşünüyorum: alternatif metin

Ancak web'deki makaleleri okurken ve hatta DNS özyinelemeli bir Google görsel araması yaparken , şuna benzer çok daha fazla örnek görüyorum: alternatif metin

Bana göre, bu ikinci örnek özyinelemeden daha yinelemeli görünüyor, çünkü "diğer DNS sunucularının" her biri "tercih edilen DNS sunucusuna" tercih edilenler adına bakmak yerine bir sonraki makinenin adresini aramaya söylüyor Dns sunucusu. Gördüğüm tek özyinelemeli öğe, tercih edilen DNS sunucusunun DNS istemcisi adına aramalar yapmasıdır, ancak bundan sonra, yinelemeli görünüyor.

Sanırım sorum şu, "özyinelemeli" DNS araması gerçekten sadece tercih edilen DNS sunucusunun istemcinin adına bir şey yapması anlamında özyinelemeli mi, ama buradan itibaren gerçekten yinelemeli mi? Google görsel aramada gördüğüm sonuçların çoğu, bana bu soruyu akla getiren, bu yayındaki ilk resmin sadece yanlış mı olduğuna inanmamı sağlıyor.


Ask Mr DNS podcast'ine bakın, eğlenceli, bilgilendirici ve 1989'dan beri DNS'i yönetiyorlar , her O'Reily DNS kitabını, vb .
Ronald Pottol

Yanıtlar:


16

Son paragrafınız doğrudur.

DNS istek başlığında (bkz. RFC 1035) istemci tarafından gönderilen "Özyineleme İstendi" (RD) bayrağı sunucuya "lütfen bu sorunun tam cevabını verin" diye sorar.

Bu sunucu yinelemeli olarak ad sunucuları zincirinden doğru cevabı ister. Bu sorguların kendileri RD bit kümesine sahip olmamalıdır.

Sonuçta özyinelemeli sunucunun yanıtı, "Özyineleme Kullanılabilir" (RA) bayrağı ayarlanarak yanıtın gerçekten de tam olarak yanıtlandığını gösterir. Buna karşılık yetkili bir sunucu RA bayrağını ayarlamaz.

IMHO, kötü bir terminoloji seçimi.

Değeri için, bulduğunuz ilk diyagram temelde yanlıştır. Kök sunucuları do not onlar sadece diğer sunuculara başvurularına sorunu, başka bir sunucuya sorguları gerçekleştirmek.


4

Anladığım kadarıyla, "özyinelemeli arama" yalnızca orijinal sorgulayıcının görüşündedir. Dolayısıyla, bir DNS sunucusuna sorar ve tamamen çözülmüş bir yanıt alırsa, "özyinelemeli bir sorgu" olur. Bu sunucu sırayla özyinelemeli veya yinelemeli arama yaparsa, orijinal sorgulayıcının ilgilenmesi gereken bir şey değildir.


1

Sorunuzdaki iki diyagramdan ilki yanlış. Kök sunucular diğer sunuculara sorgu göndermez. Kök sunucular aslında bu diyagramda gösterildiği gibi sorgular iletmiş olsaydı, DNS sistemi DoS saldırılarına gerçekte olduğundan çok daha savunmasız olurdu.

İkinci diyagram çoğunlukla doğrudur, ancak aramaların yinelemeli doğasını göstermek için çok basittir. Diyagram hala yeterince ayrıntılı olsa da, özyinelemenin nerede gerçekleştiğine işaret edebiliriz.

DNS sunucusu numarasının yanındaki 12gösterilen bir Preferred DNS servertekrarlama olur yerdir. Tercih edilen DNS sunucusu terimi standart terminoloji değildir. Bu sunucuya genellikle önbellekleme DNS imleci veya bunun kısaltması denir .

Ağ trafiğine bakıldığında gerçekten yinelemeli görünüyor. Özyineleme tamamen DNS imlecinin içindedir. Bir DNS recursor uygulamasına bakarsanız, isteklerin nasıl ele alındığına dair özyinelemeli bir yapı bulacaksınız.

Uygulama istek başına bir iş parçacığı kullanıyorsa ve aramalar özyinelemeli işlev çağrıları kullanılarak gerçekleştiriliyorsa özyineleme kolayca tespit edilebilir. Ancak daha verimli tasarımlar, istek başına bir iş parçacığı kullanmaz ve özyineleme, bunun yerine DNS tekrarlayıcısı tarafından kullanılan veri yapılarının içinde bulunur.

Özyinelemenin gerekli olmasının nedeni, yetkili DNS sunucuları arasındaki başvuruların nasıl uygulandığından kaynaklanmaktadır. Bu en iyi şekilde bir örnekle gösterilmiştir. Şemada, için yetkili DNS sunucusunu microsoft.comişaret eden yetkili DNS sunucusunu görürsünüz example.microsoft.com. Bu, NSbir ana bilgisayar adına işaret eden bir kayıt kullanılarak yapılır . Örneğin, için yetkili sunucu microsoft.com, DNS alıcısına ms.example.netyetkili olduğunu söyleyebilir example.microsoft.com.

Bu noktada, DNS imlecinin çözümlemeye ms.example.netdevam edebilmesi için önce çözmesi gerekir example.microsoft.com.

Bir ana bilgisayar adını çözümlemek için önce farklı bir ana bilgisayar adını çözümlemesi gerekir. Bu özyineleme. Bunun sonsuz özyinelemeye yol açmaması için, DNS'nin NSbelirli durumlarda kayıtlarla birlikte gönderilen tutkal kayıtları vardır .


Bunda çok hata var. "Özyineleme" teriminin kullanımının, "özyinelemeli işlev çağrıları" nın kullanılıp kullanılmadığıyla ilgisi yoktur - Vatine'nin yanıtı daha yakındır - özyineleme, bir istemciden sunucudan tam çözümlenmiş bir yanıt istediğinde yalnızca (kötü seçilmiş) bir addır . Sözde "özyinelemeli sunucular" tarafından kullanılan mekanizmaya gerçekte yineleme denir . Ayrıca, tutkal kayıtları ve "sonsuz özyineleme" önlemek için değil - onlar bu sunucular temsilci etki alanı içinde ise ad sunucularının adresini bulmak nasıl "tavuk ve yumurta" sorunu önlemek için vardır .
Alnitak

@Alnitak DNS çözünürlüğü doğası gereği özyinelemeli. Herhangi bir özyinelemeli algoritma, yürütme yığını farklı bir veri yapısına dönüştürülerek yinelemeli bir şeye dönüştürülebilir. Bu olasılık benim cevabımda zaten belirtilmiş. Ve bahsettiğiniz döngüsel bağımlılık sorunu, sonsuz bir özyinelemeden farklı bir şey değildir. İkisi gerçekten aynı şey. Altta yatan görevin döngüsel bir bağımlılık olduğunu fark etmeden saf bir özyinelemeli algoritma uygulayacaksanız, sonuç sonsuz özyineleme olacaktır.
kasperd

@Alnitak Özyineleme yığınından kurtulamaz ve bir seferde yalnızca sabit sayıda DNS adını izleyerek DNS çözümünü yinelemeli olarak gerçekleştiremezsiniz. Özyineleme yığınını farklı görünen bir veri yapısıyla temsil edebilirsiniz, ancak özünde özyinelemeli kalır. Bir alan adını, özyineleme derinliğini yalnızca bir tane olacak şekilde yapılandırmak mümkündür. Ancak tüm alan adları bu şekilde yapılandırılmamıştır.
kasperd

Ben RFC 1034 - "" Bu sorunla başa çıkmak için iki genel yaklaşım "özyinelemeli", burada ilk sunucu başka bir sunucuda istemcinin sorgusu peşinde ve sunucunun istemciyi başka bir sunucuya başvurduğu "yinelemeli" ve " sorgu " veya "veri yapıları" ile ilgisi yoktur.
Alnitak

@Alnitak Bu paragraf, cevabımdan farklı bir özyineleme anlamına geliyor. Cevabımda belirtilen özyineleme (cevabımda açıkça belirtildiği gibi) belirli bir DNS sunucusunun içinde. DNS özyinelemesini tamamen yinelemeli bir şekilde uygulamaya çalışırsanız, asla işe yaramaz. İlişkili tutkal içermeyen bir NS kaydı ile bir cevap alır almaz, orijinal çözünürlüğe devam edebilmeniz için bu NS kaydının işaret ettiği ana bilgisayar adının IP adresine bakmanız gerekir.
kasperd
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.