主机记录和 A 记录之间有什么实际区别?两者都指向 IP,那么有什么区别呢?
答案1
在实际的 DNS 规范中,没有主机记录这样的东西。主机记录通常是DDI(DNS、DHCP 和 IPAM)类似的解决方案信息块和其他。它们包括各种 DNS 记录类型(A、AAAA、PTR、CNAME 等)以及与“主机”相关的其他元数据。
答案2
正如其他人所说,DNS 规范中没有“主机”记录之类的东西。大多数人会混淆主机名和 DNS 记录,因为 DNS 经常用于存储主机名和 IP 地址之间的关系,用A
、AAAA
和PTR
记录类型表示。
但 DNS 远不止这些:
- DNS 是一个广泛分布的层次化数据库,可用于存储任意数量的内容。它恰好专门用于将名称映射到 IP 地址,反之亦然,因为这正是互联网最需要这种数据库的功能。
- 所有主机名都是合法的 DNS 标签。(标签 = DNS 记录的左侧)
- 并非所有 DNS 标签都是合法的主机名实体。这就是人们感到困惑的地方。维基百科很好地涵盖了这个主题,但简而言之许多字符将通过 DNS 语法检查,但这些字符在主机名中不合法。这是一个非常重要的提示,表明 DNS 不受主机名规范的约束。
为了总结和强调上述主题,我将从RFC-2181:
- 名称语法
有时人们会认为域名系统仅用于将互联网主机名映射到数据,将互联网地址映射到主机名。这是不正确的,DNS 是一个通用的(尽管有些有限)分层数据库,可以存储几乎任何类型的数据,用于几乎任何目的。
DNS 本身仅对可用于识别资源记录的特定标签施加一个限制。该限制与标签和全名的长度有关。任何一个标签的长度限制在 1 到 63 个八位字节之间。完整域名限制为 255 个八位字节(包括分隔符)。零长度全名定义为表示 DNS 树的根,通常写为并显示为“。”。除了这些限制之外,任何二进制字符串都可以用作任何资源记录的标签。同样,任何二进制字符串都可以用作任何记录的值,这些记录的部分或全部值包含域名(SOA、NS、MX、PTR、CNAME 以及可能添加的任何其他字符串)。DNS 协议的实现不得对可使用的标签施加任何限制。特别是,DNS 服务器不得拒绝为区域提供服务,因为它包含某些 DNS 客户端程序可能不接受的标签。 DNS 服务器可以配置为在加载包含可能被视为可疑的标签的主要区域时发出警告,甚至拒绝加载,但是默认情况下不应发生这种情况。
但请注意,使用 DNS 数据的各种应用程序可能会对其环境中可接受的特定值施加限制。例如,任何二进制标签都可以有 MX 记录并不意味着任何二进制名称都可以用作电子邮件地址的主机部分。DNS 客户端可以对其用作 DNS 查找请求密钥的值以及 DNS 返回的值施加适合其情况的任何限制。如果客户端有此类限制,则它应全权负责验证来自 DNS 的数据,以确保在使用这些数据之前符合要求。
最后一段尤其重要。DNS 标准对于合法存储的内容非常开放在 DNS 中但其他标准可以决定服务如何消耗DNS 可以对应用程序应该(和不应该)期望在那里找到的内容施加任何限制。主机名的情况正是如此,主机名由 RFC 定义外部DNS 标准。
答案3
DNS 指定 A 记录作为一种可能的记录类型。A 记录有时被称为主机记录。它们是同一件事,但我更喜欢使用“A 记录”,因为这是它的正式名称。
您是否遇到过这两个概念似乎有不同的含义的情况?我知道 Infoblox DNS 设备支持“主机对象”的概念,这是其配置中的数据结构,可转换为 DNS 服务器中的 A 和 PTR 记录。
答案4
是的,我正在处理 Infoblox。你们说得对 - 主机记录是 Infoblox 创建的对象,用于同时创建 A 记录和 PTR 记录。
还可以创建单独的正向和反向查找。尽管在搜索大型数据库时速度有点慢,但 Infoblox 在很多方面都很有用。
谢谢你的意见。学到了很多 :)