DNS 將 Domain 分成內外部不同解析(view)

DNS 的設定, 最好將內外部的 DNS 分開,

不然被人 dig 一下, 就跟把整個架構都公開也一樣意思了....

正好看到一篇不錯的文章, 來介紹 DNS View setting.

DNS-如何將1個 domain 分成內部與外部做不同的解析

前言:
其實寫這篇文章的起源是在 news 看到了一篇詢問如何將1個 domain 分成內部與外部的問題,而剛好一位網友 "網中人" 提出了在 bind 9 裡面有新增 "view" 的功能,而這個功能就剛好符合上述的需求,而翻了翻市面上的書對 "view" 的說明並不多,但是我覺得這個功能對於一般企業的應用應該蠻廣泛的,所以參考了 http://sysadmin.oreilly.com/news/views_0501.html 而實作出來,因為不想收到廣告信,恕不公開 email,如果文章有錯誤的話請使用 ICQ:19268670 或是 MSN: [email protected] 聯絡。

作者:Aman Chang Linux 新聞網

設定:
其實 “view” 的設定不會很困難,只是要注意以後要給內外部一起查詢的 domain zone 都要分開設定比較好。

廢話不多說,以下就針對 view 的設定來說明

/etc/named.conf 的設定檔

[root@localhost internal]# cat /etc/named.conf
// generated by named-bootconf.pl
options {
   directory "/var/named"; //Domain Zone 檔案放的目錄
   /*
    * If there is a firewall between you and nameservers you want
    * to talk to, you might need to uncomment the query-source
    * directive below. Previous versions of BIND always asked
    * questions using port 53, but BIND 8.1 uses an unprivileged
    * port by default.
    */
   // query-source address * port 53;
};

// a caching only nameserver config
//
//Also you can define IP range like as below
acl "lan" { //設定內部要查詢DNS的IP
   192.168.0.0/16; 10.10.0.0/16; localhost;
};

controls {
   inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

view "internal" { //定義給內部查詢的設定檔
   match-clients { lan; }; //上面有定義lan的IP range
   zone "linuxnews.idv.tw" {
      type master;
      file "internal/db.linuxnews.idv.tw";
      allow-transfer { none; };
   };
   zone "." IN {
      type hint;
file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; allow-update { none; }; }; }; view "external" { //定義給外部查詢的設定擋 match-clients { any; }; //any不需要額外定義 zone "linuxnews.idv.tw" { type master; file "external/db.linuxnews.idv.tw"; allow-transfer { none; }; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; allow-update { none; }; }; };

/var/named/external/db.linuxnews.idv.tw 設定給外部查詢的檔案內容

[root@localhost root]# cat /var/named/external/db.linuxnews.idv.tw
$TTL 86400 ; 1 hour
linuxnews.idv.tw. IN SOA ns1.linuxnews.idv.tw. root.linuxnews.idv.tw. (
      10816 ; serial
      900 ; refresh (15 minutes)
      600 ; retry (10 minutes)
      86400 ; expire (1 day)
      3600 ; minimum (1 hour)
      )
NS ns1.linuxnews.idv.tw.
MX 10 mail.linuxnews.idv.tw.
ns1 A 192.168.113.253
hello A 168.95.1.1 //定義hello.linuxnews.idv.tw

/var/named/internal/db.linuxnews.idv.tw 設定給內部查詢的檔案內容

[root@localhost named]# cat /var/named/internal/db.linuxnews.idv.tw
$TTL 86400 ; 1 hour
linuxnews.idv.tw. IN SOA ns1.linuxnews.idv.tw. root.linuxnews.idv.tw. (
      10816 ; serial
      900 ; refresh (15 minutes)
      600 ; retry (10 minutes)
      86400 ; expire (1 day)
      3600 ; minimum (1 hour)
      )
NS ns1.linuxnews.idv.tw.
MX 10 mail.linuxnews.idv.tw.
ns1 A 192.168.113.253
hello A 192.168.113.230 //定義hello.linuxnews.idv.tw

OK,這樣就已經設定好了,還有要注意的就是要將 named.ca、localhost.zone、named.local copy 到相對的目錄去,日後若有要增加的 domain 就必須加在 "view" 的區段裡面,不然的話就會有錯誤的訊息。

Apr 22 11:46:41 localhost named[4064]: loading configuration from '/etc/named.conf'
Apr 22 11:46:41 localhost named[4064]: /etc/named.conf:43: when using 'view' statements, all zones must be in views
Apr 22 11:46:41 localhost named[4064]: loading configuration: failure
Apr 22 11:46:41 localhost named[4064]: exiting (due to fatal error)

由上面的範例可以看出來內部與外部對 hello.linuxnews.idv.tw 的查詢會有不同的解析。

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料