IPv6 区域文件中的 $ORIGIN 指令

IPv6 区域文件中的 $ORIGIN 指令

我经常看到类似的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那就是提供服务。

参考

相关内容