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功能