DNS 区域文件中 @ 符号是什么意思

DNS 区域文件中的 @ 展开为当前 $ORIGIN;它常等于区域顶点,但随 $ORIGIN 改变。解释相对域名、尾点和控制台主机记录写法。

最佳实践
加密网络与通信桥梁插画

直接回答:@ 是区域文件原点($ORIGIN,即当前域名)的缩写占位符,在当前原点等于区域顶点时才代表裸域;若 $ORIGIN 改为子域,@ 也随之改变。 在 example.com 的区域里,@ IN A 192.0.2.1 就是"example.com 的 A 记录指向 192.0.2.1",等价于写完整域名 example.com. IN A 192.0.2.1。

区域文件中的示意片段

SOA 的省略号需要替换为合法序列号和定时参数;本例不是可直接加载的完整区域文件。

$ORIGIN example.com.
$TTL 3600

@       IN  SOA   ns1.example.com. admin.example.com. (...)
@       IN  NS    ns1.example.com.
@       IN  NS    ns2.example.com.
@       IN  A     192.0.2.1
@       IN  MX 10 mail.example.com.
www     IN  A     192.0.2.1
mail    IN  A     192.0.2.25

逐行看 @ 的含义:

在 DNS 服务商控制台里

几乎所有 DNS 服务商面板都沿用这个约定:

主机记录(Name/Host) 实际生效的域名
@ example.com(裸域)
www www.example.com
* 通配符合成答案,受最近已存在祖先和委派边界限制
留空 多数面板等同 @

给裸域配 A 记录就填 @;想让 blog.example.com 生效就填 blog。

与完整域名的等价关系

@ 只是一种书写便利。以下两条完全等价:

@              IN  A  192.0.2.1
example.com.   IN  A  192.0.2.1

注意完整写法末尾的点——example.com. 表示绝对域名;少了点会被当作相对名,拼上原点变成 example.com.example.com.,这是区域文件配置的经典翻车点。

其他常见符号

  • *:通配符,不等于无条件匹配所有层级和所有未定义名称
  • $ORIGIN:设置当前原点,@ 与相对名都基于它展开
  • $TTL:未显式指定 TTL 的记录使用的默认生存时间

常见问题(FAQ)

Q:@ 和 www 有什么区别?
A:@ 是裸域(example.com),www 是子域(www.example.com)。两者是独立记录,需要分别配置;常见做法是两者的 A 记录指向同一台服务器,或一个 CNAME 到另一个。

Q:为什么有的面板里 @ 不生效?
A:极少数面板用留空代替 @;还有的 SaaS 平台要求 CNAME 场景下根域走 ALIAS/ANAME(因为标准 CNAME 不能用在 @ 上)。以平台文档为准。

Q:能给 @ 配 CNAME 吗?
A:若 @ 当前指向区域顶点,则 SOA/NS 与标准 CNAME 冲突。@ 本身不是禁止 CNAME 的原因;若改变 $ORIGIN,它可能指向可用 CNAME 的其他节点。DNS 别名与 HTTP 重定向也不是同一操作。

参考资料

本文依据官方资料核对,未进行现场运行测试;代码与配置示例需结合实际版本、权限和环境验证。

延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台