返回介绍

最佳实践 5:详解 BIND 视图技术及优化

发布于 2025-04-20 17:44:39 字数 2409 浏览 0 评论 0 收藏 0

上一个实践使用多个 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 服务器,则可能会被调度到电信站点,出现偏差。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。