DNS 的 Primary、Secondary、Hidden Primary、SOA Serial、Refresh、Retry、Expire、NOTIFY、AXFR、IXFR、TSIG 和 XFR-over-TLS 有什么区别?
DNS 的 Primary、Secondary、Hidden Primary、SOA Serial、Refresh、Retry、Expire、NOTIFY、AXFR、IXFR、TSIG 和 XFR-over-TLS 有什么区别?
一句话结论
Primary是Secondary获取zone数据的来源;Secondary通过transfer保持权威副本;Hidden Primary不直接列在公共NS中;SOA Serial表示zone版本;Refresh决定正常轮询间隔,Retry决定失败后重试,Expire决定多久联系不上Primary后停止权威服务;NOTIFY提示有变化;AXFR传整个zone,IXFR尝试传差异;TSIG以共享密钥认证DNS消息,XFR-over-TLS加密传输通道。
Primary 是什么
Primary authoritative server持有本地配置或数据库中的原始zone数据,并作为一个或多个Secondary的transfer来源。它不一定直接对公网查询提供服务,也不必等同于SOA MNAME所指主机,具体架构由运营配置决定。
Secondary 是什么
Secondary authoritative server通过AXFR或IXFR从已配置Primary获取zone副本,并对外提供相同权威数据。它不是缓存递归解析器;复制的数据具有权威性,且在Expire之前可独立响应客户端。
Primary 与旧称 Master
较新DNS术语使用Primary和Secondary,旧文档及软件配置可能使用Master与Slave。理解时可映射角色,但迁移配置必须查具体产品语法,不能仅批量替换关键字。
Hidden Primary 是什么
Hidden Primary作为transfer源但不列入zone公共NS RRset,不直接承载普通权威查询。公开Secondary从它同步,可隔离编辑与签名系统,减少原始数据源暴露并便于多供应商发布。
Hidden Primary 不是天然不可发现
即使不在NS中,网络流量、配置泄露或错误ACL仍可能暴露它。应使用防火墙、最小transfer ACL、TSIG或TLS认证保护,而不是只依赖“DNS里没写名字”。
Stealth Secondary 是什么
某些Secondary也不在公开NS中,可作为中间transfer源、备份或内部权威节点。它与Hidden Primary的区别在于zone数据来源:前者从其他服务器传输,后者持有原始配置。
Transfer Dependency Graph
多层Primary/Secondary应形成无环依赖图。Secondary可同时作为下游服务器的Primary,但不能出现transfer循环。深层拓扑会增加传播延迟,需监控每一层Serial和更新时间。
SOA Serial 是什么
SOA记录的Serial是32位zone版本号。Secondary比较本地与Primary Serial判断是否需要更新。它不是Unix时间的协议强制格式,也不能用普通整数大小关系替代Serial Number Arithmetic。
Serial 为何不能简单比较
32位值会回绕,RFC 1982定义序列号算术。直接用“远端数字大于本地”在回绕附近会判断错误。DNS软件应实现标准比较,脚本也应调用可靠库或工具。
日期格式 Serial
常见人工格式如YYYYMMDDnn便于阅读,但不是协议要求。一天修改次数超过nn范围、回滚旧zone或自动系统并发更新时容易冲突。数据库驱动系统可使用单调序列,但必须避免倒退。
Serial 不变会怎样
即使zone文件内容改变,Secondary看到相同Serial通常不会transfer,因此继续提供旧数据。每次权威内容变化都必须可靠增加Serial,并在发布管道中把Serial检查作为门槛。
Refresh 是什么
Secondary成功加载zone后等待SOA REFRESH秒,再向Primary查询SOA以检查Serial。它控制正常状态下的最大轮询节奏之一,不是记录TTL,也不决定客户端缓存多久。
Retry 是什么
若SOA检查或transfer失败,Secondary按RETRY间隔再次尝试。Retry通常小于Refresh,以便故障恢复后尽快追上。设置太短会在Primary故障时制造请求风暴。
Expire 是什么
如果Secondary在EXPIRE时间内始终无法成功刷新,它必须停止把旧副本作为有效权威zone提供。Expire是数据安全阈值,避免无限服务过时zone;它不是自动删除zone文件的保证。
Expire 后客户端看到什么
服务器可能对该zone返回SERVFAIL或不再视为已加载,具体表现依实现。监控应在远早于Expire时告警“距过期剩余时间”,而不是等公共解析中断才发现。
Minimum 与 Expire 无关
SOA MINIMUM当前主要参与负缓存TTL语义,不控制Secondary副本保留时间。Expire才定义长期无法联系Primary后的权威有效期。两个字段都以秒表示,因而容易被误配。
NOTIFY 是什么
Primary在zone变化后向Notify Set发送DNS NOTIFY,提示Secondary尽快检查。收到有效NOTIFY后,Secondary通常向通知来源查询SOA,确认Serial变大才发起AXFR或IXFR。
NOTIFY 不携带完整 zone
NOTIFY是best-effort变更提示,不是复制协议。消息丢失不会永久阻断同步,因为Secondary仍按Refresh轮询。防火墙只放行NOTIFY而阻止transfer,Serial会被发现但数据无法更新。
Notify Set 是什么
默认通常包含NS RRset中除SOA MNAME外的服务器,也可显式加入stealth Secondary。多供应商环境应配置精确目标,避免向不接受transfer的公共NS乱发通知。
为什么查询通知来源
深层依赖图中,其他已配置Primary可能尚未获得新版本。Secondary收到NOTIFY后应优先向消息来源查SOA,避免从仍落后的另一个节点判断“无需更新”。
NOTIFY 风暴怎么避免
Primary可随机延迟通知各Secondary,但不应超过Refresh。大量zone同时更新时应控制批次、连接和传输并发;Secondary也应合并重复通知,而不是每条都启动独立AXFR。
AXFR 是什么
AXFR是完整authoritative zone transfer,通过TCP传输整个zone的一致副本。响应可由多个DNS消息组成,通常以SOA记录界定开始和结束。它适合首次同步、增量历史不足或恢复完整状态。
AXFR 为什么使用 TCP
完整zone通常远超UDP消息容量,AXFR规范限定TCP。开放53/UDP供普通查询但忘记允许Primary与Secondary之间53/TCP,是transfer超时的常见原因。
AXFR 的原子加载
Secondary应先完整接收并校验新zone,成功后原子替换正在服务的副本。不能边传边把半个zone暴露给查询;失败时应保留之前有效副本,直到成功更新或Expire。
AXFR 的安全风险
若对任意客户端开放AXFR,攻击者可批量枚举主机名与记录。虽然公开DNS本身可被主动查询,完整transfer仍显著降低收集成本。Primary应按地址和密码学身份限制授权Secondary。
IXFR 是什么
IXFR是incremental zone transfer,Secondary提供当前Serial,请求从该版本到新版本的差异。若Primary保留足够变更日志,能减少带宽和加载成本,特别适合大型且频繁更新的zone。
IXFR 不保证一定增量
Primary缺少所需历史、差异过大或实现策略决定时,可以回退为完整数据响应。网络与容量规划不能假设每次IXFR都很小;监控应区分增量成功和AXFR fallback。
AXFR 与 IXFR 如何选择
首次同步必须获得完整zone;日常更新优先IXFR通常更高效。Secondary可先请求IXFR并接受完整回退。关键不是强制永不AXFR,而是确保两种路径都通过鉴权、防火墙和容量测试。
Dynamic Update 与 IXFR 的区别
DNS UPDATE允许授权客户端修改Primary zone;IXFR让Secondary获取已发生变化的差异。前者改变源数据,后者复制结果。开放Update权限不等于允许Transfer,TSIG key也应按用途分离。
TSIG 是什么
TSIG使用预共享密钥和消息摘要认证DNS消息来源并保护完整性与时间有效性,常用于zone transfer、NOTIFY和Dynamic Update。双方需要预先安全配置同一密钥及算法。
TSIG 不提供机密性
TSIG不会加密DNS内容。能监听链路的观察者仍可看到zone记录,只是难以伪造通过验证的消息。需要防被动监听时使用XFR-over-TLS或受保护网络。
TSIG 与 ACL
IP ACL限制允许发起transfer的源地址,TSIG验证持有共享密钥的实体。两者组合比单独依赖源IP更稳健,但经代理或NAT时要理解实际连接端点。密钥应按Secondary或信任域分离。
TSIG 密钥轮换
先在双方部署新密钥并允许重叠验证,切换签名来源,确认所有transfer与NOTIFY成功后再撤销旧密钥。直接替换会造成Secondary无法更新,直至Expire中断。
XFR-over-TLS 是什么
XoT用TLS承载AXFR或IXFR,为Primary与Secondary之间的transfer提供通道机密性并可提供端点认证。AXFR over TLS称AXoT,IXFR over TLS称IXoT。
XoT 与 DoT 的区别
两者都使用TLS,但用途不同:DoT通常是客户端到递归解析器的DNS查询隐私,XoT专门保护权威服务器之间的zone transfer。端口、认证和连接策略按相应标准配置。
Strict TLS 与 Mutual TLS
Strict TLS让Secondary认证连接到的Primary;Mutual TLS还让Primary认证Secondary客户端证书。部署可结合TLS认证、TSIG和ACL,需按transfer group的威胁模型选择。
Transfer Group 一致策略
一个zone可能经过多层服务器传输。只加密一段而其他段仍走明文,整体zone内容仍有弱点。RFC 9103要求保护目标下整个transfer group采用一致XoT策略,AXFR与IXFR都不能遗漏。
ZONEMD 是什么
ZONEMD为完整DNS zone提供消息摘要,可验证独立zone内容,与传输通道正交。它不替代TSIG或TLS;大型动态zone计算成本也需要评估。
多Primary 架构
Secondary可配置多个Primary并比较Serial、可达性或RTT。多Primary必须来自一致的更新系统,避免两个源独立编辑造成分叉。Serial相同但内容不同是严重配置错误。
Multi-primary 的 Serial 冲突
若两个Primary各自递增Serial并写不同内容,Secondary可能根据先后获取不确定版本。应采用单一写入源、共享数据库或可靠冲突协调,不能把DNS transfer当作双向合并系统。
Anycast Secondary
同一权威服务可在多地点Anycast,但每个节点或集群都需获得一致zone。不要用外部查询只检查一个Anycast路径;应从内部节点指标监控Serial与transfer状态。
常见错误一:只检查文件 Serial
配置文件已加Serial,不代表Primary已成功reload并服务该版本。应查询Primary权威SOA、各Secondary SOA和应用日志,验证实际运行数据而非磁盘文本。
常见错误二:NOTIFY 成功就算同步
NOTIFY响应只说明通知被接受,不证明后续SOA检查或transfer成功。要检查Secondary新Serial、transfer日志和外部权威回答。
常见错误三:TSIG key通用
一个密钥同时用于所有Secondary、Update和控制操作会扩大泄露影响。按用途和对端分离,限制算法、时间偏差、源地址和zone权限,并建立轮换清单。
防火墙检查
普通DNS查询需要53/UDP和必要的53/TCP;AXFR使用TCP,IXFR可涉及UDP或TCP并可能回退。XoT使用TLS连接。实际端口与软件配置应明确,不要只验证ICMP或UDP查询成功。
监控哪些指标
记录每个zone在每个节点的Serial、最后成功SOA检查与transfer时间、transfer类型和字节数、NOTIFY发送与接收、TSIG失败、距Expire剩余时间、加载失败和XoT证书到期。
迁移安全顺序
先让新Secondary可从Primary完成受保护的AXFR并持续接收IXFR/NOTIFY,确认公共查询一致,再把它加入NS和父区委派;等待TTL后才移除旧节点。Hidden Primary迁移也应保留transfer重叠期。
排障顺序
从Secondary权威查询本地SOA Serial,与通知来源Primary比较;检查Refresh/Retry/Expire状态、NOTIFY来源、TCP连通性、ACL与TSIG;确认IXFR历史及AXFR回退;最后检查zone校验和原子加载错误。
FAQ
1. NOTIFY会把新记录推送给Secondary吗?
不会。它只是提示尽快检查SOA,真正数据通过AXFR或IXFR传输。
2. IXFR一定比AXFR小吗?
不一定。历史不足或策略选择时会回退完整transfer,差异很大时也未必更省。
3. TSIG能隐藏zone内容吗?
不能。它提供消息认证和完整性,不提供加密;机密性使用XFR-over-TLS等机制。
4. Secondary联系不上Primary还能回答多久?
在最后成功刷新后通常可服务到SOA EXPIRE期限,具体状态应查询服务器实现。
5. Refresh越短同步越快吗?
轮询会更频繁,但NOTIFY已可快速触发;过短会增加故障时负载,应综合设置。
6. Hidden Primary需要写进公共NS吗?
不需要,这正是隐藏架构的特征;公开Secondary通过私有配置知道其transfer地址。
7. Serial相同是否证明zone内容相同?
按正确运营应相同,但错误多Primary或漏增Serial可能造成同Serial不同内容,需额外一致性检查。
8. XoT后还需要TSIG吗?
取决于认证策略。TLS提供通道保护,TSIG提供DNS消息级共享密钥认证,两者可组合并与ACL协作。
IETF权威资料
- https://www.rfc-editor.org/rfc/rfc5936.html
- https://www.rfc-editor.org/rfc/rfc1995.html
- https://www.rfc-editor.org/rfc/rfc1996.html
- https://www.rfc-editor.org/rfc/rfc1982.html
- https://www.rfc-editor.org/rfc/rfc8945.html
- https://www.rfc-editor.org/rfc/rfc9103.html
- https://www.rfc-editor.org/rfc/rfc8976.html
最终运行原则
把同步链路拆成明确证据:Serial说明版本,NOTIFY只负责加速发现,AXFR/IXFR复制数据,TSIG验证消息,TLS保护通道,Expire限制旧副本寿命。每个zone都应有无环transfer拓扑、冗余Primary、最小权限密钥、完整TCP路径和距Expire告警。发布完成的判据不是“Primary文件已保存”,而是所有权威节点实际服务同一新Serial并通过内容一致性验证。