用bind架設自己的智慧型DNS

2021-08-26 03:25:05 字數 2131 閱讀 7153

中國的南北網路問題,是許多做**的人的心病

除了使用雙通或者多通機房以外,還可以通過多台映象伺服器的方法來提高使用者的訪問速度

但是,如果使用的雙通機房並不是單ip的,或者使用多台映象的做法,就會面臨多個不同的伺服器ip的問題

最早的時候,很多映象伺服器都是使用不同的網域名稱的,比如說www1和www2,或者www和cnc

用統一的網域名稱,然後根據使用者的線路自動判斷引導到不同的映象伺服器,正是智慧型dns的功用(智慧型dns其實是cdn的其中一部分,是最前端的部分)

目前也有一些公司提供智慧型dns解釋服務,把你的網域名稱ns指到他們伺服器,然後輸入網通和電信伺服器的ip就ok了

也有一些公司提供比較完整的cdn服務,比如比較出名的就是chinacache,不少中型**是使用他們的服務

最初的bind是不支援通過**選擇不同的ip的,因此只能通過iptables的輔助來實現智慧型dns,方法也很簡單,在dns伺服器上面啟動兩 份bind,都不要用預設的埠,兩份分別解析不同的線路,然後再用iptables將預設埠的dns請求根據**ip傳送到不同的bind例項

這種方法缺點很明顯,需要多個bind例項,如果需要更多的線路解釋那就還要再開bind例項,另外iptables對**的解釋也會導致iptables太多規則

現在的bind支援了根據**選擇的功能,我不確定是不是bind9的新特性,不過bind9是重寫過的,相比漏洞百出的bind8來說,穩定和安全很多,以下的配置以bind9為基礎

我使用的是centos,由於bind服務沒有其他服務(比如apache,squid)要求那麼高,所以也沒有必要自己編譯乙份,我是用過yum安裝的,版本不是最新的穩定版

裝好之後,可以用過/etc/init.d/named start成功啟動服務

有乙個檔案named.conf出現在/etc下,就是bind的主config檔案,我們只要改動他

(我只說明智慧型dns實現部分,其他的bind設定自行修改,呵呵)

另外乙個小技巧,可以通過/usr/sbin/named -g -u named來啟動bind,可以立刻看到輸出資訊,方便除錯

我們是通過bind9的view功能來分離判斷的

首先,我們需要乙份網通的ip列表,這是乙份在網上流傳的列表,呵呵

acl 「cnc」 ;

如果覺得有哪些部分不是很準確的話,可以自行修改

由於這個部分太長了,所以寫在乙個專門的檔案然後include進named.conf比較容易維護

例如,我們把上面這段配置儲存為cnc_acl.conf

然後在named.conf寫入

include 「/data/named/cnc_acl.conf」;

即可接下來就是view的配置,假設網域名稱是xyz.com,呵呵

view 「view_cnc」 ;

zone 「xyz.com」 ;

};view 「view_any」 ;

zone 「xyz.com」 ;

};就這樣就足夠了

然後我們需要cnc\_xyz和any_xyz兩個具體的zone file

兩個檔案基本是一模一樣的,就是指向不同的ip

$ttl 2h

xyz.com. in soa ns.xyz.com. root.xyz.com. (

20071022

2h40m

1w2h

)this6.com. in ns ns.xyz.com.

this6.com. in mx 1 mail.xyz.com.

ns in a 1.1.1.1

mail in a 1.1.1.1

www in a 1.1.1.1

根據不同的線路把www指向不同的ip即可

這樣,我們就實現了自己的智慧型dns

後話,目前許多大型**都是用這個來實現不同的線路**訪問不同的映象,甚至還做到地區級別,例如,在佛山機房部署了一台映象伺服器,就將廣東省的訪問都指向這台伺服器

另外,剛剛提到智慧型dns也有缺陷,這裡詳細描述一下,bind9通過使用者的**ip來返回不同的解釋ip,而實際上,並不是實際使用者直接訪問我們的 dns,而是使用者所使用的dns(比如說廣州adsl使用者的預設dns)負責訪問我們的dns,網通的dns就儲存有我們網通的ip,如果使用者自行修改了 dns,比如說電信的使用者硬要用網通的dns,或者網通的使用者使用國外的dns(比如opendns之類的),就會導致判斷失誤

CDN介紹 bind智慧型DNS

cdn content delivery network內容分發網路 服務商 藍汛,網宿,帝聯等 gslb和cdn gslb global server load balance 全域性負載均衡 gslb是對伺服器和鏈路進行綜合判斷來決定由哪個低點的伺服器來提供服務,實現異地伺服器群服務質量的保證,...

基於BIND實現智慧型DNS解析

智慧型dns又稱為解析切割,是對請求dns解析的ip位址進行判斷,將網域名稱解析成不同的位址 一般智慧型dns應用常見的場景就是cdn,中國特色社會主義的網路導致了電信和聯通這2個特色的運營商,而這2個運營商通過在北京某機房的100g頻寬相連,這就導致了電信使用者訪問聯通的網路就會非常慢。玩遊戲的童...

Linux 基於bind的DNS解析實驗

實驗環境 centos 實驗軟體 bind 實驗要求 1.1.centos7 linux系統 提取碼 qmin 1.2centos上bind軟體安裝 直接使用yum工具安裝 yum y install bind 2.1.修改主配置檔案 vi etc named.conf 修改以下兩行 2.2.建立網...