摘要
- RFC 2182 于 1997 年 7 月以 BCP 16 发布,把服务器布局视为运行可靠性问题。
- 它建议多数组织域名配置三台服务器,但要求至少一台与其他服务器明显分隔。
- 这是一项运行建议;NS 列表本身不能证明供电、路由、上游或实际可达性彼此独立。
一个区域可以公布三台名称服务器,却只有一条实际可用的应答路径。如果它们都依赖同一条接入链路、同一栋楼或同一套电源,一次故障就可能让整组服务器同时不可达。数字看起来有冗余,依赖关系却没有。
Robert Elz、Randy Bush、Scott Bradner 和 Michael Patton 在 RFC 2182《辅助 DNS 服务器的选择与运行》中处理的正是这个运行问题。IETF 于 1997 年 7 月将其发布为最佳当前实践 BCP 16。它不是一套新 DNS 协议,而是试图让既有系统写在区域文件之外的冗余在真实网络中成立。
DNS 原本就要求委派区域拥有多个权威服务器。RFC 2182 区分了两个容易混为一谈的角色:主服务器保存本地配置的区域数据,辅助服务器通过区域传送从主服务器取得数据。但递归解析器和父区域不会依据主辅关系给应答排序。对 DNS 其余部分而言,它们只是多台被列出的权威服务器。只有当其他服务器或其共享设施不可用时,客户端仍能到达辅助服务器,它才构成帮助。
作者从他们当时已观察到的运行问题出发:辅助服务器选得不好。服务器的地理位置和网络连接多样性会影响区域可靠性与访问表现。把所有服务器放在同一个本地站点被明确称为糟糕做法。一条链路、一个站点、一栋楼、一间机房或一套供电发生故障,都可能同时切断它们。要问的不是远处的机器是否天然安全,而是哪些故障会让多台服务器一起消失。
RFC 2182 建议多数组织级区域使用三台服务器,其中至少一台应与其余服务器“相距甚远”。需要更高可靠性的区域可以考虑四台或五台。数量无限增加也不是更好:更大的 NS 集合会扩大 DNS 数据包,并增加未被发现的配置错误机会。三台是布局讨论中的经验建议,不是普遍适用的合规线。
这项建议还暴露了现实依赖:谁来托管远端副本?RFC 描述了规模相近的组织互相提供辅助服务。由于交换的区域数据本就可以公开获取,这样做不会泄露机密。它把冗余分配给不同运营者,却也要求持续维护区域传送、序列号和可达性。
BCP 没有测量部署是否遵从建议,也没有证明某个三台服务器的设计经受过具体事故。公布一组 NS 记录,不能证明两家服务商拥有不同上游、机房电力互不依赖,或压力下路由仍然分离。“三台服务器”证明的只是数量,不是故障路径审计。
1997 年的文件还有一句后来过时的负面应答缓存说法:它笼统称 DNS 通常不缓存否定结果。RFC 2308 于次年规范了负缓存,RFC 编辑部的勘误 4631 后来指出这一概括并不准确。运行最佳实践也有发布日期和维护历史。
RFC 2182 留下的持久洞见比一个神奇数字更具体:冗余取决于依赖关系。第三台服务器只有在改变了哪些部件会一起故障时,才真正有意义。
来源
RFC 2182 / BCP 16 —《辅助 DNS 服务器的选择与运行》。
RFC 1034 —《域名:概念与设施》。
RFC 1035 —《域名:实现与规范》。
RFC 2308 —《DNS 查询的负缓存》。
RFC 编辑部勘误 4631 — 对 RFC 2182 负缓存概括性说法的后续修正。
IETF 第 40 次会议记录 — 1997 年 12 月 DNS 工作组讨论。
ISC:BIND 历史 — BIND 8 发布时间线。
RFC 1982 —《序列号算术》,用于理解区域序列号维护。
DNSIND 草案 -06 — RFC 2182 的 1997 年 5 月草案版本。
Heng Lu:Note 70 — 仅作编辑视角,不是 DNS 史料。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
