
bind9
我在我的安裝中配置了一個區域 。它應該是一個公共名稱伺服器,我透過 dyndns 子網域的 python 腳本進行管理。但我的主要網站由其他地方的第三方託管,在不久的將來我也想在本地託管它們。現在,我希望 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
答案1
我認為這是不可能的,因為您的一個名稱伺服器是本地的(無法從另一個名稱伺服器存取)。從技術上講,您可以嘗試轉發器或多主選項。但即使它有效,對於小型設定也不是好方法。
DNS 基於哪個伺服器是區域主伺服器的資訊 - 這是按類型設定的。負責擁有當前資訊的區域master
,因此應該只有一個(因為實例之間可能存在差異)。區域slave
知道主控並且可以直接向主控請求整個區域。如果主人也知道它的奴隸,它也能夠轉移整個區域。這是你應該做的。
將公共名稱伺服器保留在原來的位置並使其成為主伺服器。在您的本機環境中安裝第二個綁定並將該區域新增為從屬區域。還將從站新增到主站,以便自動更新工作。為了驗證兩者的日誌,應該發出 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; };
};
如您所見,從站需要可以從主站訪問,因為它的位址是靜態配置的。