乐闻世界logo
搜索文章和话题

什么是 DNS 区域传输(AXFR/IXFR)

3月6日 22:54

DNS 区域传输(Zone Transfer)是 DNS 服务器之间同步区域数据的过程。主服务器(Master)将完整的区域文件或增量更新传输给从服务器(Slave),确保数据一致性。

区域传输的类型

AXFR(Full Zone Transfer)

定义:传输完整的区域文件。

特点

  • 传输所有 DNS 记录
  • 数据量大,传输时间长
  • 适用于首次同步或完全重建

工作流程

shell
从服务器 → AXFR 请求 → 主服务器 主服务器发送完整区域数据 从服务器接收并更新

IXFR(Incremental Zone Transfer)

定义:只传输变更的部分。

特点

  • 只传输变更的记录
  • 数据量小,传输快
  • 适用于日常同步

工作流程

shell
从服务器 → IXFR 请求(带 SOA Serial) → 主服务器 主服务器检查 Serial 发送变更的记录 从服务器增量更新

SOA Serial 机制

Serial 的作用

SOA 记录中的 Serial 字段用于标识区域文件的版本号:

dns
example.com. 3600 IN SOA ns1.example.com. admin.example.com. ( 2024010101 ; Serial (YYYYMMDDNN) 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL

Serial 格式

格式示例说明
YYYYMMDDNN2024010101年月日+序号
Unix 时间戳1704067200Unix 时间戳
自定义1001任意递增数字

Serial 比较规则

shell
从服务器 Serial: 2024010100 主服务器 Serial: 2024010101 主服务器 Serial > 从服务器 Serial → 需要传输

区域传输配置

主服务器配置

bind
; named.conf zone "example.com" { type master; file "/etc/bind/db.example.com"; // 允许传输的从服务器 allow-transfer { 192.0.2.10; // 从服务器 1 192.0.2.11; // 从服务器 2 key tsig-key; // TSIG 认证 }; // 通知从服务器更新 also-notify { 192.0.2.10; 192.0.2.11; }; };

从服务器配置

bind
; named.conf zone "example.com" { type slave; file "/etc/bind/db.example.com.slave"; // 主服务器地址 masters { 192.0.2.1; }; // 允许通知 allow-notify { 192.0.2.1; }; };

TSIG 认证配置

bash
# 生成 TSIG 密钥 dnssec-keygen -a HMAC-SHA256 -b 256 -n HOST -T KEY tsig-key # 主服务器配置 key "tsig-key" { algorithm hmac-sha256; secret "Base64EncodedSecret=="; }; zone "example.com" { type master; file "/etc/bind/db.example.com"; allow-transfer { key tsig-key; }; }; # 从服务器配置 key "tsig-key" { algorithm hmac-sha256; secret "Base64EncodedSecret=="; }; zone "example.com" { type slave; file "/etc/bind/db.example.com.slave"; masters { 192.0.2.1 key tsig-key; }; };

区域传输过程

AXFR 传输过程

shell
1. 从服务器发送 AXFR 请求 2. 主服务器检查权限 3. 主服务器发送 SOA 记录 4. 主服务器发送所有资源记录 5. 主服务器再次发送 SOA 记录(结束标记) 6. 从服务器验证并更新数据

IXFR 传输过程

shell
1. 从服务器发送 IXFR 请求(带当前 Serial) 2. 主服务器比较 Serial 3. 如果 Serial 相同 → 返回 SOA(无需更新) 4. 如果 Serial 更新 → 发送变更记录 5. 从服务器增量更新 6. 主服务器发送 SOA(结束标记)

区域传输优化

1. 使用 IXFR 而非 AXFR

bind
; 主服务器配置 zone "example.com" { type master; file "/etc/bind/db.example.com"; allow-transfer { 192.0.2.10; }; // 启用 IXFR allow-notify { 192.0.2.10; }; };

优势

  • 减少数据传输量
  • 加快同步速度
  • 降低网络负载

2. 合理设置刷新间隔

dns
; SOA 记录 example.com. 3600 IN SOA ns1.example.com. admin.example.com. ( 2024010101 ; Serial 3600 ; Refresh(1 小时) 1800 ; Retry(30 分钟) 604800 ; Expire(7 天) 86400 ) ; Minimum TTL(1 天)

参数说明

  • Refresh:从服务器检查更新的间隔
  • Retry:刷新失败后的重试间隔
  • Expire:从服务器数据过期时间

3. 限制传输权限

bind
zone "example.com" { type master; file "/etc/bind/db.example.com"; // 只允许特定 IP 传输 allow-transfer { 192.0.2.10; 192.0.2.11; }; // 拒绝其他所有 allow-transfer { none; }; };

4. 使用 NOTIFY 机制

bind
; 主服务器主动通知从服务器 zone "example.com" { type master; file "/etc/bind/db.example.com"; also-notify { 192.0.2.10; 192.0.2.11; }; };

优势

  • 主服务器变更后立即通知
  • 减少从服务器的轮询
  • 加快同步速度

区域传输监控

监控传输状态

bash
# 查看 BIND 日志 tail -f /var/log/syslog | grep "zone transfer" # 查看传输成功/失败 tail -f /var/log/syslog | grep "AXFR\|IXFR"

监控 Serial 变化

bash
# 检查 SOA Serial dig @ns1.example.com SOA example.com +short # 对比主从 Serial dig @master.example.com SOA example.com +short dig @slave.example.com SOA example.com +short

设置告警

bash
# Serial 不一致告警 MASTER_SERIAL=$(dig @master.example.com SOA example.com +short | awk '{print $3}') SLAVE_SERIAL=$(dig @slave.example.com SOA example.com +short | awk '{print $3}') if [ "$MASTER_SERIAL" != "$SLAVE_SERIAL" ]; then echo "Serial 不一致!主: $MASTER_SERIAL, 从: $SLAVE_SERIAL" # 发送告警 fi

面试常见问题

Q: AXFR 和 IXFR 有什么区别?

A:

  • AXFR(Full Zone Transfer):传输完整的区域文件,数据量大
  • IXFR(Incremental Zone Transfer):只传输变更部分,数据量小,速度快

Q: SOA Serial 有什么作用?

A:

  • 标识区域文件的版本号
  • 用于判断是否需要区域传输
  • Serial 递增时,从服务器请求更新

Q: 如何保证区域传输的安全性?

A:

  1. TSIG 认证:使用共享密钥签名传输
  2. 访问控制:限制允许传输的 IP 地址
  3. 加密传输:使用 VPN 或加密通道

Q: 为什么需要多个从服务器?

A:

  1. 高可用性:主服务器故障时,从服务器继续服务
  2. 负载分担:多个从服务器分担查询负载
  3. 地理分布:不同地区的从服务器降低延迟

总结

方面说明
AXFR完整区域传输,数据量大
IXFR增量区域传输,数据量小
SOA Serial版本号,判断是否需要传输
配置要点allow-transfer、masters、TSIG
优化方向使用 IXFR、合理设置刷新间隔、NOTIFY 机制
安全考虑TSIG 认证、访问控制、加密传输

标签:DNS