首先,应该检查自己是否已经安装了bind。 

[root@killgoogle ~]# rpm -qa bind* 

bind-9.3.3-10.el5 
bind-libbind-devel-9.3.3-10.el5 
bind-sdb-9.3.3-10.el5 
bind-devel-9.3.3-10.el5 
caching-nameserver  


bind-chroot-9.3.3-10.el5 bind-chroot此包放最后一个安装 


如果出现下现报错信息: 

Locating /var/named/chroot//etc/named.conf failed: [失败] 
则将/usr/share/doc/bind-9.3.3/sample/etc/named.conf范本文件复制为/etc/named.conf 

使用了chroot后,虚拟根目录为/var/named/chroot,则namd.conf实际位置为/var/named/chroot/etc,而工作目录/var/named实际路径 

为/var/named/chroot/var/named. 


个人比较推荐yum安装,不会发生如上所述的bind报错,整个安装过程也很轻松 
[root@killgoogle ~]# yum install bind* 
[root@killgoogle ~]# yum install caching-nameserver 
安装过后BIND服务就已经完成三分之一了,剩下的三分之二就是配置BIND服务。好,开始!我是想配置一个DNS可以解析我的域名:www.test.com和ftp.test.com 

。假设我的IP是:192.168.1.12 
[root@killgoogle ~]# cd /var/named/chroot/etc/ 
[root@killgoogle etc]# ls 
localtime named.rfc1912.zones 
named.caching-nameserver.conf named.rfc1912.zones.rpmsave 
rndc.key  
这里我们可以看到在/var/named/chroot/etc/下的几个主要的配置文件。但是我们还是不要动这些文件的好,可以先复制它们并对它们进行修改。在进行复制的 

时候应该加上参数-P,这样在复制的时候把文件的属性不会改变。 
[root@killgoogle etc]# cp -p named.caching-nameserver.conf named.conf 
现在就可以用named.conf文件进行配置了。 
[root@killgoogle etc]# vi 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"; 
  query-source port 53;  
  query-source-v6 port 53; 
  allow-query { any; }; 
}; 
logging { 
  channel default_debug { 
  file "data/named.run"; 
  severity dynamic; 
  }; 
}; 
view localhost_resolver { 
  match-clients { any; }; 
  match-destinations { any; }; 
  recursion yes; 
  include "/etc/named.rfc1912.zones"; 
}; 
[root@killgoogle etc]# vi named.rfc1912.zones 
。下面是我的文件内容 
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; }; 
}; 
zone "test.com" IN { 
  type master; 
  file "test.com.zone"; 
  allow-update { none; }; 
}; 
zone "1.168.192.in-addr.arpa" IN { 
  type master; 
  file "192.168.1.zone"; 
  allow-update { none; }; 
}; 
其中可以看见有这个配置文件里又引用了两个新的文件:test.com.zone和192.168.1.zone。这两个文件可以CP过来。 
[root@killgoogle var]# cd /var/named/chroot/var/named/ 
[root@killgoogle var]# cp -p localdomain.zone test.com.zone 
[root@killgoogle var]# cp -p named.local 192.168.1.zone 
在这之中比较重要的还是要加参数P,要不然很有可能启动不了named服务。好了,现在就可以编辑这两个文件了。 
[root@killgoogle var]# vi 192.168.1.zone 
$TTL 86400 
@ IN SOA localhost. root.localhost. ( 
  1997022700 ; Serial 
  28800 ; Refresh 
  14400 ; Retry 
  3600000 ; Expire 
  86400 ) ; Minimum 
  IN NS test.com. 
12 IN PTR www.test.com. 
12 IN PTR ftp.test.com. 
有必要说明的是最后两句前面的那个12是指的我自己IP:192.168.1.12的最后一个数 
[root@killgoogle var]# vi test.com.zone 
$TTL 86400 
@ IN SOA localhost root ( 
  42 ; serial (d. adams) 
  3H ; refresh 
  15M ; retry 
  1W ; expiry 
  1D ) ; minimum 
  IN NS localhost 
www IN A 192.168.1.12 
ftp IN A 192.168.1.12 

其中192.168.1.zone是反向解析文件,而test.com.zone是正向解析文件.下一步就是修改/etc/resolv.conf文件了.只有修改了这个文件才可以用自己的的机器进 

行域名解析 

[root@killgoogle var]# vi /etc/resolv.conf 


只要加上一句:nameserver 192.168.41.12就行了。 

这样配置就完成了。不过现在开始配置rhel5的selinux。因为不配置这个的话就不会让别人访问你的DNS服务器。 


[root@killgoogle var]# setup 

弹出一个对话框。我们要进行的是防火墙配置,所以选择第六个选项:防火墙配置。选择“定制”再在弹出的对话框的允许进入的最后一栏即:其它端口里输入: 

53:tcp 53:udp 

好了。这样就完成了所有过程。实验中可关闭Selinux,开启服务service named start. 

以上即是配置主域名服务器过程,如果是从域名呢 ?这个配置过程也是一样的,只需要改动named.rfc1912.zones文件即可,以下是变动部分. 


zone "test.com" IN { 
  type slave; 
  file "slaves/test.com.zone"; 
  masters { 192.168.1.12; }; 
}; 
zone "1.168.192.in-addr.arpa" IN { 
  type slave; 
  file "slaves/192.168.1.zone"; 
  masters { 192.168.1.12; }; 
}; 




[root@killgoogle ~]# nslookup 
> www.killgoogle.com 
Server: 192.168.1.12 
Address: 192.168.1.12#53 

Name: www.test.com 
Address: 192.168.1.12 


温馨小提示: 

1.rndc reload一个非常有用的命令,能在不关闭服务的情况下,即时更新bind;另nslookup交互环境中,可以用命令server 192.168.1.102指定此DNS服务器为提供 

服务的DNS服务器,因为笔者的机子上面有3个服务器. 

2.Non-authoritative answer项,它表示非授权的回答,说明来自其他DNS服务器或缓存 

3.泛域名: 比如用户的域名是abc.com,那么我们将主机名设置为"*",IP解析到比如:218.104.78.100,大家都知道*是通配符,他表明abc.com之前的所有子域 

名都将解析到218.104.78.100,这就意味着例如输入bbs.abc.com或者123.abc.com或者123.234.abc.com都将解析到218.104.78.100,这里需要说明的是,在我们 

系统里面如果单独设置一个子域名解析,比如将主机名设置为mail,单独解析到218.104.78.79,那么该解析记录优先。泛域名在实际使用中作用是非常广泛的, 

比如实现无限二级域名功能,提供免费的url转发,在IDC部门实现自动分配免费网址,在大型企业中实现网址分类管理等等,都发挥了巨大的作用。 

4.在实际工作中,可把自己的DNS服务器设置成forarding DNS,而将公网开放的DNS作为forwarder DNS.