DNS View 介紹

大多數企業用戶在公司成長到一定規模後,會將原本委外的網路自行建制維護,首要工作之一就是建立自己的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 )。我們假設環境設定如下:

  1. Private IP : 192.168.1.0/24
  2. Public IP:211.72.210.0/24
  3. DNS Server:211.72.210.250, 192.168.1.5
  4. Web Server:211.72.210.251, 192.168.1.10
  5. 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能更無往不利喔!

 
 
使用.tw域名之網站流量排名
DNS View 介紹
2012年台灣網路資訊中心網安教育訓練開始報名
歡迎報名2012年 TWNIC新一代網際網路協定教育訓練課程
資安通報: PHP Ticket System Beta 1 'p' SQL Injection
TWNIC公布2012年第1季台灣網際網路連線頻寬調查
TWNIC寬頻網路使用調查
台灣網路基礎建設概要
.tw域名統計調查
IP統計查詢
www server累計數量統計
全球IP位址與AS號碼每月統計表
每月網路大事紀