2013-04-19
发表者 Venus
暂无评论
redhat6 安装bind服务及其dns转发
在redhat6以后,caching-nameserver这个rpm包已经取消,相关参数可在named.conf中配置。
安装服务:
[root@rhel6www ~]# yum install -y bind bind-chroot
首先配置主配置文件:
[root@rhel6www ~]# vi /etc/named.conf
options {
listen-on port 53 { 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";
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
把listen-on port 53 { 127.0.0.1; }; 和allow-query { localhost; }; 大括号内的值改为 any,屏蔽掉:
#dnssec-enable yes;
#dnssec-validation yes;
#dnssec-lookaside auto;
配置声明区域文件:
[root@rhel6www ~]# vi /etc/named.rfc1912.zones
屏蔽:
#zone "1.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.loopback";
# allow-update { none; };
#};
#zone "0.in-addr.arpa" IN {
# type master;
# file "named.empty";
# allow-update { none; };
#};
这里用thing.com域做测试,添加:
##########################################
#正向解析#
zone "thing.com" IN { //区域名称
type master; //区域类型
file "thing.zone"; //区域文件
allow-update { none; }; //辅助dns
};
#反向解析#
zone "0.168.192.in-addr.arpa" IN {
type master;
file "0.168.192.zone";
allow-update { none; };
};
##########################################
配置区域文件,首先复制:
cp -p /var/named/named.* /var/named/chroot/var/named/ //这是系统默认定义的几个区域文件,不复制的话启动会报错,缺少文件。
配置thing.com的区域文件:
[root@rhel6www ~]# cd /var/named/chroot/var/named/
[root@rhel6www named]# cp -p named.localhost thing.zone
[root@rhel6www named]# vi thing.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
www IN A 192.168.0.110
配置反向解析文件:
[root@rhel6www named]# cp -p named.localhost 0.168.192.zone
[root@rhel6www named]# vi 0.168.192.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
PTR localhost.
110 PTR www.thing.com
重启named。测试。
名称: www.thing.com
Address: 192.168.0.110
> 192.168.0.110
服务器: UnKnown
Address: 192.168.1.111
名称: www.thing.com.0.168.192.in-addr.arpa
Address: 192.168.0.110
现在dns服务器可以适用于公司内部解析,那么在解析百度、新浪之类的网站是是无法解析的,需要在服务器上做dns转发:
[root@rhel6www named]# vi /etc/named.conf
在options段中添加:
forwarders {
202.102.134.68,8.8.8.8;
};
forward first;
options {
listen-on port 53 { 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";
allow-query { any; };
recursion yes;
# dnssec-enable yes;
# dnssec-validation yes;
# dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
forwarders {
202.102.134.68,8.8.8.8;
};
forward first;
};
打开或关闭DNSSEC验证.注意dnssec-enable也需要设置成yes才会生效,缺省为打开.
这需要一个配置文件,由于所有与服务器的通信都使用依赖共享密钥的数字签名来认证,并且没有其它方式可以比配置文件提供更好的保密方式.rndc配置文件的缺省路径是/etc/rndc.conf,
但也可以使用-c参数来指定一个其它路径.如果rndc没有找到配置文件,它将会查找/etc/rndc.conf(或者是BIND构建时由sysconfdir所定义的其它目录).rndc.key文件是由rndc-congen -a所生成的.
关于dns轮询配置:
只需要在options段添加一句 rrset-order { order cyclic; };
rrset-order 支持三个参数:fixed、random、cyclic 。
fixed 会将多个A记录按配置文件的顺序固定给出
random 会随机给出
cyclic 会循环给出
这里写了一个dns解析脚本,测试10次解析。
[root@localhost ~]# cat dns.sh
#!/bin/bash
for (( i=1;i<=10;i++ ))
do
ping www.a.com -c 1 | head -1 | awk '{print$3}' | cut -d"(" -f2 | cut -d")" -f1
done
fixed参数:
[root@localhost ~]# sh dns.sh
192.168.0.155
192.168.0.155
192.168.0.155
192.168.0.155
192.168.0.155
192.168.0.155
192.168.0.155
192.168.0.155
192.168.0.155
192.168.0.155
random参数:
[root@localhost ~]# sh dns.sh
192.168.0.155
192.168.0.155
192.168.0.157
192.168.0.157
192.168.0.155
192.168.0.157
192.168.0.157
192.168.0.156
192.168.0.156
192.168.0.156
cyclic参数:
[root@localhost ~]# sh dns.sh
192.168.0.157
192.168.0.155
192.168.0.156
192.168.0.157
192.168.0.155
192.168.0.156
192.168.0.157
192.168.0.155
192.168.0.156
192.168.0.157
经过实际测试,还是cyclic效果比较好,推荐用这个值来调度dns轮询。