我如何在我的域名中使用大写字母(类似于Berkeley.EDU)

我正在使用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文件 (在一个不起眼的地方)所指出的那样,

NSD将名称标准化为小写。

如果你想让你的名字以混合大小写的forms出现,保留你放在区域文件中的任何东西,你将需要使用不同的名称服务器,比如BIND。 毕竟,这是伯克利互联网名称守护进程…

尽pipe可能会破解NSD源代码以使其保持大小写,但是您应该谨慎行事,因为可能无法预测这种更改可能会引入哪些错误或意外后果,而您的名称服务器是其中之一最后的地方,你想要显示神秘的错误。

这看起来似乎是你的DNS3服务器正在修改(正常化)它的权威logging。 看一下源代码http://www.nlnetlabs.nl/svn/nsd/trunk/dname.c ,特别是dname_make和DNAME_NORMALIZE,它只是tolower。 从http://www.nlnetlabs.nl/svn/nsd/trunk/dname.h

 #if defined(NAMEDB_UPPERCASE) || defined(USE_NAMEDB_UPPERCASE) #define DNAME_NORMALIZE toupper #else #define DNAME_NORMALIZE tolower #endif 

把SVN版本库改成dname.h重新编译应该相当容易,然后得到你想要的。 当然在这个你自己的支持。


正如迈克尔·汉普顿指出这一function

 const dname_type * dname_make_from_packet(region_type *region, buffer_type *packet, int allow_pointers, int normalize) { uint8_t buf[MAXDOMAINLEN + 1]; if(!dname_make_wire_from_packet(buf, packet, allow_pointers)) return 0; return dname_make(region, buf, normalize); } 

被硬编码参数调用或normalize所以你需要跟踪并修复。

他们只是在反向区域设置。 当你traceroute ..它击中的IP然后你的parsing器是问什么是相反的IP ..这将是

 $ORIGIN 0.32.128.in-addr.arpa. 65 IN PTR t1-3.inr-201-sut.Berkeley.EDU.