智能DNS解析:网通、电信

DNS view   dns视图

电信    ,  联通     ,网通 ,   铁通     

不同IDC之间存在互联速度问题,电信用户访问电信的网络比较快,但访问联通的就比较慢

解决方案

智能DNS(dns view)
智能地判断用户端的访问IP,通过view解析到不同的服务器

还能应用于多个主机的负载均衡,这样可以使用来自各地的IP比较平均地分布到各个服务器

有些用户在国外也有服务器,可以通过智能DNS解析国外的用户访问国外的服务器,国内访问国内的服务器

实验环境
DNS服务器   10.1.1.192 dns.cluster.com

实验前准备
时间同步
ntpdate 10.1.1.1

或者写脚本,让它30秒同步一次
while true
        do
        ntpdate 10.1.1.1 >/dev/null 2>&1
        sleep 30
done

主机名定义好
hostname dns.cluster.com

vim /etc/sysconfig/network
HOSTNAME=dns.cluster.com

vim /etc/hosts
10.1.1.192      dns.cluster.com

第一步,定义acl文件

实际情况下可以下载一个ripe工具,去下载不同IDC的IP段
wget http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz

tar xvf ripe-dbase-client-v3.tar.gz -C /usr/src/
cd /usr/src/whois-3.1/
./configure ;make ;make install

whois3 -h whois.apnic.net -l -i mb MAINT-CHINANET > /var/named/chroot/var/named/chinanet

whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP > /var/named/chroot/var/named/cncgroup

下下来的文件,要经过 grep   awk    sed的处理得到IP或者IP段

这个在实验环境下实现不了

手动编写不同的ACL文件

vim /var/named/chroot/var/named/dianxin
acl dianxin {
10.1.1.35;
10.1.1.59;
192.168.1/24;  --也可以写IP段
};

vim /var/named/chroot/var/named/wangtong
acl wangtong {
10.1.1.36;
10.1.1.56;
172.16.1/24;
};

第二步:定义DNS的主配置文件
vim /var/named/chroot/etc/named.conf

options {
        directory "/var/named";
};

include "dianxin";
include "wangtong";

view "dianxin" {
        match-clients {dianxin;};
        zone "cluster.com" IN {
                type master;
                file "data/dianxin.cluster.com.zone";
        };
};

view "wangtong" {
        match-clients {wangtong;};
        zone "cluster.com" IN {
                type master;
                file "data/wangtong.cluster.com.zone";
        };
};

view "others" {
        match-clients {any;};
        zone "cluster.com" IN {
                type master;
                file "data/others.cluster.com.zone";
        };
};

第三步:编写定义的三个zone文件
vim /var/named/chroot/var/named/data/dianxin.cluster.com.zone

$TTL 86400
@       IN      SOA     dns.cluster.com.  root.cluster.com. (
                        2010070401
                        360
                        480
                        720
                        86400 )
        IN      NS      dns.cluster.com.
dns     IN      A       10.1.1.192 --DNS服务器的地址
www     IN      A       10.1.1.40  --假设www.cluster.com的电信机房的服务器IP为10.1.1.40

vim /var/named/chroot/var/named/data/wangtong.cluster.com.zone

$TTL 86400
@       IN      SOA     dns.cluster.com.  root.cluster.com. (
                        2010070401
                        360
                        480
                        720
                        86400 )
        IN      NS      dns.cluster.com.
dns     IN      A       10.1.1.192
www     IN      A       10.1.1.41 --网通机房的服务器IP为10.1.1.41

vim /var/named/chroot/var/named/data/others.cluster.com.zone

$TTL 86400
@       IN      SOA     dns.cluster.com.  root.cluster.com. (
                        2010070401
                        360
                        480
                        720
                        86400 )
        IN      NS      dns.cluster.com.
dns     IN      A       10.1.1.192
www     IN      A       10.1.1.42 --其它的访问10.1.1.42这台服务器

第四步,最好修改一下属主,确保服务运行OK
chown named.named /var/named/chroot/var/named/data/*
chown named.named /var/named/chroot/etc/*

第五步,启动服务
/etc/init.d/named restart

第六步:测试
在客户端修改/etc/resolv.conf  把DNS的指向改为指向10.1.1.192这台DNS服务器

使用nslookup www.cluster.com去验证会发现
10.1.1.35和10.1.1.59的客户端返回的www.cluster.com的IP为10.1.1.40

10.1.1.36和10.1.1.56的客户端返回的www.cluster.com的IP为10.1.1.41

其它IP的客户端返回的www.cluster.com的IP为10.1.1.42

-----------------------------------------------------------------------

yum install caching-nameserver  -y --bind软件的一个配置模版

ls /var/named/chroot/etc/
localtime  named.caching-nameserver.conf  named.rfc1912.zones  rndc.key

named.caching-nameserver.conf + named.rfc1912.zones =named.conf

如果这三个文件同时存在,刚优先读取named.conf

可以查看配置样本
在/usr/share/doc/bind-9.3.6/sample/  下

vim /var/named/chroot/etc/named.caching-nameserver.conf   --此文件控制的参数更多

options {
        listen-on port 53 { any; }; --修改为any,监听所有
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";

        // Those options should be used carefully because they disable port
        // randomization
        // query-source    port 53;
        // query-source-v6 port 53;

        allow-query     { any; };  --改为any,允许所有人查询
        allow-query-cache { localhost; };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view localhost_resolver {  --这个文件做出来后,本地不能解析,需要把这一段给注释掉才可以
        match-clients      { localhost; };
        match-destinations { localhost; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
};

include "dianxin";
include "wangtong";

view "dianxin" {
        match-clients {dianxin;};
        zone "cluster.com" IN {
                type master;
                file "data/dianxin.cluster.com.zone";
        };
};

view "wangtong" {
        match-clients {wangtong;};
        zone "cluster.com" IN {
                type master;
                file "data/wangtong.cluster.com.zone";
        };
};

view "others" {
        match-clients {any;};
        zone "cluster.com" IN {
                type master;
                file "data/others.cluster.com.zone";
        };
};

后面的步骤也是一样

在这个配置文件里写,也一样能实现上面view功能
 

你可能感兴趣的:(电信,网通,智能DNS解析)