DNS 区域

协议和标准
DNS命名空间的一部分,由特定的组织或管理员管理。
← 返回词汇表

DNS区域是什么?

DNS区域是DNS命名空间中由特定组织或管理员管理的不同部分。区域包含一个或多个域的DNS记录,由权威名称服务器提供。虽然域是DNS树中的名称,但区域是定义哪些名称服务器负责回答查询的管理边界。

域与区域

理解这种区别至关重要:

域是DNS层次结构中的名称:

example.com(域)

└── www.example.com(子域)

└── blog.example.com(子域)

└── api.example.com(子域)

区域

区域是对记录的管理控制:

单个区域用于域和子域
example.com区域包含:

- example.com

- www.example.com

- blog.example.com

- api.example.com

管理者:ns1.example.com、ns2.example.com

委派的子域区域
example.com区域包含:

- example.com

- www.example.com

- 委派:api.example.com → 不同的名称服务器

api.example.com区域(单独)包含:

- api.example.com

- v1.api.example.com

- v2.api.example.com

管理者:ns1.apihost.com、ns2.apihost.com

区域成分

区域文件

包含区域所有DNS记录的文本文件:

; example.com区域文件

$TTL 3600

@ IN SOA ns1.example.com. admin.example.com. (

2024010101 ; 序列号

7200 ; 刷新

3600 ; 重试

1209600 ; 过期

3600 ; 最小TTL

)

; 名称服务器记录

@ IN NS ns1.example.com.

@ IN NS ns2.example.com.

; A记录

@ IN A 203.0.113.50

www IN A 203.0.113.50

blog IN A 203.0.113.51

; MX记录

@ IN MX 10 mail.example.com.

mail IN A 203.0.113.52

; CNAME记录

ftp IN CNAME www.example.com.

; TXT记录

@ IN TXT "v=spf1 include:_spf.google.com ~all"

SOA记录(权威起始)

每个区域必须恰好有一个SOA记录:

example.com.  IN  SOA  ns1.example.com. admin.example.com. (

2024010101 ; 序列号

7200 ; 刷新

3600 ; 重试

1209600 ; 过期

3600 ; 最小TTL

)

SOA字段
字段用途示例值
主要NS主名称服务器ns1.example.com
管理员邮箱联系人(@ → .)admin.example.com(admin@example.com)
序列号区域版本号2024010101
刷新辅助NS检查间隔7200秒(2小时)
重试刷新失败的重试间隔3600秒(1小时)
过期辅助NS放弃的时间1209600秒(14天)
最小TTL负缓存持续时间3600秒(1小时)

NS记录(名称服务器)

指定哪些服务器对区域具有权威性:

example.com.  IN  NS  ns1.example.com.

example.com. IN NS ns2.example.com.

这些告诉世界哪些服务器要查询此区域中的记录。

区域类型

主区域(主)

区域记录编辑的权威来源:

ns1.example.com(主)

→ 区域文件在这里编辑

→ 直接进行更改

→ 通知辅助区域的更新

辅助区域(从)

从主区域复制的只读副本:

ns2.example.com(辅助)

→ 从主区域检索区域数据

→ 无法直接编辑

→ 根据SOA刷新间隔自动同步

区域转移(AXFR)
1. 辅助检查SOA序列号

2. 如果主序列较高→请求完整区域转移

3. 主发送整个区域

4. 辅助更新其副本

增量转移(IXFR)
1. 辅助仅请求上次序列号后的更改

2. 主发送差异

3. 对于具有小更改的大型区域更有效

前向区域

将域名映射到IP地址(最常见):

example.com → 203.0.113.50

www.example.com → 203.0.113.50

反向区域

将IP地址映射到域名(PTR记录):

50.113.0.203.in-addr.arpa → example.com

用于:

区域委派

委派为子域创建单独的区域:

父区域(example.com)

; example.com区域

@ IN A 203.0.113.50

www IN A 203.0.113.50

; 将api.example.com委派给不同的名称服务器

api IN NS ns1.apihost.com.

api IN NS ns2.apihost.com.

; 粘胶记录(如需要)

ns1.api IN A 198.51.100.1

ns2.api IN A 198.51.100.2

委派区域(api.example.com)

完全单独的区域文件,位于不同的名称服务器上:

; api.example.com区域(在ns1.apihost.com上)

@ IN A 198.51.100.10

v1 IN A 198.51.100.11

v2 IN A 198.51.100.12

为什么要委派?

区域管理

序列号管理

序列号跟踪区域版本(通常为YYYYMMDDnn格式):

2024010101  ; 2024年1月1日,版本01

2024010102 ; 2024年1月1日,版本02

2024010201 ; 2024年1月2日,版本01

关键规则:序列号必须随每次更改增加,否则辅助区域不会更新。

区域转移安全

问题:区域转移暴露所有DNS记录 解决方案:将区域转移限制为授权的辅助区域 BIND配置
zone "example.com" {

type master;

file "/var/named/example.com.zone";

allow-transfer { 203.0.113.52; 203.0.113.53; }; // 仅辅助IP

notify yes;

};

TSIG(事务签名):使用共享密钥验证区域转移:
key "transfer-key" {

algorithm hmac-sha256;

secret "base64编码密钥";

};

allow-transfer { key transfer-key; };

检查区域配置

查询SOA记录

dig example.com SOA

; 答案部分:

example.com. 3600 IN SOA ns1.example.com. admin.example.com. (

2024010101 7200 3600 1209600 3600 )

查询NS记录

dig example.com NS

; 答案部分:

example.com. 86400 IN NS ns1.example.com.

example.com. 86400 IN NS ns2.example.com.

请求区域转移(AXFR)

dig @ns1.example.com example.com AXFR

# 如果允许,返回整个区域

# 如果被拒绝,返回转移失败

大多数公共名称服务器拒绝AXFR以防止信息泄露。

常见区域配置

简单网站

example.com区域:

@ A 203.0.113.50

www A 203.0.113.50

@ MX 10 mail.example.com

mail A 203.0.113.51

@ TXT "v=spf1 mx -all"

多服务区域

example.com区域:

@ A 203.0.113.50

www A 203.0.113.50

blog CNAME hosting.wordpress.com.

shop CNAME shops.myshopify.com.

cdn CNAME d111111abcdef8.cloudfront.net.

@ MX 10 aspmx.l.google.com.

委派子域

example.com区域:

@ A 203.0.113.50

www A 203.0.113.50

; 将api委派给AWS Route 53

api NS ns-123.awsdns-01.com.

api NS ns-456.awsdns-02.net.

; 将cdn委派给Cloudflare

cdn NS ns1.cloudflare.com.

cdn NS ns2.cloudflare.com.

区域文件最佳实践

1. 始终增加序列号:每次更改后,否则辅助区域不会更新

2. 使用基于日期的序列号:格式YYYYMMDDnn便于理解

3. 限制区域转移:仅允许授权的辅助区域

4. 使用多个名称服务器:至少2个,最好在不同网络上

5. 设置适当的TTL:平衡缓存收益与更新速度

6. 应用前测试:在加载前验证区域文件语法

7. 监控区域转移:确保辅助区域同步

8. 记录委派:记录哪些区域被委派及其位置

9. 备份区域文件:定期备份防止数据丢失

10. 使用版本控制:跟踪区域文件随时间的变化

高级区域功能

DNSSEC(区域签名)

对区域记录进行密码签名:

example.com.  IN  A       203.0.113.50

example.com. IN RRSIG A 8 2 3600 (

签名数据在此 )

防止缓存中毒和篡改。

动态DNS(DDNS)

允许程序化区域更新:

# 动态更新A记录

nsupdate -k Kupdate.key <<EOF

server ns1.example.com

update delete www.example.com A

update add www.example.com 300 A 203.0.113.51

send

EOF

用于:

区域视图(分割视界DNS)

根据客户端IP提供不同的区域数据:

内部客户端:example.com → 10.0.0.50(内部)

外部客户端:example.com → 203.0.113.50(公共)

使用场景

故障排除区域问题

区域转移失败

症状:辅助区域不同步 检查
# 检查主区域是否允许转移

dig @ns1.example.com example.com AXFR

# 检查辅助日志以查找错误

tail -f /var/log/named.log

解决方案

序列号未增加

症状:更改未传播到辅助区域 解决方案:每次区域编辑时始终增加序列号

委派不工作

症状:子域无法解析 检查
# 验证委派

dig example.com NS

dig api.example.com NS

# 应为委派的子域显示不同的名称服务器

解决方案

DNS区域是分布式DNS管理的基础——理解区域结构、委派和管理使您能够为任何规模的组织有效地架构DNS。

将知识付诸实践

使用 DomScan 的 API 检查域名可用性、健康状态等。