分享
 
 
 

用bind9构架自动根据来源ip动态解析的智能主、辅DNS

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

用bind9构架自动根据来源ip动态解析的智能主、辅DNS

由于各运营商之间网络连接的瓶颈问题,使得处于某一网络的用户在访问位于其他网络的服务器时,速度慢的令人难以忍受,不得已我们采取了在不同运营商处分别放置服务器的方式来解决,原来已经介绍过,可以通过cache来比较方便的解决不同服务器内容同步问题,这次主要介绍如何通过动态智能DNS,来将用户自动导向速度快的服务器。

以下我们通过一个实例来说明如何实现动态解析域名。例如,我们在教育网和网通分别有一台具有相同内容的服务器,cache1.test.com(202.194.15.22)和cache2.test.com(218.56.57.125)。我们要做的就是使用户通过域名www.sdada.edu.cn访问时,根据用户使用的网络,将用户动态分配到速度快的服务器上。(原来可能使用过www1和www2分别指向的方式,但毕竟不方便。)

我们有两台DNS服务器,主DNS(MASTER):202.194.15.1,辅DNS(SLAVE):202.194.15.2, 202.194.15.3。实际上,动态解析的工作是通过bind9的view功能来实现的,这里为了省事,主辅DNS都安装redhat as4,使用其自带的bind9.2.4,我们主要学习如何设置bind view。

辅DNS的数据都来源于主DNS,若我们使用了view功能,那么辅DNS使用常规设置,就只能获取到某一view的内容,不能同步所有的view,所以我们给辅dns设置了两个ip地址,通过在主DNS上设置view的选择功能,以及在辅DNS上设置transfer-source,即使用哪个ip同步功能来实现多个view的同步。

首先明确一下我们要实现的目标,即网通用户访问www.sdada.edu.cn自动导向cache2,其他网络用户访问www.sdada.edu.cn自动导向cache1。要识别是否为网通用户,我们需要有一个网通网络的ip地址列表,这个可以从网上找到。放到acl.conf文件中,并将acl.conf复制到主、辅DNS的/var/named/chroot/var/named目录中(目录视具体情况而定)。

acl.conf

//cnc acl list

acl \\"CNC\\" {

58.16.0.0/16;

58.17.0.0/17;

58.17.128.0/17;

58.18.0.0/16;

58.19.0.0/16;

58.20.0.0/16;

58.21.0.0/16;

58.22.0.0/15;

58.240.0.0/15;

58.242.0.0/15;

58.244.0.0/15;

58.246.0.0/15;

58.248.0.0/13;

60.0.0.0/13;

60.8.0.0/15;

60.10.0.0/16;

60.11.0.0/16;

60.12.0.0/16;

60.13.0.0/18;

60.13.128.0/17;

60.14.0.0/15;

60.16.0.0/13;

60.24.0.0/14;

60.30.0.0/16;

60.31.0.0/16;

60.208.0.0/13;

60.216.0.0/15;

60.218.0.0/15;

60.220.0.0/14;

61.48.0.0/13;

61.133.0.0/17;

61.134.96.0/19;

61.134.128.0/17;

61.135.0.0/16;

61.137.128.0/17;

61.138.0.0/17;

61.138.128.0/18;

61.139.128.0/18;

61.148.0.0/15;

61.156.0.0/16;

61.158.0.0/16;

61.159.0.0/18;

61.161.0.0/18;

61.161.128.0/17;

61.162.0.0/16;

61.163.0.0/16;

61.167.0.0/16;

61.168.0.0/16;

61.176.0.0/16;

61.179.0.0/16;

61.180.128.0/17;

61.181.0.0/16;

61.182.0.0/16;

61.189.0.0/17;

125.32.0.0/16;

125.40.0.0/13;

202.96.0.0/18;

202.96.64.0/21;

202.96.72.0/21;

202.97.128.0/18;

202.97.224.0/21;

202.97.240.0/20;

202.98.0.0/21;

202.98.8.0/21;

202.99.64.0/19;

202.99.96.0/21;

202.99.128.0/19;

202.99.160.0/21;

202.99.168.0/21;

202.99.176.0/20;

202.99.208.0/20;

202.99.224.0/21;

202.99.232.0/21;

202.99.240.0/20;

202.102.128.0/21;

202.102.224.0/21;

202.102.232.0/21;

202.106.0.0/16;

202.107.0.0/17;

202.108.0.0/16;

202.110.0.0/17;

202.111.128.0/18;

203.93.8.0/24;

203.93.192.0/18;

210.13.128.0/17;

210.14.160.0/19;

210.14.192.0/19;

210.15.32.0/19;

210.15.96.0/19;

210.15.128.0/18;

210.16.128.0/18;

210.21.0.0/16;

210.51.0.0/16;

210.52.128.0/17;

210.53.0.0/17;

210.53.128.0/17;

210.74.96.0/19;

210.74.128.0/19;

210.82.0.0/15;

211.152.0.0/13;

218.7.0.0/16;

218.8.0.0/14;

218.12.0.0/16;

218.21.128.0/17;

218.24.0.0/14;

218.28.0.0/15;

218.56.0.0/14;

218.60.0.0/15;

218.62.0.0/17;

218.67.128.0/17;

218.68.0.0/15;

218.104.0.0/14;

219.154.0.0/15;

219.156.0.0/15;

219.158.0.0/17;

219.158.128.0/17;

219.159.0.0/18;

220.252.0.0/16;

221.0.0.0/15;

221.2.0.0/16;

221.3.0.0/17;

221.3.128.0/17;

221.4.0.0/16;

221.5.0.0/17;

221.5.128.0/17;

221.6.0.0/16;

221.7.0.0/19;

221.7.32.0/19;

221.7.64.0/19;

221.7.96.0/19;

221.7.128.0/17;

221.8.0.0/15;

221.10.0.0/16;

221.11.0.0/17;

221.11.128.0/18;

221.11.192.0/19;

221.12.0.0/17;

221.12.128.0/18;

221.13.0.0/18;

221.13.64.0/19;

221.13.96.0/19;

221.13.128.0/17;

221.14.0.0/15;

221.192.0.0/15;

221.194.0.0/16;

221.195.0.0/16;

221.196.0.0/15;

221.198.0.0/16;

221.199.0.0/19;

221.199.32.0/20;

221.199.128.0/18;

221.199.192.0/20;

221.200.0.0/14;

221.204.0.0/15;

221.206.0.0/16;

221.207.0.0/18;

221.207.64.0/18;

221.207.128.0/17;

221.208.0.0/14;

221.212.0.0/16;

221.213.0.0/16;

221.214.0.0/16;

221.215.0.0/16;

221.216.0.0/13;

222.128.0.0/14;

222.132.0.0/14;

222.136.0.0/13;

222.160.0.0/15;

222.162.0.0/16;

222.163.0.0/19;

222.163.32.0/19;

222.163.64.0/18;

222.163.128.0/17;

219.235.56.194;

};

然后,我们需要在主DNS的named.conf中设置view,以及添加区域,如下

named.conf

//

// named.conf for Red Hat caching-nameserver

//

options {

directory \\"/var/named\\"; //设置工作目录

dump-file \\"/var/named/data/cache_dump.db\\";

statistics-file \\"/var/named/data/named_stats.txt\\";

/*

* If there is a firewall between you and nameservers you want

* to talk to, you might need to uncomment the query-source

* directive below. Previous versions of BIND always asked

* questions using port 53, but BIND 8.1 uses an unprivileged

* port by default.

*/

// query-source address * port 53;

};

//

// a caching only nameserver config

//

controls {

inet 127.0.0.1 allow { localhost; } keys { rndckey; };

};

zone \\".\\" IN { //设置查询根服务器

type hint;

file \\"named.ca\\";

};

zone \\"localdomain\\" IN {

type master;

file \\"localdomain.zone\\";

allow-update { none; };

};

zone \\"localhost\\" IN {

type master;

file \\"localhost.zone\\";

allow-update { none; };

};

zone \\"0.0.127.in-addr.arpa\\" IN {

type master;

file \\"named.local\\";

allow-update { none; };

};

zone \\"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa\\" IN {

type master;

file \\"named.ip6.local\\";

allow-update { none; };

};

zone \\"255.in-addr.arpa\\" IN {

type master;

file \\"named.broadcast\\";

allow-update { none; };

};

zone \\"0.in-addr.arpa\\" IN {

type master;

file \\"named.zero\\";

allow-update { none; };

};

include \\"/etc/rndc.key\\";

include \\"/var/named/acl.conf\\"; //包含acl.conf

view \\"view_cnc\\" {

match-clients { CNC;202.194.15.3; }; //view cnc使用202.194.15.3来传输

zone \\"sdada.edu.cn\\" {

type master;

file \\"/var/named/cnc.sdada.edu.cn.hosts\\";

allow-transfer { 202.194.15.3; };

};

};

view \\"view_any\\" { //view any使用202.194.15.2来传输

match-clients { any; };

zone \\"sdada.edu.cn\\" {

type master;

file \\"/var/named/edu.sdada.edu.cn.hosts\\";

allow-transfer { 202.194.15.2; };

};

};

然后我们分别设置cnc.sdada.edu.cn.hosts和edu.sdada.edu.cn.hosts这两个记录文件。

cnc.sdada.edu.cn.hosts

$ttl 38400

sdada.edu.cn. IN SOA dns1.sdada.edu.cn. admin.sdada.edu.cn. (

1160617933

10800

3600

604800

38400 )

sdada.edu.cn. IN NS dns1.sdada.edu.cn.

sdada.edu.cn. IN NS dns2.sdada.edu.cn.

@ A 218.56.57.125

@ MX 10 mail.sdada.edu.cn.

mail A 192.168.0.11

www A 218.56.57.125

edu.sdada.edu.cn.hosts

$ttl 38400

sdada.edu.cn. IN SOA dns1.sdada.edu.cn. admin.sdada.edu.cn. (

1160561482

10800

3600

604800

38400 )

sdada.edu.cn. IN NS dns1.sdada.edu.cn.

sdada.edu.cn. IN NS dns2.sdada.edu.cn.

@ A 202.194.15.22

@ MX 10 mail.sdada.edu.cn.

mail A 192.168.0.11

www A 202.194.15.22

这样,重新启动Bind后,主DNS就生效了,网通用户输入www.sdada.edu.cn会自动访问218.56.57.125,而其他用户会访问202.194.15.22,我们还可以根据需要添加反向解析区域,这里不再作介绍。

然后需要设置辅助DNS,

辅助DNS只需要设置named.conf指定master,无须设置记录文件,它会从master自动同步。

named.conf

//

// named.conf for Red Hat caching-nameserver

//

options {

directory "/var/named";

dump-file "/var/named/data/cache_dump.db";

statistics-file "/var/named/data/named_stats.txt";

/*

* If there is a firewall between you and nameservers you want

* to talk to, you might need to uncomment the query-source

* directive below. Previous versions of BIND always asked

* questions using port 53, but BIND 8.1 uses an unprivileged

* port by default.

*/

// query-source address * port 53;

};

//

// a caching only nameserver config

//

controls {

inet 127.0.0.1 allow { localhost; } keys { rndckey; };

};

zone "." IN {

type hint;

file "named.ca";

};

zone "localdomain" IN {

type master;

file "localdomain.zone";

allow-update { none; };

};

zone "localhost" IN {

type master;

file "localhost.zone";

allow-update { none; };

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "named.local";

allow-update { none; };

};

zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {

type master;

file "named.ip6.local";

allow-update { none; };

};

zone "255.in-addr.arpa" IN {

type master;

file "named.broadcast";

allow-update { none; };

};

zone "0.in-addr.arpa" IN {

type master;

file "named.zero";

allow-update { none; };

};

include "/etc/rndc.key";

include "/var/named/acl.conf"; //包含acl.conf

server 202.194.15.1 {

};

view view_cnc {

match-clients {

cnc;

};

zone "sdada.edu.cn" {

type slave;

masters {

202.194.15.1;

};

file "/var/named/slaves/sdada.edu.cn.view_cnc.hosts";

transfer-source 202.194.15.3; //view cnc使用202.194.15.3同步

};

};

view view_any {

match-clients {

any;

};

zone "sdada.edu.cn" {

type slave;

masters {

202.194.15.1;

};

file "/var/named/slaves/sdada.edu.cn.view_any.hosts";

transfer-source 202.194.15.2; //view any使用202.194.15.2同步

};

};

设置完成后重启辅dns的Bind,很快就可以看到辅助dns已经分别同步到不同View的内容了。

我们可以分别在网通网和教育网上使用nslookup - 202.194.15.1和nslookup - 202.194.15.2分别测试两个DNS服务器的工作情况。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有