SOA 记录
DNS 起始授权(SOA)记录是每个 DNS 区域中的必备记录,存储有关该区域的重要管理信息。它包含区域的详细信息,如主域名服务器、区域管理员的电子邮件地址、区域的序列号,以及控制域名服务器之间区域传输和更新的时间参数。
How it works
每个 DNS 区域必须恰好有一条 SOA 记录,并且它必须是区域文件中的第一条记录。SOA 记录作为有关区域信息的权威来源,对于协调主域名服务器和辅域名服务器之间的区域传输至关重要。它包含的时间参数决定了辅域名服务器检查更新的频率以及缓存区域数据的时长。
SOA 记录包含几个控制区域行为的关键字段:
**主域名服务器(MNAME):**
该区域的主(master)域名服务器的主机名。这是该区域数据的权威来源。
**管理员电子邮件(RNAME):**
负责该区域的人员的电子邮件地址,其中 @ 符号被点号替换(例如,admin.example.com 表示 admin@example.com)。
**序列号:**
区域的版本号,通常格式化为 YYYYMMDDNN(年、月、日、修订号)。每当区域文件发生更改时,此数字必须递增。辅域名服务器检查此数字以确定是否需要请求区域传输。
**刷新(Refresh):**
辅域名服务器在检查主服务器以查看区域是否已更新之前应等待的时间间隔(以秒为单位)。推荐值:86400 秒(24 小时)。
**重试(Retry):**
如果辅域名服务器在刷新期间无法联系主服务器,则应等待多长时间(以秒为单位)再次尝试。推荐值:7200 秒(2 小时)。
**过期(Expire):**
如果辅域名服务器在此时间长度(以秒为单位)内无法联系主服务器,它应停止响应该区域的查询,因为其数据太旧而不具有权威性。推荐值:3600000 秒(约 41 天)。
**最小 TTL:**
区域的默认 TTL,指定解析器应缓存否定响应(如 NXDOMAIN)的时长。
Key Points
- 每个 DNS 区域必须恰好有一条 SOA 记录作为区域中的第一条记录
- 每当区域数据更改时,序列号必须递增,以触发辅服务器上的更新
- 刷新、重试和过期值控制域名服务器之间的区域传输时间
- SOA 记录中的电子邮件地址使用点号而不是 @ 符号
- SOA 记录主要用于区域管理,通常不被最终用户查询
Common Use Cases
- 区域传输协调: 辅域名服务器使用 SOA 序列号来检测区域数据何时发生更改并需要从主服务器传输
- 区域权威识别: SOA 记录标识负责 DNS 区域的主域名服务器和管理员
- 陈旧数据防止: 过期字段确保辅服务器在长时间无法访问主服务器时停止提供过时的区域数据
- 更新调度: 刷新和重试值决定了区域更改传播到辅域名服务器的速度
code SOA 记录示例
| Type | Host / Name | Value / Points to | TTL |
|---|---|---|---|
| SOA | @ | ns1.example.com admin.example.com 2025121301 86400 7200 3600000 172800 | 3600 |
| Field | Primary NS | ns1.example.com | — |
| Field | Admin Email | admin@example.com | — |
| Field | Serial | 2025121301 | — |
| Field | Refresh | 86400 (24h) | — |
| Field | Retry | 7200 (2h) | — |
| Field | Expire | 3600000 (~41d) | — |
| Field | Minimum | 172800 (48h) | — |
* SOA 记录包含具有特定时间和管理值的多个字段。值通常以秒为单位。
Frequently Asked Questions
为什么在进行更改时必须递增序列号?expand_more
序列号是辅域名服务器检测区域数据是否发生更改的方式。当辅服务器执行刷新检查时,它会将其缓存的序列号与主服务器的当前序列号进行比较。如果主服务器的数字较高,辅服务器就知道需要请求区域传输以获取更新的记录。如果您在进行更改时忘记递增序列号,辅服务器将不知道需要更新,它们将继续提供过时的数据。
我应该使用什么序列号格式?expand_more
最常见的格式是 YYYYMMDDNN,其中 YYYY 是年份,MM 是月份,DD 是日期,NN 是当天的修订号(从 01 开始)。例如,2025121301 表示 2025 年 12 月 13 日,第一次修订。这种格式使得跟踪更改的时间变得容易,并且允许每天最多 99 次修订。但是,任何递增的数字系统都可以 - 唯一的要求是序列号必须随着每次更改而增加。
一个域名可以有多条 SOA 记录吗?expand_more
不可以,每个 DNS 区域必须恰好有一条 SOA 记录,并且它必须是区域文件中的第一条记录。拥有多条 SOA 记录或没有 SOA 记录违反了 DNS 规范,并将导致区域无法正常工作。SOA 记录定义了区域的权威来源,拥有多条将造成哪个是权威的歧义。
如果达到过期时间会发生什么?expand_more
如果辅域名服务器在过期字段指定的持续时间内无法联系主服务器,它将停止响应该区域的查询。这是一种安全机制,用于防止辅服务器提供极其过时的数据。过期值应设置得足够长,以考虑到延长的维护窗口或中断(通常为 1-4 周),但又不能太长以至于陈旧数据无限期持续存在。
我需要手动编辑 SOA 记录吗?expand_more
大多数托管 DNS 服务和控制面板都会自动处理 SOA 记录管理,包括在您进行更改时递增序列号。除非您使用 BIND 等软件运行自己的权威域名服务器,否则通常不需要手动编辑 SOA 记录。如果您确实管理自己的域名服务器,请记住在每次修改区域文件时递增序列号,或者如果您的 DNS 软件支持,请使用自动序列号管理功能。