เป็นการดีที่จะทราบว่า RFCs พูดอะไรเกี่ยวกับเรื่องนี้และเรามีคำตอบที่มีสิทธิ์ดีอยู่แล้ว แต่สำหรับวัตถุประสงค์ในทางปฏิบัติฉันพบคำแนะนำจากศาสตราจารย์ Daniel J. Bernstein ปริญญาเอกผู้เขียน DJBDNS ค่อนข้างสนุกสนาน
http://cr.yp.to/djbdns/tcp.html#why (2003-01-16)
คิวรี TCP จะถูกส่งเมื่อใด
หากคุณอยู่ในสถานการณ์ใดสถานการณ์หนึ่งต่อไปนี้คุณต้องกำหนดค่าเซิร์ฟเวอร์ DNS ของคุณเพื่อตอบแบบสอบถาม TCP:
- คุณต้องการเผยแพร่ชุดระเบียนที่มีขนาดใหญ่กว่า 512 ไบต์ (นี่เป็นความผิดพลาดเกือบทุกครั้ง)
- คุณต้องการอนุญาตการถ่ายโอนโซนขาออกตัวอย่างเช่นไปยังเซิร์ฟเวอร์บุคคลที่สาม
- เซิร์ฟเวอร์หลักปฏิเสธที่จะมอบชื่อให้คุณจนกว่าคุณจะตั้งค่าบริการ TCP
หากคุณไม่ได้อยู่ในสถานการณ์เหล่านั้นคุณไม่จำเป็นต้องให้บริการ TCP และคุณไม่ควรตั้งค่า DNS-over-TCP ช้ากว่า DNS-over-UDP มากและมีความเสี่ยงที่จะถูกปฏิเสธการให้บริการ (สิ่งนี้ใช้กับ BIND ด้วย)
โปรดทราบว่าเขาไม่กล่าวถึง DNSSEC อย่างชัดเจน สาเหตุที่เป็นเช่นนั้นตามที่ DJB ระบุว่า DNSSEC อยู่ในหมวด "ความผิดพลาดเสมอ" ดูhttps://cr.yp.to/djbdns/forgery.htmlสำหรับรายละเอียดเพิ่มเติม DJB มีมาตรฐานทางเลือกที่เรียกว่า DNSCurve - http://dnscurve.org/ - ซึ่งได้รับการรับรองจากผู้ให้บริการบางรายแล้ว (เช่น OpenDNS) ที่น่าสนใจ: /security/45770/if-dnssec-is-so-questionable-why-is-it-ahead-of-dnscurve-in-adoption
โปรดทราบว่าหากเอกสารข้างต้นเกี่ยวกับการตั้งค่า DJBDNS เป็นการบ่งชี้ถึงคุณลักษณะใด ๆ ของมันปรากฏว่ารองรับเฉพาะ AXFR สำหรับ TCP เนื่องจากผู้ให้บริการหลายรายยังคงใช้ DJBDNS จึงไม่น่าสนับสนุน DNS ผ่าน TCP โดยไม่ต้องใช้ความพยายามเป็นพิเศษ
PS Note ที่จริง ๆ แล้ว 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