您的位置:首页 > 其它

智能DNS那些事(基于bind9 view的主从配置)

2013-02-16 13:19 344 查看
一.智能DNS简介

智能DNS是域名频道在业界首创的智能解析服务。能自动判断访问者的IP地址并解析出对应的IP地址,使网通用户会访问到网通服务器,电信用户会访问到电信服务器。智能DNS就是根据用户的来路,自动智能化判断来路IP返回给用户,而不需要用户进行选择。解决南北互联问题

二.软件及环境

Red hat 5.4×64 Bin9 主192.168.10.45 辅 192.168.10.44

三.安装配置

1. bind的安装

下载bind

wget ftp://ftp.isc.org/isc/bind/9.8.0-P4/bind-9.8.0-P4.tar.gz

可直接从官网下载最新bind http://www.isc.org/software/bind

其中–libdir=/usr/lib64 可以根据自己系统来设定,32位使用–libdir=/usr/lib

编译安装(主从相同)

./configure –prefix=/usr –exec-prefix=/usr –bindir=/usr/bin –sbindir=/usr/sbin –sysconfdir=/etc –datadir=/usr/share –includedir=/usr/include –libdir=/usr/lib64 –libexecdir=/usr/libexec –localstatedir=/var –sharedstatedir=/usr/com –mandir=/usr/share/man –infodir=/usr/share/info –with-libtool –localstatedir=/var –enable-threads –with-openssl=no –enable-epoll

make –j 24

make install

2. 基础配置文件生成

生成rndc.conf

rndc-confgen > /etc/rndc.conf

生成named.conf

cat /etc/rndc.conf |tail |head -9 |sed “s/^#//g” > /etc/named.conf

域名文件目录

mkdir /var/named/chinanet –p

mkdir /var/named/cnc -p

useradd named

生成根域文件

dig -t NS . >/var/named/named.root

ip库文件

开始找以前同事要的,后来发现网上可以找到 http://liubaishui.com/下载其它的bind view IP库 (netlist.inc)

主DNS配置及简要说明(建议仔细阅读,配置时如果不需要说明,可以过滤掉以”;”开始的行)

view会根据定义顺序在定义的IP列表查找,将相应结果返回请求者。这次测试分为三部分,网通、电信、其它、如果请求者的IP不能匹配到,那么将会被“其它”匹配。

cat /etc/named.conf

options {

directory “/var/named”;

;这里可以添加其它控制参数,比如IP限制,可否递归查询等。请根据自己的生产需要添加

};

; rndc-key 用于控制DNS

key “rndc-key” {

algorithm hmac-md5;

secret “Mq+WZABoE+a/FFwgFYh3oQ==”;

};

;以下这三个key 用于主从同步。如果不设置会出现只会同步一个域。因为view已经可以匹配到结果。而且同步回来的数据可能会是错误的,这取决于从DNS同步时IP。本文中使用内网IP,IP列表中不会有内网IP,所以会同步other域名的数据。

;key的生成方法:使用 rndc-confgen命令。使用下面的命令即可。只输出key部分。将其名称做下修改即可。有多少个view域就生成多少个。主从DNS使用的key必须相同。

; rndc-confgen |grep “# key” -A3|sed “s/^# //g”

key “cnc” {

algorithm hmac-md5;

secret “wPaGrqLp0XtAepn8Rc0U3w==”;

};

key “chinanet” {

algorithm hmac-md5;

secret “i+uKnzR3JfSheMVLNWUH5Q==”;

};

key “other” {

algorithm hmac-md5;

secret “3o9OOMjzusp+M82okFcWyA==”;

};

controls {

inet 127.0.0.1 port 953

allow { 127.0.0.1; } keys { “rndc-key”; };

};

;acl.conf即为下载回来的ip库。将其命名为acl.conf。其中cnc和chinanet为大写,我手动修改成了小写。如果写随意,记得其中acl的定义的名称就OK。如果拿不到ip库文件,可以邮件给我.learywolf@163.com内容示例如下。(下面的acl定义 在acl.conf中定义,这里只是示意,不要写在named.conf中)

; acl “cnc” {

; 1.24.0.0/13;

; 1.56.0.0/13;

; 1.188.0.0/14;

; ……………..

; 14.204.0.0/15;

; 27.8.0.0/13;

; };

; acl “chinanet” {

; 1.0.1.0/24;

; ……….

; 1.0.2.0/23;

; };

include “/etc/acl.conf”;

; view 部分 三部分中会顺序匹配,我的配置顺序,电信→网通→其它

view “chinanet” {

; match-clients 定义了来源的IP。如果请求IP在chinanet 的acl中,那调用此view配置。其中添加的key为了实现主从同步

match-clients { key “chinanet” ; chinanet; };

;server指定从dns的IP及所用key 以区分不同 view域。同理从dns指定主。

server 192.168.10.44 { keys “chinanet”;};

;指定根域文件 .

zone “.” IN {

type hint;

file “named.root”;

};

;加载chinanet.conf,其内容为常规dns配置。示例如下.注意三个view域要有三个不同的zone文件。如果不需要view 可以直接定义view控制文件中调用相同的zone文件。简单的说就是 cnc.con chinanet.conf other.conf中调用相应zone配置。当然,也可以只在other.conf中定义。这样只能在other.conf中匹配到相应的解析信息。但不推荐这样。其它配置不再赘述。可以查阅官方文档。

; zone “leary.com” IN {

; type master;

; file “chinanet/leary.com.dns”;

; };

include “/etc/chinanet.conf”;

notify yes;

also-notify { 192.168.10.44; };

allow-transfer { 192.168.10.44; };

};

view “cnc” {

match-clients { key “cnc” ;cnc; };

server 192.168.10.44 { keys “cnc”;};

zone “.” IN {

type hint;

file “named.root”;

};

include “/etc/cnc.conf”;

notify yes;

also-notify { 192.168.10.44; };

allow-transfer { 192.168.10.44; };

};

view “other” {

match-clients { key “other” ; any; };

server 192.168.10.44 { keys “other”;};

zone “.” IN {

type hint;

file “named.root”;

};

include “/etc/other.conf”;

notify yes;

also-notify { 192.168.10.44; };

allow-transfer { 192.168.10.44; };

};

;end

3. view域配置文件

/etc/cnc.conf

/etc/chinanet.conf

/etc/other.conf

分别配置其内容,需要注意:

zone “leary.com” IN {

type master;

file “cnc/leary.com.dns”;

};

1) type类型,主或者从

2) zone文件位置。基础目录为/var/named. 其中对应域名解析到的IP为别定义在不同的域文件中

3) cnc 的zone放在/var/named/cnc/下,chinanet 放在/var/named/chinanet/下,other放在/var/named/下

4. zone 文件

根据需要配置域文件。

cat /var/named/leary.com.dns

$TTL 86400

@ IN SOA ns.leary.com. root.leary.com. (

6 ; serial_num

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS ns.leary.com.

@ IN A 10.1.4.165

ns IN A 10.1.4.164

www IN A 10.1.4.164

cat /var/named/cnc/leary.com.dns

$TTL 86400

@ IN SOA ns.leary.com. root.leary.com. (

6 ; serial_num

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS ns.leary.com.

@ IN A 10.1.2.165

ns IN A 10.1.2.164

www IN A 10.1.2.164

cat /var/named/chinanet/leary.com.dns

$TTL 86400

@ IN SOA ns.leary.com. root.leary.com. (

6 ; serial_num

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS ns.leary.com.

@ IN A 10.1.3.165

ns IN A 10.1.3.164

www IN A 10.1.3.164

5. 从DNS与主的配置区别

1) named.conf 中server的配置。 server 192.168.10.45 { keys “chinanet”;};

2) view配置文件。以cnc.conf为例

zone “leary.com” IN {

type slave;

file “slaves/cnc/leary.com.dns”;

masters { 192.168.10.45; };

};

type 类似型为 slave

file 指定的文件位置,当然也可以按主DNS那样配置,我这里只是为了区分。

3) key 定义一定要和主一样

4) 从DNS的zone文件不用配置。可以直接从主同步

6. 权限修改

chown -R named:named /var/named

chown -R named /var/run/named

四.启动脚本及命令

1. 启动脚本。基于rhel 其它系统需要另行修改.放在/etc/init.d/named
脚本见附件

chown +x /etc/init.d/named

chkconfig –add named

chkconfig named on

2. named-checkconf 检查dns配置正确性

3. rndc reconfig 重加载dns配置

4. named-checkzone leary.com /var/named/leary.com.dns 重要zone配置文件

5. rndc reload leary.com in cnc 重加载cnc 对应的zone文件配置

6. rndc reload leary.com in chinanet 重加载chinanet 对应的zone文件配置

7. rndc reload leary.com in other 重加载other 对就的zone文件配置

至此,可以启动dns了。

/etc/init.d/named configtest

/etc/init.d/named start

日志在/var/log/message,如遇问题,根据其中报错排查

已知问题:

会有报错如下

managed-keys-zone ./IN/chinanet: loading from master file 0eb205490a59454b6f6feb085efc6b0dab64a63f855a77e2d200c59ed055acd0.mkeys failed: file not found

touch /var/named/managed-keys.bind 依旧会报,目前没找到解决办法。但测试不影响使用。

测试方法:

由于基于内网,可以分别修改acl.conf,添加192.168.0.0/16;在对应的acl中,用其它内网机器 dig 结果,正常可以得到不同的解析结果。我这里设置的,cnc为10.1.2 网段,chinanet 10.1.3网段 other 10.1.4网段。有问题可以留言或才邮件给我。learywolf@163.com

出处:http://blog.chinaunix.net/uid-14880689-id-3201959.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: