大多數企業用戶在公司成長到一定規模後,會將原本委外的網路自行建制維護,首要工作之一就是建立自己的DNS伺服器,而公司網路通常會分為內、外網的架構,內網使用Private IP,外網則是Public IP,因為DNS通常都是外部服務,所以回應的都會是Public IP,但若是公司內部的人查看自己公司首頁,DNS若是派發Public IP,會造成浪費公司網路頻寬的情況,如紅線所示
所以就造成公司網路資源的浪費,因此,若是我們能在內部使用者瀏覽內部資源的時候不要繞Internet再回來,應該在DNS查詢的時候直接丟給予Web的Private IP,其實使用者就可以直接連到 Web 伺服器,但是這樣,外部使用者查詢DNS的時候,又會造成Private IP無法連線的問題,所以有沒有好方法可以解決呢?這後DNS 的View功能就可以提供您一個解決的方式。
View的功能就是依照不同的需求給予不同的查詢答案,假設您在美國、台灣、歐洲都有設置伺服器,當美國的使用者連線的時候,若是給他歐洲的伺服器,則連線非常遠也非常浪費資源,所以美國來的連線,若能給予美國的伺服器、歐洲的給予歐洲的伺服器,依據不同的條件給予不同的IP位置,可以節省頻寬,這就是 View的功能,我們使用上述的例子來改善這個連線。
這邊使用 BIND 9.9 來實做,BIND同時支援 Windows 與 Linux 系統,請在 BIND的官方網站下載( http://www.isc.org/software/bind )。我們假設環境設定如下:
- Private IP : 192.168.1.0/24
- Public IP:211.72.210.0/24
- DNS Server:211.72.210.250, 192.168.1.5
- Web Server:211.72.210.251, 192.168.1.10
- Domain: twnic.net.tw
所以這時候我們可以知道,當IP來源是 192.168.1.0/24 這個網段的話,就是公司使用者,所以DNS 應該回應Web伺服器是192.168.1.10,非這段的查詢,就應該回應 211.72.210.251。
首先我們先建立 Private IP 的 ZoneFile,private.twnic.net.tw:
$ORIGIN twnic.net.tw
$TTL 600
@ 600 IN SOA ns1 root.twnic.net.tw (
2011062400 ; serial number
28800 ; refresh
14400 ; retry
3600000 ; expire
600 ; minimum TTL )
@ 600 IN NS ns1
ns1 600 IN A 192.168.1.5
www 600 IN A 192.168.1.10 |
然後建立 Public IP 的 ZoneFile,public.twnic.net.tw:
$ORIGIN twnic.net.tw
$TTL 600
@ 600 IN SOA ns1 root.twnic.net.tw (
2011062400 ; serial number
28800 ; refresh
14400 ; retry
3600000 ; expire
600 ; minimum TTL )
@ 600 IN NS ns1
ns1 600 IN A 211.72.210.250
www 600 IN A 211.72.210.251 |
然後我們就可以在 named.conf 中設定 view 的方式:
Acl “Intranet” {
192.168.1.0/24; localhost;
}
view private_client {
match-clients { intranet; };
recursion yes;
zone “twnic.net.tw” {
type master;
file “private.twnic.net.tw”;
};
};
view public_clinet {
match-clients { any; };
recursion no;
zone “.” IN {
type hint;
file “named.ca”;
};
zone “twnic.net.tw” {
type master;
file “public.twnic.net.tw”;
};
}; |
如此 named 就會幫我們判斷來源的 client 是不是內部使用者,根據這個條件來載入不同的 Zonefile,並且給予不同的答案,使用者就可以直接連線到內部Web伺服器,不需要繞到Internet又回到內部伺服器,會就變成如下圖所示:
View 的功能常常使用者很多大型網站,以減輕網路流量或是提供更高速的服務,所以善用view能更無往不利喔! |