DNS Bind 9 View – 讓DNS針對不同來源的查詢做不同的回覆

如果你的server(例如web)是架在NAT(ip 分享器)後面的虛擬網段,而在該NAT上有開放讓Internet連入的設定,並且也己做好DNS的設定,將對應指向NAT的外部ip,此時己可以由任何Internet連入該web server1.

但若您的ip 分享器不支援」nat loopback」功能(或是沒有啟用),您可能會發現domain name或外部ip都連不到該web server,但使用該web server的虛擬網段ip連線就可以.

遇到這個問題,除了讓您的NAT(ip 分享器)支援」nat loopback」外,所知的解決方式如下:

1.若您是使用iptables可以使用REDIRECT來解決,或在其它NAT產品上使用對應的功能來處理2.

2.在虛擬網段加一個DNS service服務虛擬網段內的查詢需求3.

3.若您不想用二台DNS來解決,而所使用的DNS是Bind9的版本,則可以使用其View的功能來針對不同來源的查詢做不同的回覆4.

這裡針對第三種做簡單的分享.並假設您己對Bind的設定有一定的瞭解5.

1.若你沒設定view那就表示您只用一個內定的view.
2.一但用了view所有的zone都必需放在view中,否則您可能會在log中看到 when using ‘view’ statements, all zones must be in views 這樣的error.
3.假設您的NAT(ip 分享器)只面對二個網路(Internet及虛擬網段192.168.0/24)6,而網域名為test.cxm那就用二組view設定服務不同網路,只要將如下二段設定置於named.conf中,然後在zone file中設定不同的回答即可.

view for Internet:

view "external" {
match-clients { any; }; //對應任何網路
zone "test.cxm" IN {
type master;
file "master/test.cxm";
};
};

view for 虛擬網段:

view "internal" {
match-clients { 192.168.0/24; }; //對應虛擬網段
zone "test.cxm" IN {
type master;
file "master/test.cxm-internal";
};
};

4.view是以first match原則套用,所以view的先後順序是有影響的,若將以上的設定顛倒,那所有網路皆會套用match-clients { any; }; 這組view,而在該view之後的其它view皆會套用不到.

  1. 無論是透NAT的外部ip或是domain name []
  2. 可以參考該篇文章 http://www.study-area.org/linux/servers/linux_nat.htm []
  3. DNS的對應紀錄都以虛擬網段ip做設定.也就是服務Internat及虛擬網段的查詢,分別由二台不同的DNS來處理 []
  4. 虛擬網段來的查詢回虛擬ip,Internat來的查詢回外部ip []
  5. 例如基本的named.conf及zone file的設定,更多關於DNS的知識,可以參考如下文章:
    http://www.study-area.org/linux/servers/linux_dns.htm
    http://linux.vbird.org/linux_server/0350dns.php []
  6. 若多個網路就設多組view []
本篇發表於 IT 並標籤為 。將永久鏈結加入書籤。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

你可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(若看不到驗證碼,請重新整理網頁。)