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: chang_long@hotmail.com 聯絡。 作者: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 設定給外部查詢的檔案內容
/var/named/internal/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
OK,這樣就已經設定好了,還有要注意的就是要將 named.ca、localhost.zone、named.local copy 到相對的目錄去,日後若有要增加的 domain 就必須加在 "view" 的區段裡面,不然的話就會有錯誤的訊息。[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
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 的查詢會有不同的解析。