1. 程式人生 > >通過view實現智能DNS

通過view實現智能DNS

linux 智能dns

<h2>原理介紹</h2>
<p>DNS策略解析最基本的功能是可以智能的判斷訪問您網站的用戶,然後根據不同的訪問者把您的域名分別解析成不同的IP地址,然後跟DNS服務器內部的IP表匹配一下,看看用戶的類型,然後給用戶返回對應的IP地址。例如:一臺http服務器在不同地區有不同代理服務器,智能DNS會在用戶訪問這個http服務器的時候,自動識別用戶的IP所在地區和哪個代理服務器最近(根據內部設置的表格識別),然後將代理服務器的IP地址返回給用戶讓其訪問,相當於進行了引導和負載均衡。
如下圖所示:
<img src="http://wx2.sinaimg.cn/mw690/9e44f588gy1fjw5s1p7prj212x0o4447.jpg" /></p>
<h2>應用場景</h2>
<h3>雙線路的機房:</h3>
<p>服務本身有兩個IP,一個電信IP,一個網通IP或者其他線路。</p>
<h3>鏡象網站:</h3>
<p>在網通及電信的機房放置多個相同的鏡象站點, 讓不同的地方客戶訪問不同的站點。</p>
<h3>負載均衡:</h3>
<p>對於流量比較大的網站,可以把流量分配到幾臺不同的服務器上,以提高網站速度。</p>
<h3>個性化站點服務:</h3>
<p>比如通過IP表的重新定義, 讓國外的客戶自動訪問英文版的網站; 讓國內的客戶自動訪問中文版的網站。</p>
<h3>CDN加速器:</h3>
<p>通過與squid等WEB緩存軟件結合實現CDN加速器。</p>
<h3>防止DDOS攻擊:</h3>
<p>通過多個線路分散攻擊流量,從而達到抵擋DDOS攻擊。</p>
<h2>CDN和智能DNS</h2>
<h3>CDN服務:</h3>
<p>就是把靜態頁面緩存到不同地區很多臺專門的緩存服務器上,然後根據用戶線路所在的地區自動選擇一個最近的緩存服務器讓用戶訪問,以此提高速度,這種方案對靜態頁面效果非常好,同時它也需要智能DNS的幫助才能實現把用戶引導到離自己最近的緩存服務器上。   </p>
<h3>智能DNS:</h3>
<p>本身並沒有加速功能,說白了就是自動識別網通、電信各線路的用戶,然後解析到不同的IP,起到一個引導作用。但是由於國內各地域、各系統的網絡環境各不相同,並不僅僅是簡單的電信、網通兩種資源,所以會有域名做了智能DNS後,其用戶訪問速度反而下降的情況發生。但是使用智能DNS,客戶源站是動態還是靜態內容則沒有影響,效果一樣。</p>
<h2>BIND VIEW:</h2>
<p>view:視圖,多個zone的組合。
一個bind服務器可定義多個view,每個view中可 義一個或多個zone
每個view用來匹配一組客戶端 
多個view內可能需要對同一個區域進行解析,但使用不同的區域解析庫文件 </p>
<pre><code>格式: 
    view VIEW_NAME { 
        match-clients { testacl;  }; 
        zone “magedu.com” { 
            type master; 
            file “magedu.com.zone”; }; 
        include “/etc/named.rfc1912.zones”; 
    };
註意: 
    (1) 一旦啟用了view,所有的zone都只能定義在view中,包括根zone。
    (2) 僅在允許遞歸請求的客戶端所在view中定義根區域 
    (3) 客戶端請求到達時,是自上而下檢查每個view所服務 的客戶端列表
</code></pre>

<h2>智能DNS的實現</h2>
<p>要利用到調用ACL和view。通過定義的不同ACL來規定不同區域的主機,然後給這些不同的主機分配不同的訪問IP地址。
下面用一個小實驗來展示智能DNS的實現:通過搭建智能DNS實現來訪問www.hhy.com的河南用戶和北京用戶分別得到不同的服務器IP地址。</p>
<h3>在主配置文件/etc/named.conf規定acl:</h3>
<p><img src="http://wx1.sinaimg.cn/mw690/9e44f588gy1fjw5s27jznj20qf0dgq3m.jpg" /></p>
<h3>在主配置文件/etc/named.conf配置view:</h3>
<p><img src="http://wx1.sinaimg.cn/mw690/9e44f588gy1fjw5s2ojpyj20u10ewgmd.jpg" /></p>
<h3>配置不同用戶DNS配置文件:</h3>
<p>北京用戶 vim named.rfc1912.zones.bj
<img src="http://wx3.sinaimg.cn/mw690/9e44f588gy1fjw5s335fdj20cw03xt8k.jpg" /></p>
<p>河南用戶 vim named.rfc1912.zones.hn
<img src="http://wx2.sinaimg.cn/mw690/9e44f588gy1fjw5s3mjagj20do03tq2s.jpg" /></p>
<h3>配置不同用戶的區域數據庫文件</h3>
<p>北京用戶 vim jzt.com.zone.bj
<img src="http://wx1.sinaimg.cn/mw690/9e44f588gy1fjw5s43gt0j20po0ao74i.jpg" /></p>
<p>河南用戶 vim jzt.com.zone.hn
<img src="http://wx4.sinaimg.cn/mw690/9e44f588gy1fjw5s4pc74j20pu0af74i.jpg" /></p>
<h3>檢查配置</h3>
<p><img src="http://wx3.sinaimg.cn/mw690/9e44f588gy1fjw5s53b1kj20tx05udg0.jpg" /></p>
<h3>在客戶端進行測試</h3>
<p><img src="http://wx1.sinaimg.cn/mw690/9e44f588gy1fjw5s5o908j20uc0jlq3u.jpg" /></p>
<h2>後記</h2>
<p>雖然這個實驗相對來說比較簡單,但是想要深刻了解和理解DNS的工作原理以及智能DNS的詳細技術,還需要我們進行更像詳細和深刻的學習。本文只是一個引導大家進入這個世界的一條小路罷了。</p>


本文出自 “13114160” 博客,轉載請與作者聯系!

通過view實現智能DNS