Parçalanma ve TCP desteği sorunlarını ele almak için DNS bayrağı günü 2020 girişimi

Bugün, bir dizi büyük DNS hizmeti ve DNS sunucusu üreticisi ortak bir etkinlik düzenleyecek DNS bayrak günü 2020dikkati odaklamak için tasarlandı karar sorunları büyük DNS mesajlarını işlerken IP parçalanmasıyla. Bu, geçen yılki "DNS bayrak günü"ndeki bu türden ikinci etkinliktir. odaklanmıştı EDNS isteklerinin doğru işlenmesi hakkında.

DNS bayrak günü 2020 girişiminin katılımcıları, EDNS için önerilen arabellek boyutlarının 1232 bayta (MTU boyutu 1280 eksi başlıklar için 48 bayt) sabitlenmesi çağrısında bulunuyorlar. çevirmek istekleri TCP üzerinden işlemek sunucularda bulunması gereken bir özelliktir. İÇİNDE RFC 1035 Yalnızca UDP yoluyla isteklerin işlenmesi desteği zorunlu olarak işaretlenmiştir ve TCP arzu edilir olarak listelenmiştir ancak işlem için gerekli değildir. Yeni RFC 7766 и RFC 5966 TCP'yi, DNS'nin düzgün çalışması için gerekli bir yetenek olarak açıkça sınıflandırır. Girişim, belirlenen EDNS arabellek boyutunun yetersiz olduğu durumlarda UDP üzerinden istek göndermekten TCP kullanmaya geçişin zorlanmasını öneriyor.

Önerilen değişiklikler, EDNS arabellek boyutunun seçimiyle ilgili karışıklığı ortadan kaldıracak ve işlenmesi genellikle istemci tarafında paket kaybına ve zaman aşımlarına yol açan büyük UDP mesajlarının parçalanması sorununu çözecektir. İstemci tarafında, EDNS arabellek boyutu sabit olacak ve büyük yanıtlar istemciye TCP üzerinden anında gönderilecektir. UDP üzerinden büyük mesajların gönderilmesinden kaçınmak, büyük paketlerin bazı güvenlik duvarlarına bırakılmasıyla ilgili sorunları da çözecek ve engellemeye izin verecektir. saldırılar parçalanmış UDP paketlerinin manipülasyonuna dayalı olarak DNS önbelleğini zehirlemek için (parçalara bölündüğünde, ikinci parça tanımlayıcıya sahip bir başlık içermez, bu nedenle yalnızca sağlama toplamının eşleşmesi için yeterli olduğu için sahte olabilir) .

Bugünden itibaren CloudFlare, Quad 9, Cisco (OpenDNS) ve Google gibi katılımcı DNS sağlayıcıları, yavaş yavaş değişecek DNS sunucularında EDNS arabellek boyutu 4096'dan 1232 bayta (EDNS değişikliği 4-6 haftaya yayılacak ve zamanla artan sayıda isteği kapsayacaktır). Yeni limite uymayan UDP isteklerine verilen yanıtlar TCP üzerinden gönderilecektir. BIND, Unbound, Knot, NSD ve PowerDNS dahil DNS sunucusu satıcıları, varsayılan EDNS arabellek boyutunu 4096 bayttan 1232 bayta değiştirmek için güncellemeler yayınlayacak.

Sonuçta bu değişiklikler, UDP DNS yanıtları 1232 baytı aşan ve TCP yanıtı gönderemeyen DNS sunucularına erişimde çözümleme sorunlarına yol açabilir. Google'da yapılan bir deney, EDNS arabellek boyutunu değiştirmenin başarısızlık oranı üzerinde neredeyse hiçbir etkisinin olmadığını gösterdi - 4096 baytlık bir arabellekle, kesilmiş UDP isteklerinin sayısı %0.345 ve TCP üzerinden ulaşılamayan yeniden denemelerin sayısı %0.115'tir. 1232 baytlık bir arabellek ile bu rakamlar %0.367 ve %0.116'dır. TCP desteğini gerekli bir DNS özelliği haline getirmek, DNS sunucularının yaklaşık %0.1'inde sorunlara neden olacaktır. Modern koşullarda, TCP olmadan bu sunucuların çalışmasının zaten dengesiz olduğu belirtilmektedir.

Yetkili DNS sunucularının yöneticileri, sunucularının ağ bağlantı noktası 53'teki TCP aracılığıyla yanıt vermesini ve bu TCP bağlantı noktasının bir güvenlik duvarı tarafından engellenmemesini sağlamalıdır. Saygın bir DNS sunucusu aynı zamanda şu değerlerden daha büyük UDP yanıtları göndermemelidir:
istenen EDNS arabellek boyutu. Sunucunun kendisinde EDNS arabellek boyutu 1232 bayta ayarlanmalıdır. Çözümleyiciler de yaklaşık olarak aynı gereksinimlere sahiptir; zorunlu olarak TCP yoluyla yanıt verme yeteneği, kesik bir UDP yanıtı alırken TCP yoluyla tekrarlanan isteklerin gönderilmesi için zorunlu destek ve EDNS arabelleğinin 1232 bayta ayarlanması.

Farklı DNS sunucularında EDNS arabellek boyutunun ayarlanmasından aşağıdaki parametreler sorumludur:

  • BIND

    seçenekler {
    edns-udp-size 1232;
    maksimum udp boyutu 1232;
    };

  • Düğüm DNS

    maksimum udp yükü: 1232

  • Düğüm Çözücü

    net.bufsize(1232)

  • PowerDNS Yetkili

    udp-kesme eşiği=1232

  • PowerDNS Yineleyici

    edns-giden-bufsize=1232
    udp-kesme eşiği=1232

  • bağsız

    edns-arabellek boyutu: 1232

  • NSDAP

    ipv4-edns-boyutu: 1232
    ipv6-edns-boyutu: 1232

    Kaynak: opennet.ru

  • Yorum ekle