我经常看到类似的BIND区域文件:
$ORIGIN 2.0.3.0.8.b.d.0.1.0.0.2.ip6.arpa.
$TTL 604800
@ IN SOA ns1.example.org. hostmaster.example.org. (
1978022513 ; Serial
10800 ; Refresh
3600 ; Retry
2419200 ; Expire
604800 ) ; Default TTL
NS ns1.example.org.
NS ns2.example.org.
TXT "2001:db8:302::/48 Example IPv6 reverse"
$ORIGIN 0.0.0.0.2.0.3.0.8.b.d.0.1.0.0.2.ip6.arpa.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 PTR host.example.net.
为什么有额外的 $ORIGIN 指令?我的意思是“$ORIGIN 0.0.0.0.2.0.3.0.8.bd0.1.0.0.2.ip6.arpa”。一。为什么不简单地说:
$ORIGIN 2.0.3.0.8.b.d.0.1.0.0.2.ip6.arpa.
$TTL 604800
@ IN SOA ns1.example.org. hostmaster.example.org. (
1978022513 ; Serial
10800 ; Refresh
3600 ; Retry
2419200 ; Expire
604800 ) ; Default TTL
NS ns1.example.org.
NS ns2.example.org.
TXT "2001:db8:302::/48 Example IPv6 reverse"
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 PTR host.example.net.
答案1
任何 $ORIGIN 指令仅从该点开始适用。参见示例Pro DNS 和 BIND - 第 8 章 - $ORIGIN 指令。
第一个 $ORIGIN 指令可以轻松引用该区域所覆盖的 2001:db8:302::/48。
第二个 $ORIGIN 指令可以轻松引用 2001:db8:302:0::/64,这是一个合理大小的子网(/64 是 IPv6 中的标准大小子网)。
这避免了四位零,否则使用笨拙的 IPv6 反向 RR 名称会使跟踪事物变得非常困难。我没有数过你的例子0
中有19、20还是21。当然,人们希望我也不必数 15、16 或 17,但至少这是一个小的更短。
请注意,您不应该让您的名称服务器对整个 /48 反向区域具有权威性,除非整个 /48 块实际上在您的控制之下并分配给您。
专业提示:特别是在 IPv6 子网和反向 DNS 记录的情况下,请记住您可以在 $ORIGIN 指令中使用非完全限定名称。例如:
$ORIGIN 2.0.3.0.8.b.d.0.1.0.0.2.ip6.arpa. ;; Below this applies to 2001:db8:302::/48
@ SOA ...
; ... whatever else applies ...
$ORIGIN 0.0.0.0 ;; Below this applies to 2001:db8:302:0::/64
; ... whatever applies ...
尤其是在这种情况下,我强烈地建议在 $ORIGIN 指令旁边留下注释以明确意图。标签末尾缺少终止句点是 DNS 问题的常见根源,因此最好明确指出您没有如果是的话,打算创建一个完全限定的名称。
另请注意,此技巧仅适用于较长的源,因此您可以从 2001:db8:302::/48 转到 2001:db8:302:0::/64,但不能从 2001:db8:302:0:: /64 到 2001:db8:302:1::/64。 (但是你可以从 2001:db8:302::/60 到 2001:db8:302:1::/64,如果你愿意的话。)
答案2
只是为了添加 @MichaelKjörling 的答案,我在 DNS 绑定设置中做了类似的事情。这只是为了让我不必继续复制大量重复的名称。
$ORIGIN .
$TTL 604800 ; 1 week
bubba.net IN SOA ns.bubba.net. hostmaster.bubba.net. (
2000075011 ; serial
28800 ; refresh (8 hours)
7200 ; retry (2 hours)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ; minimum (1 day)
)
NS ns.bubba.net.
A 192.168.1.1
MX 10 mail.bubba.net.
MX 20 mail.bubba.net.
TXT "v=spf1 mx/24 ~all"
然后,我可以通过在此处的文件中设置 $ORIGIN 来启动我的域“bubba.net”:
$ORIGIN bubba.net.
apu A 192.168.1.112
HINFO "VZ12" "VZ12"
MX 10 mail
TXT "v=spf1 redirect=bubba.net"
bart A 192.168.1.103
HINFO "VZ3" "VZ3"
MX 10 mail
TXT "v=spf1 redirect=bubba.net"
然后我稍后在同一个文件中再次设置 $ORGIN,这次设置为“somedom.com.bubba.net”。所以我可以做这样的事情:
$ORIGIN somedom.com.bubba.net.
$TTL 172800 ; 2 days
bender CNAME bender.bubba.net.
blog CNAME blogs.bubba.net.
db CNAME db.bubba.net.
所以在上面有一个条目,当展开时是这样的:
bender.somedom.com.bubba.net. CNAME bender.bubba.net.
我在文件中多次执行此操作,以将其他域添加到组合中。我这样做的原因是,我可以在主域 (bubba.net) 中设置服务器,但为其他域中的服务器和服务名称创建 CNAME,并将它们覆盖到我的主域上。
例如:
我在互联网上拥有域名,某某网站。我CNAME
在该域的名称空间中创建一个名为博客.somedom.com。设置并配置我将使用的服务博客.somedom.com无处不在,但埋在我的 DNS 绑定服务器中,我有CNAME
映射博客.somedom.com将此名称与实际服务器联系起来博客.bubba.net那就是提供服务。