引入DNS软件:
    Bind:Berkey Information Name Domain 对数据库的支持不太好,不支持多线程
PowerDNS 性能强大 速  度块
Bind软件的配置使用
 
yum list all bind* 
为了学习方便,在此配置使用中,我们使用Bind97
配置软件的简介:bind97.i386 (必安装) 是服务器端包,此包如果不装DNS服务器的话,一般是不安装的。
bind97-chroot.i386    chroot:切换根目录  为什么要在bind运行的时候切换根目录呢?这是为了系统安全考虑的。
bind97-libs    必安装
bind97-utils bind97的工具包 必安装  
为了防止以后软件使用冲突,先去卸载老的bind包,bind-libs和bind-utils  
  rpm -e bind-libs bind-utils  卸载包
   yum install bind97-libs bind97-utils  -y  安装新版本的bind包
   yum install bind97 安装服务器端安装包
 
Bind安装完成后生成的三个客户端工具:dig, host, nslookup
 
dig -t A www1.example.com @192.168.0.254  正向查询www1.example.com的IP地址
dig -x PTR 192.168.0.101 @192.168.0.254   反向查询192.168.0.101的主机名
dig -t NS example.com @192.168.0.254      查看www1.example.com的域名服务器
dig -t SOA example.com @192.168.0.254     
dig -t MX example.com @192.168.0.254
 
vim /etc/resolv.conf中定义DNS服务器地址
host的用法:
host -t A wwwl.example.com 查看IP地址
host -t PTR 192.168.0.101 查看主机名
...
nslookup的用法
nslookup命令,windows和linux都支持。
nslookup
server DNS_ADDR
set type-A  查看主机的IP地址
    q=PTR   查看主机名
q=MX   邮件服务器
 
Bind97服务器端安装后生成的主要文件:
配置文件:/etc/named
/etc/named.conf  主配置文件,很关键的
/etc/rndc.conf
/etc/rndc.key
rndc:Remote Name Domain Controller 远程名称服务控制器,即为远程登陆管理DNS服务器Bind的客户端工具。
涉及到安全性,并不是所有的rndc客户端都可以登陆DNS服务器上进行管理的,要是登陆的话是需要提供key的,双方是一对密钥,只要当密钥匹配时,才能发起控制命令。而且rndc默认情况下为了安全起见,在安装上去后只工作在TCP/127.0.0.1上的953端口上
 
bind:服务器端运行的执行程序就是/usr/sbin/named
 
/usr/sbin/named-checkconf   检查主配置文件的语法正确性
/usr/sbin/named-checkzone   检查区域文件中是不是有语法错误    这两个很常用
 
主配置文件:/etc/named.conf 由于主配置文件至关重要,因此它的权限是定义:(640, owner:root, group:named)
Bind的工作目录:/var/named     区域数据文件存储路径
默认情况下,我们用rpm包安装的Bind,他所要去找自己的区域数据路径的时候都到这个文件中寻找
区域文件:/etc/named.xxx.zones
 
DNS服务器的角色:
主DNS
辅DNS
缓存DNS:应该有:
 根区域:标明根服务器在什么位置
 本地正向区域:localhost --> 127.0.0.1
 本地反向区域:127.0.0.1--> localhost
 
缓存DNS:不为任何区域提供解析,但是可以将用户的请求转发到其他主机上,并将结果先缓存到本地,也就意味着任何客户端向我们发起查询请求的时候,我们要向根转发,因此我们需要一个根区域,标明根服务器在什么地方。
 
 
现在详细介绍一下我们的主配置文件都包含神马东东:
 主配置文件:/etc/named.conf
 这个主配置文件主要有两段组成: 
 1.全局选项段                   #全局选项段只有一个
 options {
listen-on port 53 { 0.0.0.0 };    #表监听所有端口
// listen-on-v6 port 53 { ::1: };   #在conf 文件中注释采用C风格“//”  “/*...*/
directory       "/var/named";      #用于定义工作目录的,这是最重要的一项,
dump-file      "/var/named/data/cache_dump.db";  #用来做转储的存放位置
statistics-file  "/var/named/data/named_stats.txt"; #统计数据的存放位置
memstatistcs-file  "/var/named/data/named_men_stats.txt";  #内存统计的存放位置
allow-query   [ localhost ];   #允许谁查询
 };
 2.区域声明端:                 #区域声明段可以有多个
 zone "zone_NAME" IN {
type  区域类型 ;                #区域类型
file "xxx.zone";
 };
区域类型:
master 主区域类型
slave  从区域类型
hint   根提示区域
forward 转发区域 
 
反向区域的区域名称:都是以这个域内所有主机的IP地址的网络地址(而且还是反过来写)
eg:172.16.100.1-->16.172.in-addr.arpa
 
反向区域中,PTR记录的”name"是IP地址剩余的部分反过来写,即所谓的主机地址
 
实验:定制一个适合自身使用的简单DNS缓存服务器:
实验平台:用 cat /etc/issue查看实验平台版本
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
内核版本:2.6.18-308.el5
1. mv /etc/named.conf /etc/named.conf.origin
vim /etc/named.conf
 
 
  
  1. options { 
  2.         directory "/var/named"
  3. }; 
  4. zone "." IN { 
  5.         type hint; 
  6.         file "named.ca"
  7. }; 
  8. zone "localhost" IN { 
  9.         type master; 
  10.         file "localhost.zone"
  11. }; 
  12. zone "0.0.127.in-addr-arpa" IN { 
  13.         type master; 
  14.         file "127.0.0.zone"
  15. }; 
说明:由于DNS服务的安全性至关重要,其他用户没有任何的权限来查看读写named.conf的配置文件,因此我们要修改相应的权限:
chmod 640 /etc/named.conf    #改变其他用户的权限
chown :named /etc/named.conf  #改变其属组
2.建立正向和反向区域数据文件            #区域数据文件里面都是资源记录和宏定义
由于我们使用的是相对路径,因此我们在/var目录下建立即可
cd /var
vim localhost.zone      #建立正向区域数据文件
 
 
  
  1. $TTL 86400 
  2. $ORIGIN nagedu.com.   定义了我们这个区域的名称附加后缀是什么 
  3. #在区域文件中,只要想引用当前区域的名字,我们可以用@来表示,当然你也可以直接写出来 
  4. #在区域文件中,第一条资源记录必须是SOA类型。 
  5. @           IN          SOA         localhost.          admin.localhost. ( 
  6.                                         2012102101 
  7.                                         1H 
  8.                                         5M 
  9.                                         7D 
  10.                                         1D ) 
  11. #第二条记录通常都是NS记录,即当前域的域名服务器 
  12. @           IN          NS          localhost.   
  13. localhost.  IN          A           127.0.0.1 
  14. #保存 
vim 127.0.0.zone #建立反向区域数据文件
 
 
  
  1. @           IN          SOA         localhost.          admin.localhost. ( 
  2.                                         2012102101 
  3.                                         1H 
  4.                                         5M 
  5.                                         7D 
  6.                                         1D ) 
  7.             IN          NS          localhost. 
  8. 1           IN          PTR         localhost. 
  9. #保存退出 
修改两个文件的权限
chmod 640 127.0.0.zone localhost.zone
chown :named 127.0.0.zone localhost.zone
检查配置文件语法和区域文件有无异常:
1.检查配置文件的语法: named-checconf
2.检查区域文件:named-checkzone 要先指定区域,再指定区域文件是什么。
named-checkzone "localhost" /var/named/localhost.zone
named-checkzone "0.0.127.in-addr-arpa" /var/named/127.0.0.zone
3.当上述都确保没有问题后,重启服务
service named start

4.启动后观察端口是否启用:netstat -tunlp | grep 53 

注释:我在重启服务后出现了这样的情况:

其解决方案是:

这个原理我还不太清楚,稍后我会补加上来。