很高兴知道RFC在这个问题上怎么说,而且我们已经有了一个很好的权威答案,但是出于实际的目的,我发现DJBDNS的作者Daniel J. Bernstein教授的建议非常有趣。
http://cr.yp.to/djbdns/tcp.html#why(2003-01-16)
什么时候发送TCP查询?
如果您处于以下情况之一,则需要配置DNS服务器以回答TCP查询:
- 您要发布大于512字节的记录集。(这几乎总是一个错误。)
- 您要允许传出区域传输,例如到第三方服务器的传输。
- 在设置TCP服务之前,父服务器将拒绝将名称委托给您。
如果您不在任何一种情况下,则无需提供TCP服务,也不应进行设置。TCP上的DNS比UDP上的DNS慢得多,并且在本质上更容易受到拒绝服务攻击。(这也适用于BIND。)
请注意,他省略了对DNSSEC的明确提及;原因是,根据DJB的说法,DNSSEC属于“总是错误”类别。有关更多详细信息,请参见https://cr.yp.to/djbdns/forgery.html。DJB有一个替代标准,称为DNSCurve — http://dnscurve.org/,该标准已被某些提供商(如OpenDNS)独立采用。感兴趣的:https : //security.stackexchange.com/questions/45770/if-dnssec-is-so-questionable-why-is-it-ahead-of-dnscurve-in-adoption。
请注意,如果以上有关DJBDNS设置的文档表明其功能,则表明它仅支持TCP的AXFR。由于许多提供商仍在使用DJBDNS,因此如果不付出额外的努力,他们不太可能支持TCP上的DNS。
PS请注意,事实上,DJB确实在实践他的讲道。他自己的服务器(1)确实运行DNSCurve(2),但未正确应答TCP。只有+notcp
会成功(默认):
% 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
,而a +tcp
则会失败(显然会显示不同的错误消息,具体取决于选择了哪个服务器):
% 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