@
我试图了解 A 记录和ns
记录之间的区别。
我正在尝试将子域 testing.example.com 指向另一台服务器,该服务器将拥有自己的DNS
服务器、mail
服务器并能够发布其dkim
、spf
&dmarc
记录。
据我从 sysadmin1138 提供的答案中了解:子域名的粘合记录?
我需要在example.com
域中有以下粘合记录
example.com:
[...]
testing.example.com. IN NS ns1.testing.example.com.
testing.example.com. IN NS ns2.testing.example.com.
ns1.testing.example.com. IN A 113.197.55.206
ns2.testing.example.com. IN A 113.197.55.206
那么我也应该添加A
记录并将@
其指向113.197.55.206
吗?
答案1
@ 只是“原点”。它用于域名在语法上应该出现的位置,但该名称与原点设置相同。即在 BIND 配置中您说zone "domain.com"
,则原点是domain.com
(直到通过区域文件中的 $ORIGIN 指令重新设置)并且@ NS ns
与 相同domain.com. NS ns.domain.com.
。请注意,任何没有尾随点的记录都会自动附加原点,但要利用此功能,您必须为 NS 记录保留“空名称”,这意味着其他事情(在这种情况下,请考虑语法不正确)。因此发明了符号 @。
这意味着,它与胶合记录或委托记录没有任何关系。您甚至可以选择在任何地方都不使用它,您可以明确地写出所有内容。像这样:如果您想创建 A 记录,您可以使用 @ 来做到这一点,例如@ A 192.0.2.1
,但您也可以不使用它并写为domain.com. A 192.0.2.1
(前提是原点仍然是domain.com
)。
读http://www.zytrax.com/books/dns/apa/origin.html
当子域在其区域内有 DNS 服务器名称时,需要使用胶水记录。让我们委托sub.example.com
给ns.sub.example.com
具有地址的服务器192.0.2.2
。为了使它工作,我们需要ns.sub.example.com
事先解析该 A 记录,但谁应该回答查询?我们委托区域的服务器无法回答,因为在我们解析此查询之前,我们仍然不知道它的地址。这个鸡和蛋的问题通过胶水记录解决:委派服务器将存储一条ns.sub.example.com A 192.0.2.2
记录。然后,我们还可以使用名称服务器委托记录sub.example.com. NS ns.sub.example.com.
。
或者,如果您的原点是example.com
,那将是ns.sub A 192.0.2.2
- 粘合和sub NS ns.sub
- 委托。这里不使用 @ 符号,因为我们在任何地方都找不到“空名称”。
或者,您可以设置$ORIGIN sub.example.com
,然后必须使用@:我们的记录将写为ns A 192.0.2.2
和@ NS ns
。
请注意,尽管我提出了三种使用胶合记录来表达这种委托的方式,但这三种情况表达的信息完全相同,并且工作方式也相同。这只是语法上的差异,而不是原则上的差异。
如果您将区域委托给该区域内没有其名称的服务器,则不需要粘合。例如,如果sub.example.com
将 委托给,则需要ns.example.org
单个,因为的地址将以其他方式解析。sub.example.com. NS ns.example.org.
ns.example.org
还有一点需要注意。DNS 注册商要求您至少指定两个 DNS 服务器,但这并不意味着您也需要多个 DNS 服务器。如果您两次指定同一个服务器,这不会带来任何改善。对于您的特定情况,一个 glue 和一个委托记录就足够了。