几个重点:1、常识  2、安装  3、主配置文件named.conf参数详解  4、正向\反向解析文件详解  5、master\slave服务器实例  6、区域授权实例。

DNS 域名解析,  在LINUX常用的DNS软件为BIND

一、DNS常识
1、DNS查询:分为递归查询和迭代查询两种
  (1) 递归查询: 即客户端向本地DNS服务器请求查询域名,本地DNS服务器收到查询任务后如自身无法回答则向其他服务器查询,直到查到结果后返回结果给客户端。期间DNS服务器可能要查询很多其他DNS服务器。
(2)迭代查询:即客户端向本地服务器请求查询域名,本地DNS服务器无法回答,则给客户端返回另一个能查询域名的服务器地址,客户端再向另一服务器查询,期间可能客户端需查询多个DNS服务器,最终查到结果。

2、DNS服务器分类:

DNS服务器分为:
(1)master(主DNS服务器):拥有区域数据的文件,并对整个区域数据进行管理。
(2)slave(从服务器或叫辅助服务器):拥有主DNS服力器的区域文件的副 本,辅助主DNS服务器对客户端进行解析,当主DNS服务器坏了后,可以完全接替主服务器的工作。
(3)forward:将任何查询请求都转发给其他服务器。起到一个代理的作用。
(4)cache:缓存服务器。
(4)hint:根DNS internet服务器集。


二、bind的安装及运行目录

1、安装

一般安系统时都会选择安装,查看是否安装: rpm -qa |grep bind
如果没有安装下载如下几个包安装:(下面是我在rh5中运行 rpm -qa |grep bind 后显示的结果)
bind-libs-9.3.6-4.P1.el5  //提供实现域名解析功能必备的库文件
bind-chroot-9.3.6-4.P1.el5 //将bind主程序关在家里面(鸟哥是这样描述的,不懂)
bind-9.3.6-4.P1.el5        //必须安装的主文件,后面的是版本号
ypbind-1.19-12.el5
bind-utils-9.3.6-4.P1.el5 //客户端工具,用于客户端搜索主机名的相关指令,必须装
caching-nameserver-9.3.3-7.e15.i386.rpm    //配置缓存域名服务器的话就需要安装。安装后一些模板文件和named.ca就会有,会方便很多。建议安装.

2、运行目录
 
我们通过查看/etc/sysconfig/named中的内容,可以看到系统将named的目录指向哪里。 最后一行为ROOTDIR=/var/named/chroot ,即指向了/var/named/chroot里面。所以我们的配置文件和数据库文件的存放点为:
/var/named/chroot/etc/named.conf    //配置文件
/var/named/chroot/var/named        //数据库文件存放位置
/var/named/chroot/run/named        //named程序默认将pid文件放置此目录下
而我们自已把配置文件和数据库文件存放到了以下地点:
/etc/sysconfig/named   由该文件控制是否动chroot及其他参数
/etc/named.conf  //配置文件
/var/named/      //数据库文件(如正向、反向、根文件)存放位置
/var/run/named:   //named程序默认将pid文件放置此目录下
一般系统会为我们默认做链接,把系统默认的存放点都做了链接到我们自已的存放点。如果系统没有做,我们就手工做链接。


三、配置主配置文件  named.conf

注意:我现在装的rh5版本,默认没有named.conf这个文件,需手工建 立。
touch  /etc/named.conf     //建立主配置文件
vi /etc/named.conf    //编辑配置文件,并后工添加配置文件,最好是找到范例文件复制过来,然后在里面更改。
1、全局配置
options {                                                          
directory "/var/named";  //指定配置文件所在目录,必须配置此科
dump-file  "/var/named/data/cache_dump.db;; //保存DNS服务器搜索到的对应IP地址的高速缓存
statistics_file  "/var/named/data/named_stats.txt;  //dns的一些统计数据列出时就写入这个设置指定的文件中。即搜集统计数据。
pid-file "/var/run/named/named.pid ; //用于记录named程序的PID文件,可在NAMED启动、关闭时提供正确的PID
allow_query (any;); //是否允许查询,或允许哪 些客户端查询,可以把any换上网段 地址,以设置允许查询的客户端)
allow_transfer(none;); //是否允许MASTER 里的信息传到SLAVE服务器, 只有在同时拥有MASTER服务器和SLAVE服务器时才设置此项。none为不允许
forwarders{ 192.168.3.11;192.168.3.44;} ;//设置向上查找的哪个“合法”的DNS。地址之间要用; 分隔。 (我的理解是此处定义的如同windows里定义的转发一样,当本地DNS服力器解析不了时,转发到你指定的一个DNS服务器上去解析)。当不配置此项时,本机无法解析的都会用name.ca中配置的根服务器上查询,但如果配置了此项,本机查找不到的,就丢给此项中配置的DNS服务器处理。
forward only //让DNS服务器只作为转发服务器,自身不作查询。
motify //当主服务器变更时,向从服务器发送信息。 有两个选项,yes 和no
};   //以上是全局配置中常用到的选项,根据实际情况配置。
2、根域服务器的指向  ,最好是找一个文件复制过来即可,此文件一般不用更改。
可从此处下载更新 ftp://ftp.rs.internic.net/domain/ 
zone "."IN {

  type hint;
  file" named.ca";

};
3、 定义正向解析文件,此处以域  29zjt.com域为例。
  zone "29zjt.com" IN {
  type master;     //定义服务器类型
  file "29zjt.com";  //指定正向解析文件名。
};
4、定义反向解析文件
zone "9.168.192.in-addr.arpa" {

  type master;  //服务器类型
  file "named.192.168.9" ;   //反向解析文件名

};



 四、配置正向解析文件及反向解析文件

touch /var/named/29zjt.com
touch /var/named.192.168.9

1、正向解析文件的编辑
vi /var/named/29zjt.com


$ORIGIN 29zjt.com.
$TTL 86400   //外DNS服务器请求本DNS服务器的查询结果,在外DNS服务器上的缓存时间,以秒为单位


@  IN SOA WWW.29zjt.com. admin.29zjt.com. (   //格式为:
【主机名或域名】ttl] [calss] [type] [orgin] [mail] 
主机名或域名:一般 用@代替。每个区域都有自已的SOA记录,此处的为指定的域名。用@表示当前的源,也可以手工指定域名。
ttl:通常省略
class:类别,SOA记录的类别对internet乖哦说缺省为IN
type:类型,SOA记录的类型就是SOA,指明哪个DNS服务器对这个区域有授权。
origin:域区文件资 源,这个域区文件源就是这个域主DNS服务器的主机名,注意这里要求是完整的主机名,后面一定要加上“."。上例中:www.29zjt.com.  而不是www.29zjt.com  如果没有加后面的点,结果将是:www.29zjt.com.29zjt.com
mail:一般指管理员的邮箱。但和一般 的邮箱不同,用"."代替了"@",尾部也 要加上“."


       2009121001  //作为版本控制,当域区文件修改时,序号就增加,辅助服务器对比发现与自已的不同后,就会做出更新,与主服力器同步
       28800  //辅助服务器与主服务器进行更新的等待时间。间隔多久与主服务器进行更新,单位为秒。
      14400    //重试间隔。当辅助服务器请求与主服务器更新失败后,再间隔多久重试传递
       720000  //到期时间。当辅助服务器与主服务器之间刷新失败后,辅助服务器还提供多久的授 权回答。因为当与主服务器失去联系一定时间后,(这个时间就是此处定义的时间),辅助服务器会把本地数据当作不可靠的数据,将停止提供查询。
如果主服务器恢复正常,则辅助服务器重新开始计时。
       86400 )  //最小TTL,即最小有效时间,表明客户端得到的回答在多长时间内有效。如果TTL时间长,客户端缓存保存时间长,客户端在收到查询结果时开始计时(TTL)时间内有相同的查询周日不再查询服输务器,直接查自已的缓存。如果TTL时间短,则缓存更新的频率快

@       IN   NS   www.29zjt.com.  //ns记录
www    IN   A     192.168.9.4        //A记录
ftp       IN   CName   www.29zjt.com.    //别名类型
mail    IN    MX  10   192.168.9.100  //邮件交换器
mail2  IN     MX  20   192.168.9.101  //邮件交换器





2、反向解析文件的编辑

vi /var/named/named.192.168.9

$TTL 86400

@ IN SOA  9.168.192.in-addr.arpa admin.29zjt.com. (

       2009121001
       1H
       15M
       720000
       86400 )

@   IN   NS    www.29zjt.com.
4   IN   PTR    WWW.29zjt.com.   //反向指针类型


下面来详解上面所遇到的记录类型:

     NS记录: 指出该区域的名字服务器的名字。指定一个区域的权威DNS服务器。如果有一个以上的域名服务器,可以在NS记录中全部列出来。这些记录一般在SOA后面。格式为:   【域名】  【 IN 】【 NS】  【 DNS服务器电脑名】    ,域名可以用@代替或省略。
A记录:(地址记录) A类资 源记录是记录域名和IP地址的记录。通常为主机名。 任何没用“."结尾的主机名都会自动在后面加上域名。   一定要给NS记录指定一条A记录。


MX记录:,指定某个邮件服务器。以接受主机传送邮件。  这两条记录中的10和20代表优先级,级别越小,优先级越高。如果优先级高的发不出去,再以低级别的发送。

别名: cname.   为主机建别名。可把一台主机赋予多个别名

指针记录:PTR   用于执行从IP到主机的逆向映射,保存逆向映射的IP地址。


五、MASTER/SLAVE服务器配置实例
如果安装了
bind-chroot-9.3.4-10.P1.el5这个软件,
就得把named.conf文件建在
/var/named/chroot/etc/目录下。
正向和反向解析文件就得在:/var/named/chroot/var/named   目录下。如果想在默认目录下的就话,就得手工链接。
ln  -s /var/named/chroot/etc/named.conf   /etc/named.conf   //把主配置文件做软链接到/etc/目录下。

(一)master服务器配置

1、主配置文件配置
 
options {                                                          
directory "/var/named";

pid-file "/var/run/named/named.pid";
};
 
zone "."IN {

  type hint;
  file "named.ca";   //这个file后面要空格后,再加引号,不然会启动不了。

};
  zone "29zjt.com" IN {
  type master;    
  file "29zjt.com"; 
 allow-transfer{192.168.9.5:};   //只允许更新到192.168.9.5这台辅助域名服务器
};

zone "9.168.192.in-addr.arpa" {

  type master; 
  file "named.192.168.9" ; 
allow-transfer{192.168.9.5:};
};



 2、正向解析文件及向向解析文件的配置


touch /var/named/29zjt.com
touch /var/named.192.168.9

vi /var/named/29zjt.com


$ORIGIN 29zjt.com.
$TTL 86400 

@  IN SOA WWW.29zjt.com. admin.29zjt.com. (  

       2009121001 
       28800 
      14400
      720000
        86400 ) 
@       IN   NS    www.29zjt.com.
@        IN  NS    dns2.29zjt.com.
 www    IN   A     192.168.9.4 
 dns2     IN    A    192.168.9.5
ftp       IN   CName   www.29zjt.com.   
mail    IN    MX  10   192.168.9.100 
mail2  IN     MX  20   192.168.9.101 




2
、反向解析文件的编辑

vi /var/named/named.192.168.9

$TTL 86400

@ IN SOA  9.168.192.in-addr.arpa admin.29zjt.com. (

       2009121001
       1H
       15M
       720000
       86400 )

@   IN   NS    www.29zjt.com.
@    IN  NS    dns2.29zjt.com
4   IN   PTR    WWW.29zjt.com.  
5    IN  PTR       DNS2.29zjt.com.
 

(二)SLVAE辅助服务器的配置

1、主配置文件配置

vi /etc/named.conf
options {                                                          
directory "/var/named"; 
};
 
zone "."IN {

  type hint;
  file" named.ca";

};
  zone "29zjt.com" IN {
  type slave;    
  file "slave_29zjt.com"; 
 masters{192.168.9.4;};   //主服务器地址为192.168.9.4
};

zone "9.168.192.in-addr.arpa" {

  type master; 
  file "slave_named.192.168.9" ; 
 masters{192.168.9.4;};
};


注意: 此 时SLAVE服务器的  /var/named目录下面不能有  上述的slave_29ztj.com 正向解析文件和 slave_named.192.168.9反向解析文件。因为是辅助服务器,这两个文件会自动从主服务器更新过来。所以此处就不用再创建 这两个文件了。就此服务器建好。


六、区域授权的配置

一个DNS服务器不可能接受所有客户端的查询,就需要把子网委派给另一个DNS服务器管理。
如我想授权子网tk3y.29zjt.com 给一台 manager的电脑管理。则在上述的正向解析和反向解析文件中加入一条NS和一条A记录即可。
上层主机的正向及反向解析配置:

1、正向解析配置

$TTL 86400 

@  IN SOA WWW.29zjt.com. admin.29zjt.com. (  

       2009121001 
       28800 
      14400
      720000
        86400 ) 
@       IN   NS    www.29zjt.com.
@        IN  NS    dns2.29zjt.com.
tk3y.29zjt.com.        IN     NS   manager.tk3y.29zjt.com.
manager   IN  A   192.168.9.10
 www    IN   A     192.168.9.4 
 dns2     IN    A    192.168.9.5
ftp       IN   CName   www.29zjt.com.   
mail    IN    MX  10   192.168.9.100 
mail2  IN     MX  20   192.168.9.101

$TTL 86400

@ IN SOA  9.168.192.in-addr.arpa admin.29zjt.com. (

       2009121001
       1H
       15M
       720000
       86400 )

@   IN   NS    www.29zjt.com.
@    IN  NS    dns2.29zjt.com
tk3y.29zjt.com.        IN     NS   manager.tk3y.29zjt.com.
10  IN  PTR    manager.tk3y.29zjt.com.
4   IN   PTR    WWW.29zjt.com.  
5    IN  PTR       DNS2.29zjt.com.
 

至此完毕。至于不同网段的PTR授权这里不作解释。



高级别的配置,另开一篇作笔记,这里不记了。