RFC'lerin konuyla ilgili ne söylediğini bilmek güzel ve bununla ilgili çok iyi bir cevabımız var, ancak pratik amaçlar için DJBDNS'in yazarı Prof. Daniel J. Bernstein'in tavsiyesini oldukça eğlenceli buluyorum.
http://cr.yp.to/djbdns/tcp.html#why (2003-01-16)
TCP sorguları ne zaman gönderilir?
Aşağıdaki durumlardan birindeyseniz, DNS sunucunuzu TCP sorgularını yanıtlayacak şekilde yapılandırmanız gerekir:
- 512 bayttan daha büyük kayıt kümeleri yayınlamak istiyorsunuz. (Bu neredeyse her zaman bir hatadır.)
- Örneğin, bir üçüncü taraf sunucuya giden bölge aktarımlarına izin vermek istiyorsunuz.
- Bir ana sunucu, siz TCP servisini ayarlamadan önce size bir isim vermeyi reddeder.
Bu durumların hiçbirinde değilseniz, TCP hizmeti sağlamanıza gerek yoktur ve ayarlamamalısınız. DNS üzerinden TCP, UDP üzerinden DNS'den daha yavaştır ve hizmet reddi saldırılarına karşı daha savunmasızdır. (Bu BIND için de geçerlidir.)
DNSSEC'den açıkça bahsettiğini unutmayın; Bunun nedeni, DJB'ye göre, DNSSEC "her zaman bir hata" kategorisine giriyor. Daha fazla ayrıntı için https://cr.yp.to/djbdns/forgery.html adresine bakın. DJB'nin, DNSCurve - http://dnscurve.org/ - adında alternatif bir standarda sahip olan ve bazı sağlayıcılar (OpenDNS gibi) tarafından zaten bağımsız olarak kabul edilmiştir. İlgi çekici: /security/45770/if-dnssec-is-so-questionable-why-is-it-ahead-of-dnscurve-in-adoption .
DJBDNS kurulumuyla ilgili yukarıdaki dokümantasyon özelliklerinin herhangi bir göstergesiyse, yalnızca TCP için AXFR'yi desteklediği görülüyor. Pek çok sağlayıcı hala DJBDNS kullandığından, bu yüzden fazladan çaba harcamadan DNS üzerinden TCP'yi desteklemeyeceklerdir.
PS DJB'nin aslında vaaz ettiği şeyi yaptığını unutmayın. Kendi sunucuları (1), DNSCurve (2) 'yi çalıştırıyorlar, TCP'yi doğru cevaplamıyorlar. Sadece +notcp
başarılı olur (varsayılan):
% dig +trace @ordns.he.net +notcp cr.yp.to | tail
yp.to. 86400 IN NS uz5dz39x8xk8wyq3dzn7vpt670qmvzx0zd9zg4ldwldkv6kx9ft090.ns.yp.to.
yp.to. 86400 IN NS uz5jmyqz3gz2bhnuzg0rr0cml9u8pntyhn2jhtqn04yt3sm5h235c1.yp.to.
;; Received 300 bytes from 216.74.32.100#53(tonic.to) in 151 ms
cr.yp.to. 600 IN A 131.155.70.11
cr.yp.to. 600 IN A 131.155.70.13
yp.to. 3600 IN NS uz5jmyqz3gz2bhnuzg0rr0cml9u8pntyhn2jhtqn04yt3sm5h235c1.yp.to.
yp.to. 3600 IN NS uz5dz39x8xk8wyq3dzn7vpt670qmvzx0zd9zg4ldwldkv6kx9ft090.yp.to.
;; Received 244 bytes from 131.155.70.13#53(uz5jmyqz3gz2bhnuzg0rr0cml9u8pntyhn2jhtqn04yt3sm5h235c1.yp.to) in 14 ms
bir +tcp
oyunda başarısız olur (görünüşe göre sunucularından hangisinin seçildiğine bağlı olarak farklı bir hata mesajı ile):
% dig +trace @ordns.he.net +tcp cr.yp.to | tail
yp.to. 86400 IN NS uz5hjgptn63q5qlch6xlrw63tf6vhvvu6mjwn0s31buw1lhmlk14kd.ns.yp.to.
;; Received 300 bytes from 216.74.32.100#53(tonic.to) in 150 ms
;; Connection to 131.155.71.143#53(uz5dz39x8xk8wyq3dzn7vpt670qmvzx0zd9zg4ldwldkv6kx9ft090.ns.yp.to) for cr.yp.to failed: connection refused.
;; communications error to 131.155.70.13#53: end of file
;; Connection to 131.155.71.143#53(uz5dz39x8xk8wyq3dzn7vpt670qmvzx0zd9zg4ldwldkv6kx9ft090.ns.yp.to) for cr.yp.to failed: connection refused.
;; communications error to 131.155.70.13#53: end of file
;; Connection to 131.155.71.143#53(uz5dz39x8xk8wyq3dzn7vpt670qmvzx0zd9zg4ldwldkv6kx9ft090.ns.yp.to) for cr.yp.to failed: connection refused.
;; communications error to 131.193.32.147#53: end of file
;; connection timed out; no servers could be reached