Bind

IPv6 區域文件中的 $ORIGIN 指令

  • October 28, 2016

我經常看到類似的 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 directive? I mean this " $ 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.

任何 $ORIGIN 指令僅適用於從那時起。參見例如Pro DNS 和 BIND - 第 8 章 - $ORIGIN 指令

第一個 $ORIGIN 指令使引用區域覆蓋的 2001:db8:302::/48 變得容易。

第二個 $ORIGIN 指令可以很容易地引用 2001:db8:302:0::/64,這是一個合理大小的子網(/64 是 IPv6 中的標準大小的子網)。

這避免了四個零,否則使用笨拙的 IPv6 反向 RR 名稱可能會使跟踪事物變得非常困難。我沒有計算您的範例中是否包含 19、20 或 21 0。當然,希望我也不必數 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。)

引用自:https://unix.stackexchange.com/questions/83664