我正在使用 NSD3,但我尝试在我的域名中使用大写字母,但没有成功。
你的 DNS 中怎么可能有大写字母?
在各种 OSS 文档中,很常见看到 Berkeley.EDU 大写,事实上他们的 DNS 至今仍然大写:
% traceroute www.berkeley.edu
…
15 t1-3.inr-201-sut.Berkeley.EDU (128.32.0.65) 168.794 ms 169.906 ms 168.714 ms
16 t5-5.inr-210-srb.Berkeley.EDU (128.32.255.37) 168.850 ms 168.912 ms t5-4.inr-210-srb.Berkeley.EDU (128.32.255.125) 168.886 ms
在正向 DNS 中,它们也有各种域名大写:
% dig @ns.cs.berkeley.edu. cs.berkeley.edu.
…
;; AUTHORITY SECTION:
cs.berkeley.edu. 86400 IN NS cgl.UCSF.edu.
cs.berkeley.edu. 86400 IN NS adns1.berkeley.edu.
cs.berkeley.edu. 86400 IN NS ns.cs.berkeley.edu.
cs.berkeley.edu. 86400 IN NS vangogh.cs.berkeley.edu.
cs.berkeley.edu. 86400 IN NS adns2.berkeley.edu.
cs.berkeley.edu. 86400 IN NS ns.EECS.berkeley.edu.
…
正如NSD 文档中(一个晦涩的地方)所指出的,
如果您希望您的名字以大小写混合形式显示,保留您在区域文件中输入的任何内容,您将需要使用不同的名称服务器,例如 BIND。毕竟,它是Berkeley Internet Name Daemon...
虽然可以破解 NSD 源代码以使其保留大小写,但您应该谨慎这样做,因为可能无法预测此类更改可能会引入哪些错误或意外后果,并且您的名称服务器是其中之一您最不希望出现神秘错误的地方。
看起来您的 DNS3 服务器正在破坏(规范化)它具有权威性的记录。看看源代码http://www.nlnetlabs.nl/svn/nsd/trunk/dname.c尤其是 dname_make 和 DNAME_NORMALIZE,它们只是更低。来自http://www.nlnetlabs.nl/svn/nsd/trunk/dname.h
拉取 SVN 存储库对 dname.h 进行更改重新编译然后得到你想要的应该是相当容易的。当然,您需要靠自己的支持才能做到这一点。
正如迈克尔汉普顿指出的这个功能
使用硬编码参数调用,或者
normalize
您需要跟踪它并修复它。他们只是将其设置在他们的反向区域中。当你 traceroute .. 它命中 IP 然后你的解析器询问 ip 的反向是什么 .. 它会是这样的
RFC#4343描述了如何在dns中处理大写/小写: