BIND 9 之後提供一個很好用的功能 View,我們可以依據不同的 IP 查詢來回應不同的結果,通常針對 Internet & Intranet 的環境更是適合
以下是我實作的環境,我中間的 DNS Server 目前隻綁一個 Private,至於回應外部的 Public IP 則是透過防火牆 NAT mode 轉進來
要實作 View 隻要在 named.conf 裡動一點手腳即可,設定如下
acl lan { 10.1.1.0/24; };//首先先定義出內網的 IP 範圍
view internal {
match-clients { lan; 127.0.0.1; };//當來自於 lan 或 127.0.0.1 的查詢時,BIND 就回應 bojack.intranet 裡的記錄
zone . IN {
type hint;
file /etc/namedb/named.root;
};
zone bojack.net IN {
type master;
file /etc/namedb/master/bojack.intranet;
};
};
view external {
match-clients { any; };//除瞭 lan 或 127.0.0.1 的查詢時,BIND 就回應 bojack.internet 裡的記錄
recursion no;
zone . IN {
type hint;
file /etc/namedb/named.root;
};
zone bojack.net IN {
type master;
file /etc/namedb/master/bojack.internet;
};
};
最後重啟 BIND 就可以啟用 View 的功能瞭!
接下來這篇是接續【FreeBSD】BIND 9 的 View 實作的筆記,我們原本已經有一臺 DNS 瞭,但如果它掛瞭帶來的衝擊影響其實蠻大的
因此通常在 DNS 的部份我們會放二臺 DNS,一臺是 Master 主要的,另一臺 Slave 就是定時去抄寫 Master 的紀錄
首先我們在 Slave DNS 的部份要設定二個 IP,10.1.1.5 是用來查詢 Master DNS 裡 Intranet 的紀錄,而 10.1.1.6 是用來查詢 Master DNS 裡 Internet 的紀錄
如果 Slave DNS 不綁定二個 IP 的話,就隻能查到 Intranet 或 Internet 其中一個 View 的紀錄瞭
這臺是 Master DNS ( 10.1.1.4 ) 的 /etc/named/named.conf
acl lan { 10.1.1.0/24; };
view internal {
match-clients { !10.1.1.6; lan; 127.0.0.1; };
zone . IN {
type hint;
file /etc/namedb/named.root;
};
zone bojack.net IN {
type master;
file /etc/namedb/master/bojack.intranet;
allow-transfer { 10.1.1.5; };
};
};
view external {
match-clients { any; };
recursion no;
zone . IN {
type hint;
file /etc/namedb/named.root;
};
zone bojack.net IN {
type master;
file /etc/namedb/master/bojack.internet;
allow-transfer { 10.1.1.6; };
};
};
這臺是 Slave DNS ( 10.1.1.5 & 10.1.1.6 ) 的 /etc/named/named.conf
acl lan { 10.1.1.0/24; };
view internal {
match-clients { lan; 127.0.0.1; };
zone . IN {
type hint;
file /etc/namedb/named.root;
};
zone bojack.net IN {
type slave;
file /etc/namedb/master/bojack.intranet;
masters { 10.1.1.4; };
transfer-source 10.1.1.5;
};
};
view external {
match-clients { any; };
recursion no;
zone . IN {
type hint;
file /etc/namedb/named.root;
};
zone bojack.net IN {
type slave;
file /etc/namedb/master/bojack.internet;
masters { 10.1.1.4; };
transfer-source 10.1.1.6;
};
};