1.使用bind来安装DNS
# yum install bind  (服务器软件包)
# yum install bind-chroot  (安全考虑 用来将bind与OS分离出来 虚拟的根)
# yum install caching-nameserver (模板)
2.了解bind的目录结构
# grep -v ^# /etc/sysconfig/named 
ROOTDIR=/var/named/chroot
[root@stu254 chroot]# ls *
dev: 
null  random  zero
etc:
localtime  named.caching-nameserver.conf  named.rfc1912.zone
 rndc.key
var:
named  run  tmp
[root@stu254 chroot]# 
 
3.建立sulinux.com的正解与反解
修改主配置文件
[root@stu254 etc]# grep any named.caching-nameserver.conf 
listen-on port 53 { any; }; 
allow-query     { any; };
match-clients   { any; };
match-destinations { any; };
监听端口,查询地址,客户端和查询目的地址 都改成any
[root@stu254 etc]# 
建立正反解查询
[root@stu254 etc]# tail named.rfc1912.zones 
 
zone "sulinux.com" IN {
type master;
file "sulinux.com.zone.db";
};
 
zone "1.168.192.in-addr.arpa" IN {
type master;
file "sulinux.com.arpa.db";
};
[root@stu254 etc]# 
建立正反解区域文件 从localhost.zone复制 修改
[root@stu254 named]# pwd
/var/named/chroot/var/named
[root@stu254 named]# cat sulinux.com.zone.db 
$TTL 86400
@ IN SOA  @       root (
2009060401 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
 
       IN NS dns.sulinux.com.
IN MX 5 mail.sulinux.com.
mail IN A 10.10.10.30
dns IN A 192.168.1.31
www IN A 192.168.1.31
[root@stu254 named]# cat sulinux.com.arpa.db 
$TTL 86400
@ IN SOA  @       root (
2009060401 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
 
       IN NS dns.sulinux.com.
IN MX 5 mail.sulinux.com.
30 IN PTR mail.sulinux.com.
31 IN PTR dns.sulinux.com.
31 IN PTR www.sulinux.com.
[root@stu254 named]# 
修改区域文件的权限
# chown :named /var/named/chroot/var/named/sulinux.com.*
 
用语法检查工具检查配置
# named-checkconf /var/named/chroot/etc/named.caching-nameserver.conf 
# named-checkzone sulinux.com /var/named/chroot/var/named/sulinux.com.*
zone sulinux.com/IN: loaded serial 2009060401
OK
没有问题 重新启动named
service named restart
4.语法检查和测试工具
DNS客户端修改成本机
[root@stu254 named]# cat /etc/resolv.conf 
search sulinux.com
nameserver 192.168.1.31
[root@stu254 named]# 
[root@stu254 named]# host www.sulinux.com
www.sulinux.com has address 192.168.1.31
[root@stu254 named]# host mail.sulinux.com
mail.sulinux.com has address 10.10.10.31
mail.sulinux.com mail is handled by 5 mail.sulinux.com.
[root@stu254 named]# host 192.168.1.31
31.1.168.192.in-addr.arpa domain name pointer www.sulinux.com.
[root@stu254 named]# 
 
[root@stu254 named]# nslookup
> www.sulinux.com
Server: 192.168.1.31
Address: 192.168.1.31#53
 
Name: www.sulinux.com
Address: 192.168.1.31
> mail.sulinux.com
Server: 192.168.1.31
Address: 192.168.1.31#53
 
Name: mail.sulinux.com
Address: 192.168.1.31
> 192.168.1.31
Server: 192.168.1.31
Address: 192.168.1.31#53
 
31.1.168.192.in-addr.arpa name = www.sulinux.com.
31.1.168.192.in-addr.arpa name = mail.sulinux.com.
> exit
 
[root@stu254 named]# 
5.负载均衡
修改正解文件
www      0       IN A            192.168.1.31
www      0       IN A            192.168.1.30
www      0       IN A            192.168.1.32
其中 0 是生存时间 可以当做权值来使用
 
用ping www测试 会每次显示不同IP
 
6.直接解析域名和连续域名解析和泛域名解析
在正解文件中添加
sulinux.com.  IN A            192.168.1.31
# host sulinux.com
sulinux.com has address 192.168.1.31
连续域名解析,需要用$GENERATE函数 比如要解析1-254个循环的变量
stu$ 是主机名 192.168.1.$ 是对应地址
$GENERATE 1-254 stu$ IN A 192.168.1.$
$GENERATE 1-254 $ IN PTR stu$.sulinux.com.
泛域名解析 一定要写在最后
*               IN A            192.168.1.31
7.搭建主从服务器
修改主机配置文件
[root@stu31 named]#  tail -n 12 /var/named/chroot/etc/named.rfc1912.zones 
 
zone "sulinux.com" IN {
type master;
file "sulinux.com.zone.db";
allow-transfer {192.168.1.32;};
};
 
zone "1.168.192.in-addr.arpa" IN {
type master;
file "sulinux.com.arpa.db";
allow-transfer {192.168.1.32;};
};
[root@stu31 named]#
在主机的zone文件中加入从机做NS
正解:
dns             IN NS           dns.sulinux.com.
                 IN A            192.168.1.32
反解:
32              IN NS           dns.sulinux.com.
                 IN PTR          dns.sulinux.com.
如不修改则只能向从机传递zone文件 从机不会随主机更新正解反解文件而更新
 
 
修改从机配置文件 无需建立zone文件
[root@stu32 named]# tail -n 12 /var/named/chroot/etc/named.rfc1912.zones 
 
zone "sulinux.com" IN {
       type slave;
         file "slaves/sulinux.com.zone.db";
       masters {192.168.1.31;};
};
 
zone "1.168.192.in-addr.arpa" IN {
         type slave;
         file "slaves/sulinux.com.arpa.db";
masters {192.168.1.31;};
};
[root@stu32 named]# 
 
 
测试
重新启动主从服务器,zone文件会自动复制过去
再向主服务器中添加新的正反记录并修改版本号,重新启动主后,从即可更新记录
 
 
8.只缓冲服务器
最主要的就是下面两项
forward only; 指明这个服务器是缓存域名服务器 
forwarders  是转发dns请求到那个服务器
 
*forward 值有first和only两项
first 先查自定义的域,(但不查hint),查不到再转发到”forwarders”中的服务器,再查询hint.
only是先查自定义的域,查不到再转发到 “转发服务器列表”中的服务器,不再查询hint
可以在options段中使用forwarders和forward指令设置DNS转发: 
options { 
forwarders { 
192.168.1.110; 
192.168.1.112; 
}; 
forward first; 
}; 
 
forwarders { DNS_IP_1; DNS_IP_2; }; 
forwarders指令用于设置将DNS请求转发到哪个服务器,可以指定多个服务器的IP地址。 
 
 
假设你有一个域xxx.com,希望建立一个yyy.xxx.com的子域。那么你可以在解析xxx.com的文件中添加下面两行: 
yyy.xxx.com. IN NS dns.yyy.xxx.com. 
dns.yyy.xxx.com IN A x.x.x.x