Domain-Name-System
bind9:如何在本地區域配置中查詢外部名稱伺服器
我在我的
bind9
安裝中配置了一個區域。它應該是一個公共名稱伺服器,我通過一個用於 dyndns 子域的 python 腳本來管理它。但我的主要網站由其他地方的第 3 方託管,在不久的將來我也想在本地託管它們。現在我希望 bind9 查看本地數據庫以進行名稱解析,並在失敗的情況下重定向到(或從)外部 dns。這是我的配置,但它不適用於外部查詢(example.com 和 www.example.com)。$ cat /etc/bind/named.conf.local include "/etc/bind/zones.rfc1918"; zone "example.com" { type master; file "/etc/bind/zones/db.example.com"; allow-transfer { any; }; update-policy local; }; $ cat /etc/bind/zones/db.example.com $ORIGIN . $TTL 172800 ; 2 days example.com IN SOA ns1.example.com. hostmaster.example.com. ( 116 ; serial 7200 ; refresh (2 hours) 900 ; retry (15 minutes) 1857600 ; expire (3 weeks 12 hours) 8400 ; minimum (2 hours 20 minutes) ) NS ns1.example.com. NS ns1.external-host.com. NS ns2.external-host.com. ns1.external-host.com A 1.2.3.1 ns2.external-host.com A 1.2.3.2 $ORIGIN example.com. ns1 A 1.1.1.1 @ IN NS ns1.external-host.com. @ IN NS ns2.external-host.com. www IN NS ns1.external-host.com. www IN NS ns2.external-host.com. clients A 1.1.1.1 $ORIGIN clients.example.com. $TTL 3600 ; 1 hour test A 2.2.2.2
我認為這是不可能的,因為您的名稱伺服器之一是本地的(無法從另一個名稱伺服器訪問)。從技術上講,您可以嘗試轉發器或多主機選項。但即使它有效,這也不是小型設置的好方法。
DNS 基於哪個伺服器是區域主伺服器的資訊 - 這是按類型設置的。負責擁有目前資訊的區域
master
,因此應該只有一個(因為實例之間可能存在差異)。Zoneslave
s 知道 master 並且可以直接向它詢問整個 zone。如果主人也知道它是奴隸,它也可以轉移整個區域。這是你應該做的。將公共名稱伺服器保留在原處,並將其保留為主伺服器。在您的本地環境中安裝第二個綁定並將區域添加為從屬。還將從屬添加到主控,以便自動更新工作。為了證明查看兩者的日誌,應該提出 AXFR 或 IXFR 請求。
所以你的區域定義可能看起來像這樣,假設 master 是 1.2.3.4 和 slave 5.6.7.8:
掌握:
zone "example.com" { type master; file "/etc/bind/zones/db.example.com"; also-notify { 5.6.7.8; }; notify yes; };
奴隸:
zone "example.com" { type slave; file "/etc/bind/zones/db.example.com"; // this is the file updated. allow-notify { 1.2.3.4; }; allow-transfer { 1.2.3.4; }; };
如您所見,從主機需要可以訪問從機,因為它的地址是靜態配置的。