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 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。)