在大多数 DNS 区域示例中,如下所示
$ORIGIN .
$TTL 86400 ; 1 day
example.com IN SOA dns.example.com. hostmaster.example.com. (
2001062504 ; serial
21600 ; refresh (6 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS dns.example.com.
A 192.168.1.2
MX 10 mail.example.com.
$ORIGIN example.com.
$TTL 60 ; 1 minute
dd2 A 192.168.1.7
$TTL 86400 ; 1 day
ex1 A 192.168.1.2
ex2 A 192.168.1.2
ex3 A 192.168.1.3
ex4 A 192.168.1.4
我见过 ORIGIN 被用作 $ORIGIN . 和 $ORIGIN example.com。
这有什么用?这是用于同一区域文件内的委派吗?
更新:
我尝试如下:
$ORIGIN lab.example.com.
$TTL 1d
@ IN SOA colombo root.lab.example.com. (
2003022720 ; Serial
56800 ; Refresh
14400 ; Retry
3600000 ; Expire
2h ) ; Min
;NS Records
@ IN NS ns1.lab.example.com.
@ IN NS ns2.lab.example.com.
mail IN NS ns1.mail.lab.example.com
;A Records
ns1 IN A 192.0.2.123
ns2 IN A 192.0.2.124
$ORIGIN mail.lab.example.com.
ns1 IN A 192.0.2.155
但当我这样做
named-checkzone lab.example.com lab.example.zone
zone lab.example.com/IN: mail.lab.example.com/NS 'ns1.mail.lab.example.com.lab.example.com' has no address records (A or AAAA)
zone lab.example.com/IN: loaded serial 2003022720
OK
为什么我会收到这样的错误?
zone lab.example.com/IN: mail.lab.example.com/NS 'ns1.mail.lab.example.com.lab.example.com' has no address records (A or AAAA)
答案1
不是,$ORIGIN
这只是一个快捷方式,用于设置其后的所有记录的默认“后缀”。加载区域文件时会展开,并且外部不可见。
如果字段包含域名不是以 结尾.
,那么它就是相对的域名,并将当前来源附加到其后。当然,您仍然可以在必要时使用绝对域名(以点结尾)。
(因此使用$ORIGIN .
只会使相对example.com
和绝对example.com.
等效。)
举个例子,所有这些片段都是等效的:
根本没有 $ORIGIN:
example.com. MX mail.example.com. www.example.com. CNAME mail.example.com. ftp.example.com. CNAME ftp.iana.org. mail.example.com. A 1.2.3.4 a.ns.example.com. A 2.3.4.5
单个 $ORIGIN:
$ORIGIN example.com. @ MX mail www CNAME mail ftp CNAME ftp.iana.org. mail A 1.2.3.4 a.ns A 2.3.4.5
多个 $ORIGIN:
$ORIGIN example.com. @ MX mail www CNAME mail ftp CNAME ftp.iana.org. mail A 1.2.3.4 $ORIGIN ns.example.com. a A 2.3.4.5