加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 服务器 > 安全 > 正文

如何构建智能DNS

发布时间:2023-07-31 14:09:46 所属栏目:安全 来源:
导读:这篇文章给大家分享的是有关如何搭建智能DNS的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

智能DNS搭建方案

智能DNS主要通过用户源IP来判断来源,然后根据不同的策略解析到不
这篇文章给大家分享的是有关如何搭建智能DNS的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
 
智能DNS搭建方案
 
智能DNS主要通过用户源IP来判断来源,然后根据不同的策略解析到不同的IP地址来实现。使得用户可以就近访问所需的资源,提高访问速度,提升用户感知。
 
智能DNS可通过bind的view功能来实现。
 
BIND的VIEW功能配置如下:
 
软件版本:bind-9.9.5-P1.tar.gz
 
依赖:gcc
 
openssl-0.9.8zb.tar.gz(bind的DNSSEC需要)
 
1. 安装openssl
 
tar xf openssl-0.9.8zb.tar.gz
 
cd openssl-0.9.8zb
 
./config --prefix=/usr/local --openssldir=/usr/local/openssl && make && make install
 
2. 安装bind
 
tar  xf  bind-9.9.5-P1.tar.gz
 
cd bind-9.9.5-P1
 
./configure  --prefix=/home/bind  --enable-threads  --with-openssl=/usr/local/openssl
 
make && make install
 
3. 配置bind
 
由于要配置view,那么所有的zone文件都必须放在view里面,所以做如下配置:注释掉named.conf中的named.conf.zone和named.rfc1912.zones
 
vi /home/bind/etc/named.conf
 
#named.conf file
 
include "/home/bind/etc/named.conf.options";
 
include "/home/bind/etc/named.conf.acl";
 
include "/home/bind/etc/named.conf.controls";
 
include "/home/bind/etc/named.conf.server";
 
include "/home/bind/etc/named.conf.key";
 
include "/home/bind/etc/named.conf.dlz";
 
include "/home/bind/etc/named.conf.trusted-keys";
 
include "/home/bind/etc/named.conf.view";
 
#include "/home/bind/etc/named.conf.zone";
 
#include "/home/bind/etc/named.rfc1912.zones";
 
配置view
 
vi /home/bind/etc/named.conf.view
 
view "ctc_view_zone" {
 
        match-clients { CTC; };
 
        include "/home/bind/var/named/view_zone/ctc_zone";
 
};
 
view "cuc_view_zone" {
 
        match-clients { CUC; };
 
        include "/home/bind/var/named/view_zone/cuc_zone";
 
};
 
view "cmc_view_zone" {
 
        match-clients { CMC; };
 
        include "/home/bind/var/named/view_zone/cmc_zone";
 
};
 
view "any_view_zone" {
 
        match-clients { any; };
 
        include "/home/bind/var/named/view_zone/any_zone";
 
};
 
分别为电信、联通、移动配置view,match-clients对应各自的ACL,实现筛选,include对应各自的zone配置文件。最后一条view为默认的view,view的匹配顺序是从上往下的,所以默认的view配置在最后。
 
配置zone文件
 
在/home/bind/var/named/view_zone下创建各自对应的zone文件
 
ls-l /home/bind/var/named/view_zone
 
total 16
 
-rw-r--r--. 1 root root 175 Aug 12 17:47 any_zone
 
-rw-r--r--. 1 root root 175 Aug 13 17:22 cmc_zone
 
-rw-r--r--. 1 root root 175 Aug 12 17:47 ctc_zone
 
-rw-r--r--. 1 root root 175 Aug 12 18:18 cuc_zone
 
vi /home/bind/var/named/view_zone/ctc_zone
 
zone "." IN {
 
        type hint;
 
        file "/home/bind/var/named/named.ca";
 
};
 
zone "test.com" IN {
 
        type master;
 
        file "/home/bind/var/named/ctc/test.com";
 
        allow-update { none; };
 
};
 
Vi /home/bind/var/named/view_zone/cuc_zone
 
zone "." IN {
 
        type hint;
 
        file "/home/bind/var/named/named.ca";
 
};
 
zone "test.com" IN {
 
        type master;
 
        file "/home/bind/var/named/cuc/test.com";
 
        allow-update { none; };
 
};
 
Vi /home/bind/var/named/view_zone/cmc_zone
 
zone "." IN {
 
        type hint;
 
        file "/home/bind/var/named/named.ca";
 
};
 
zone "test.com" IN {
 
        type master;
 
        file "/home/bind/var/named/cmc/test.com";
 
        allow-update { none; };
 
};
 
vi /home/bind/var/named/view_zone/any_zone
 
zone "." IN {
 
        type hint;
 
        file "/home/bind/var/named/named.ca";
 
};
 
zone "test.com" IN {
 
        type master;
 
        file "/home/bind/var/named/any/test.com";
 
        allow-update { none; };
 
};
 
在对应的目录下配置zone数据文件,配置一条A记录便于测试
 
vi /home/bind/var/named/ctc/test.com
 
$TTL    86400
 
@               IN SOA  test.com.      root.localhost. (
 
                                        42              ; serial (d. adams)
 
                                        3H              ; refresh
 
                                        15M             ; retry
 
                                        1W              ; expiry
 
                                        1D )            ; minimum
 
        IN      NS      ns
 
ns      IN      A       115.182.75.10
 
www     IN      A       1.1.1.1
 
vi /home/bind/var/named/cuc/test.com
 
$TTL    86400
 
@               IN SOA  test.com.      root.localhost. (
 
                                        42              ; serial (d. adams)
 
                                        3H              ; refresh
 
                                        15M             ; retry
 
                                        1W              ; expiry
 
                                        1D )            ; minimum
 
        IN      NS      ns
 
ns      IN      A       115.182.75.10
 
www     IN      A       2.2.2.2
 
vi /home/bind/var/named/cmc/test.com
 
$TTL    86400
 
@               IN SOA  test.com.      root.localhost. (
 
                                        42              ; serial (d. adams)
 
                                        3H              ; refresh
 
                                        15M             ; retry
 
                                        1W              ; expiry
 
                                        1D )            ; minimum
 
        IN      NS      ns
 
ns      IN      A       115.182.75.10
 
www     IN      A       3.3.3.3
 
vi /home/bind/var/named/any/test.com
 
$TTL    86400
 
@               IN SOA  test.com.      root.localhost. (
 
                                        42              ; serial (d. adams)
 
                                        3H              ; refresh
 
                                        15M             ; retry
 
                                        1W              ; expiry
 
                                        1D )            ; minimum
 
        IN      NS      ns
 
ns      IN      A       115.182.75.10
 
www     IN      A       4.4.4.4
 
配置ACL
 
由于IP条目数较多,所以另外创建ACL的文件方便管理
 
首先在named.conf中关联相应的文件
 
vi /home/bind/etc/named.conf
 
#named.conf file
 
include "/home/bind/etc/named.conf.options";
 
include "/home/bind/etc/named.conf.acl";
 
include "/home/bind/etc/named.conf.controls";
 
include "/home/bind/etc/named.conf.server";
 
include "/home/bind/etc/named.conf.key";
 
include "/home/bind/etc/named.conf.dlz";
 
include "/home/bind/etc/named.conf.trusted-keys";
 
include "/home/bind/etc/named.conf.view";
 
#include "/home/bind/etc/named.conf.zone";
 
#include "/home/bind/etc/named.rfc1912.zones";
 
include "/home/bind/etc/named.conf.log";
 
include "/home/bind/etc/ACL/dianxinACL";
 
include "/home/bind/etc/ACL/yidongACL";
 
include "/home/bind/etc/ACL/liantongACL";
 
include "/home/bind/etc/ACL/changkuanACL";
 
include "/home/bind/etc/ACL/tietongACL";
 
include "/home/bind/etc/ACL/jiaoyukeyanACL";
 
每个文件对应相应的IP地址库
 
格式为:acl “acl_name” { xx.xx.xx.xx; }; 如下所示:
 
vi /home/bind/etc/ACL/yidongACL
 
acl "CMC" {
 
36.128.0.0/10;
 
39.128.0.0/10;
 
111.0.0.0/10;
 
112.0.0.0/10;
 
……
 
221.176.0.0/13;
 
223.64.0.0/10;
 
};
 
至此bind的view已经配置完成
 
启动bind
 
/home/bind/sbin/named -u root -c /home/bind/etc/named.conf
 
(最好创建一个bind账号来启动,chown -R bind:bind /home/bind)
 
ps –ef | grep named 查看服务是否启动
 
使用/home/bind/sbin/named -u root -c /home/bind/etc/named.conf -g可以查看启动过程,方便排错
 
测试时,会根据源IP判断来源,然后解析到指定的地址,如下:
 
域名            电信用户解析IP        联通用户解析IP        移动用户解析IP        其他用户解析IP
 
www.test.com       1.1.1.1               2.2.2.2                3.3.3.3              4.4.4.4
 
解析命令
 
dig @115.182.75.10 www.test.com A
 
nslookup www.test.com 115.182.75.10
 
host -t A www.test.com 115.182.75.10
 
附上一个bind自带的压力测试工具queryperf
 
在解压 bind-9.9.5-P1.tar.gz后,在解压的文件中有个queryperf的目录,具体路径为:bind-9.9.5-P1/contrib/queryperf
 
在queryperf目录下执行:sh configure && make
 
之后会生成一个queryperf执行文件
 
基本用法如下:
 
./queryperf -d domain-file -s 8.8.8.8 -l 60 -T100
 
-d 后接一个域名列表文件,一行一个域名,格式为:domain  type
 
www.163.com A
 
qq.com MX
 
www.baidu.com CNAME
 
www.test.com NS
 
-s 后接测试使用的DNS服务器IP
 
-l 测试时间,单位为秒
 
-T 每秒发送的请求数(qps)
 
命令执行完成后会输出结果,如下:
 
Statistics:
 
  Parse input file:     multiple times
 
  Run time limit:       60 seconds
 
  Ran through file:     5999 times
 
  Queries sent:         6000 queries     #查询总请求数
 
  Queries completed:    6000 queries     #查询成功的请求数
 
  Queries lost:         0 queries         #查询失败的请求数
 
  Queries delayed(?):   0 queries
 
  RTT max:         0.000520 sec
 
  RTT min:              0.000109 sec
 
  RTT average:          0.000291 sec
 
  RTT std deviation:    0.000062 sec
 
  RTT out of range:     0 queries
 
  Percentage completed: 100.00%
 
  Percentage lost:        0.00%
 
  Started at:           Fri Aug 15 10:42:00 2014
 
  Finished at:          Fri Aug 15 10:43:00 2014
 
  Ran for:              60.000338 seconds
 
  Queries per second:   99.999437 qps         #每秒查询的次数(qps)
 
      Total QPS/target:     99.999437/100 qps
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!