目录

DNS协议的axfr和ixfr解析

简介

axfr:DNS Zone Transfer Protocol (AXFR),dns的全量更新协议,dns主从架构更新,从向主获取zone的全量数据,由主返回axfr消息,全量刷新该zone的slave信息

ixfr:Incremental Zone Transfer in DNS,dns的增量更新协议,和axfr对应,axfr是一次性将一个zone的全量数据返回至Slave,而ixfr仅将增量更新数据返回

扩展内容

提到axfr和ixfr,不得不提到dns的另外一个概念,SOA记录中的序列号,SOA记录本文不作赘述,该序列号用于标识zone的版本信息,常规情况下,zone每发生一次变化,序列号加1,通过序列号标识版本,获取增量更新信息

img

如上,忽略tcp信令报文,

1,2位notify更新通告响应,表示zone发生变化,master通告slave

3,4为SOA查询响应,slave发起,请求master最新的序列号

10,12为ixfr更新请求和响应,slave发情,请求更新zone信息,axfr同理

axfr

img img

如上两张图,图一为axfr query,图二为axfr response,query很好理解,对于response,axfr结果放在answers section内,开头和结尾的SOA记录表示左括号和右括号,当中的内容表示这个zone的所有记录

ixfr

img img

如上,为一个最基本的ixfr请求与响应,与axfr不同的是,ixfr除query type与axfr不同,还会额外在第三section也就是表示权威服务器(NS服务器)区域携带一条slave当前的SOA记录,由master根据slave的序列号(上图红框),判别增量更新信息,并返回给slave

对于应答,上图包含4个SOA,同样在answer section内,开始和结尾的soa含义仍旧和axfr保持一致,代表括号,第二个SOA为老的序列号,后面跟的是需要删除掉的RRs,第三个SOA为较新的序列号,表示需要增加的RRs,下面截取rfc1995中的部分内容,多个版本更新可以顺次将更新串起来,也可以直接经过运算,得到最终增量结果。

img

上面说了ixfr正常情况的返回结果,那么还存在以下几种情况

1. ixfr获取增量失败,增量信息不完整或已丢失,直接返回全量结果,answer section同axfr (SOA、records…..、SOA)
2. ixfr请求序列号和最新序列号一致,answer区域仅返回一条SOA记录
3. ixfr请求序列号小于最新序列号,但无更新RR,直接返回两条SOA(SOA、SOA)
4. ixfr请求序列号大于master最新序列号,异常,返回axfr

文档