我怎样才能在我的域名中使用大写字母(类似于 Berkeley.EDU)

我怎样才能在我的域名中使用大写字母(类似于 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.

答案1

如(一个不起眼的地方)所述NSD 的文档

NSD 将名称规范化为小写。

如果您希望名称以大小写混合的形式显示,并保留区域文件中的内容,则需要使用其他名称服务器,例如 BIND。毕竟,伯克利互联网名称守护进程...

虽然有可能破解 NSD 源代码以使其保留大小写,但您应该谨慎行事,因为可能无法预测这种更改可能引入什么错误或意外后果,并且您的名称服务器是您最不希望出现神秘错误的地方之一。

答案2

您的 DNS3 服务器似乎正在破坏(规范化)其权威记录。请查看源代码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 并重新编译,然后获得所需内容应该相当容易。当然,在执行此操作时,您需要自行获得支持。


正如 Michael Hampton 指出的,此功能

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因此您需要追踪它并修复它。

答案3

他们只是在反向区域中设置了它。当您跟踪路由时,它会命中 IP,然后您的解析器会询问 IP 的反向是什么。它将类似于

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

答案4

这是RFC#4343描述如何处理大写/小写

DNS 树中的每个节点都有一个名称,该名称由零个或多个标签组成 [STD13、RFC1591、RFC2606],这些标签在不区分大小写时尚

相关内容