官术网_书友最值得收藏!

最佳實踐5:詳解BIND視圖技術及優化

上一個實踐使用多個A記錄的方式,實現了最基本的負載均衡設置。在中國目前的網絡環境下,多個運營商并存,運營商之間存在一定的互聯互通問題。如果把來自不同運營商或者地域的所有用戶通過簡單的A記錄分配到同一個機房,那么就存在部分用戶訪問延時大或者丟包的問題。

BIND視圖工作原理

那么這個問題怎么解決呢?在BIND里面提供了視圖(DNS View)技術來解決這個問題。DNS視圖技術,就是對同一個資源記錄根據DNS的請求來源IP地址不同分配給解析器不同的解析結果。也就是說,可以使用BIND視圖技術實現以下功能。

·對于來自山東省的中國電信的DNS請求,可以把用戶引導到部署在山東省中國電信機房的服務器上。

·對于無法匹配到某個具體運營商或者國外的用戶,可以把用戶引導到指定的一組默認服務器上。

所有以上的功能,都是為了實現用戶的就近訪問,也就是讓用戶訪問到對他來說網絡質量最好的服務器上。

下面來看一個具體的配置。

首先用acl/SD_CTC來列舉需要匹配的來源IP:

acl "SD_CTC" {
58.56.0.0/15;
58.58.0.0/16;
58.59.0.0/17;
60.235.0.0/16;
122.4.0.0/14;
123.168.0.0/14;
222.173.0.0/16;
222.174.0.0/15;
};

然后再用view/SD_CTC來調用acl/SD_CTC的內容:

view "view_SD_CTC" {
match-clients { #使用match-clients指令,指定匹配來自這些IP的用戶
SD_CTC; #引用acl/SD_CTC的內容
};
include "public.def";
#指定這些IP來源的用戶,使用如下的zone文件提供服務
zone "via.woyodns.com" {
type master;
file "zone/via.any.zone";
};

zone "web.woyodns.com" {
type master;
file "zone/web.any.zone";
};

zone "cdn.woyodns.com" {
type master;
file "zone/cdn.hbjmCTC.zone";
};

};

最后再用named.conf來使其關聯起來生效:

include "acl/SD_CTC";
include "acl/SD_CNC";
include "acl/SD_OTHER";
include "view/SD_CTC";
include "view/SD_CNC";
include "view/SD_OTHER ";

總結起來就是使用acl指令圈定一批來源IP地址,使用view的match-clients匹配該acl,為其分配zone文件用于解析,使用named.conf加載acl和view使其生效。

BIND視圖優化技巧

讀者可以看到,這里面核心的內容是acl/SD_CTC里面的IP地址,也就是IP庫。這些數據哪來的呢?

可以使用如下方法:

·使用純真IP數據庫進行分析。

·使用BIND自帶的log進行分析。分析日志的可行性主要是基于目前國內的開放DNS服務器,數量不多,通過對log的多次分析即可逐步精確地匹配。

使用如下指令配置后,BIND的請求數據會記錄在/var/query.log:

     channel query_log {
          file "/var/query.log" versions 5 size 20m;
          severity info;
          print-time yes;
          print-category yes;
     };
     category queries{
          query_log;
     };

其中一條日志如下:

04-Jan-2016 11:35:29.478 queries: client 210.51.28.230#52147 (www99.xufeng.info): query: www99.xufeng.info IN A +E (192.243.119.145)

其中210.51.28.230是某臺開放域名服務器的地址,通過使用http://www.cnnic.cn/即可查詢出該IP地址的運營商和地區等情況,然后將相關信息添加到對應的acl中。

注意

BIND視圖技術所依據的來源IP地址,并不是訪問網站等的終端用戶的來源地址,而是這些終端用戶配置的本地DNS服務器。如果山東省聯通用戶配置了上海市電信提供的DNS服務器,則可能會被調度到電信站點,出現偏差。

主站蜘蛛池模板: 大城县| 双桥区| 沾化县| 阜宁县| 临桂县| 安多县| 三明市| 肥西县| 淮安市| 运城市| 茂名市| 台湾省| 托克逊县| 宁都县| 河东区| 彭阳县| 登封市| 岐山县| 邮箱| 格尔木市| 汕头市| 西充县| 蕲春县| 海林市| 丹寨县| 塘沽区| 金寨县| 韶山市| 九龙城区| 察隅县| 临城县| 安庆市| 西充县| 手游| 嘉兴市| 秦安县| 东丰县| 嘉禾县| 富民县| 曲松县| 琼结县|