É bom saber o que as RFCs dizem sobre o assunto, e já temos uma boa resposta autoritária sobre isso, mas para fins práticos, eu acho o conselho do Prof. Daniel J. Bernstein, PhD, o autor do DJBDNS, muito divertido.
link (2003-01-16)
When are TCP queries sent?
If you're in one of the following situations, you need to configure your DNS server to answer TCP queries:
- You want to publish record sets larger than 512 bytes. (This is almost always a mistake.)
- You want to allow outgoing zone transfers, for example to a third-party server.
- A parent server refuses to delegate a name to you until you set up TCP service.
If you aren't in any of those situations, you have no need to provide TCP service, and you should not set it up. DNS-over-TCP is much slower than DNS-over-UDP and is inherently much more vulnerable to denial-of-service attacks. (This applies to BIND too.)
Observe que ele omite uma menção explícita ao DNSSEC; A razão disso é que, segundo a DJB, o DNSSEC se enquadra na categoria de "sempre um erro". Consulte o link para obter mais detalhes. O DJB tem um padrão alternativo, chamado DNSCurve - link - que já foi adotado de forma independente por alguns provedores (como o OpenDNS). De interesse: link .
Observe que, se a documentação acima na configuração DJBDNS for qualquer indicação de seus recursos, parece que ela suporta apenas o AXFR para TCP. Como muitos provedores ainda usam DJBDNS, eles dificilmente suportariam DNS sobre TCP sem esforços extras.
P.S. Note que DJB, de fato, pratica o que ele prega. Seus próprios servidores, (1), executam o DNSCurve, (2), não respondem adequadamente ao TCP. Somente o +notcp
seria bem-sucedido (o que é padrão):
% 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
, enquanto um +tcp
falharia (aparentemente com uma mensagem de erro diferente, dependendo de qual servidor foi selecionado):
% 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