domain-name-system – 我可以使用带有IP地址的CNAME吗?为什么如果有效(有时)?

前端之家收集整理的这篇文章主要介绍了domain-name-system – 我可以使用带有IP地址的CNAME吗?为什么如果有效(有时)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我相信对于第一个问题最简单的答案是“不,你有”A“为此”,但我不小心设置了一些使用CNAME指向ip地址的子域,它在我办公室的几台计算机上工作.我想知道怎么可能?

现在,当我在家里检查时,我有以下错误

beast:~ viroos$host somesubdomain.somedomain.com
Host somesubdomain.somedomain.com not found: 3(NXDOMAIN)

我100%曾经在我的办公室工作(目前它看起来没有,但我在不同的机器上检查它).因此,如果由于某些特殊的网络设置或因为我在添加DNS条目后测试它,我不是100%.

我知道这个故事听起来有点疯狂/令人难以置信,但有人可以帮我解决这个难题.

//编辑:我正在添加挖掘输出

; <<>> DiG 9.6-ESV-R4-P3 <<>> somesubdomain.somedomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,status: NXDOMAIN,id: 60224
;; flags: qr rd ra; QUERY: 1,ANSWER: 1,AUTHORITY: 1,ADDITIONAL: 0

;; QUESTION SECTION:
;somesubdomain.somedomain.com.      IN  A

;; ANSWER SECTION:
somesubdomain.somedomain.com.   67  IN  CNAME   xxx.xxx.xxx.xx1.

;; AUTHORITY SECTION:
.           1800    IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2012040901 1800 900 604800 86400

;; Query time: 72 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Apr 10 00:11:01 2012
;; MSG SIZE  rcvd: 136

解决方法

CNAME记录上的数据必须始终是另一个DNS名称 – 这是CNAME的整个点.

正如RFC 1034简明扼要地说,CNAME中的数据应该是:

CNAME           a domain name.

虽然,如果您想要指向一个IP地址,那么您的机票是:

A               For the IN class,a 32 bit IP address

CNAME的设计和实现是DNS别名;它没有在该数据字段中拥有IP地址的概念.因此,它被解释为另一个DNS名称的别名,如设计的那样;毕竟,IP地址符合DNS名称的语法.

所以,举个例子,假设您的DNS数据是:

somesubdomain.somedomain.com.   60  IN  CNAME   192.0.2.1.

您正在查询的递归DNS服务器看到该记录是CNAME,并且表明您需要它包含的实际数据.没有找到除CNAME之外的其他记录,因此没有给客户端的答案.

它尝试在域0.2.1内查询主机名192的记录.它没有为该名称缓存任何内容,因此它会询问根服务器.它们服务于.com和.net等TLD请求,但此请求是对.1的请求.他们立即回应没有这样的,这就是递归发送给你的东西.

您在dig中看到的响应是您的递归名称服务器,“好吧,您寻找的名称指向其他地方,并且某处不存在 – 如果您不相信我,请询问根服务器”.

所以,是的,在CNAME记录中放置一个IP地址永远不会有效,我怀疑正在运行的系统通过其他机制(如主机文件或本地名称解析)正常运行 – 调查其名称解析行为.

猜你在找的HTML相关文章