DNS服务器搭建

DNS全名为Domain Name Server (域名系统),其目的就是为了提供域名和IP地址的解析服务
BIND服务相关软件包
DNS服务器类型:
缓存域名服务器:提供域名解析的缓存
主域名服务器:特定域所有信息的权威性信息源,对某个指定域,主域名服务器是唯一存在的,主域名服务器中保存了指定域的区域文件。
域名转发服务器:把所有域名请求转给一台dns服务器。
从域名服务器:
不进行特定域信息(区域文件)的权威设置,而是从该域的主域名服务器中获取相应的文件并进行保存。
bind-libs:提供实现域名解析功能的必备的库文件,系统默认安装
bind-utils:提供对DNS服务器的测试工具程序,系统默认安装
bind:BIND服务器软件包,默认没有被安装到系统中
bind-chroot:为了更安全设置,,使bind可以在一个chroot的模式下运行.也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已.这样做的目的是为了提高安全性.因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升, 进入到系统的其他目录中.用于建立chroot目录及相关子目录
我们查看一下系统中的安装情况,没有的给装上:
[root@redhat3 ~]# rpm -qa|grep bind #bind是需要自行安装的,挂上光盘安装即可,其他的都是已经默认安装
bind-libs-9.3.6-4.P1.el5
bind-9.3.6-4.P1.el5
bind-utils-9.3.6-4.P1.el5
ypbind-1.19-12.el5
[root@redhat3 ~]# ll /etc|grep "named" #看到没,已经没有named.conf了,已经被named.caching-nameserver.conf和named.rfc1912.zones取代了,当然,这两个文件我们也不用,我们用chroot环境下的
-rw-r-----  1 root named   1230 2009-07-30 named.caching-nameserver.conf
-rw-r-----  1 root named    955 2009-07-30 named.rfc1912.zones
-rw-r-----  1 root named    113 07-23 12:37 rndc.key
[root@redhat3 ~]#
我们现在安装bind-chroot包
[root@redhat3 ~]# rpm -ivh /mnt/cdrom/Server/bind-chroot-9.3.6-4.P1.el5.i386.rpm
warning: /mnt/cdrom/Server/bind-chroot-9.3.6-4.P1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:bind-chroot            ########################################### [100%]
[root@redhat3 etc]# ll
总计 16
-rw-r--r-- 1 root root   405 07-22 10:36 localtime
-rw-r----- 1 root named 1230 2009-07-30 named.caching-nameserver.conf
-rw-r----- 1 root named  955 2009-07-30 named.rfc1912.zones
-rw-r----- 1 root named  113 07-23 12:37 rndc.key
[root@redhat3 etc]# pwd
/var/named/chroot/etc
所有的bind配置文件都在/var/named/chroot/etc下了,我们开始配置他:
[root@redhat3 etc]# vi named.caching-nameserver.conf
options {
        listen-on port 53 { any; };#此处修改为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"; #把一些解析的统计信息放在里面
        // Those options should be used carefully because they disable port
        // randomization
          query-source    port 53;
           query-source-v6 port 53;
        allow-query     { any; };#此处修改为any
        allow-query-cache { any; };#此处修改为any
     forwarders      { 8.8.8.8; }; //此行默认没有,如果内网使用此dns 服务器可以设置dns转发,这里一定是一个有效的 dns 服务器地址,则添加这两行 。
        forward only;
};
logging {

        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

view localhost_resolver {
        match-clients      { any; };#此处修改为any
        match-destinations { any; };#此处修改为any
        recursion yes;
        include "/etc/named.rfc1912.zones";
};
完毕,保存。
我们现在修改文件:named.rfc1912.zones
[root@redhat3 etc]# vi named.rfc1912.zones
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};
//添加如下内容:
zone "staid.edu" IN { // staid.edu 我实验用的区域,正向解析区域  
        type master;
        file "staid.edu.zone";
        allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.0.rev";
        allow-update { none; };
};
完毕,保存
然后我们进入此目录:/var/named/chroot/var/named,执行如下操作:
注意:这两个配置文件名一定要跟named.rfc1912.zones 你定义的名称相同
[root@redhat3 named]# cp -p localdomain.zone  staid.edu.zone
[root@redhat3 named]# cp -p named.local 0.168.192.zone
下面主要是编辑这两个文件了。
# vim    0.168.192.zone
$TTL    86400
@       IN      SOA     localhost. root.localhost. (
1997022700 ; Serial
28800      ; Refresh
14400      ; Retry
3600000    ; Expire
86400 )    ; Minimum
     IN      NS      staid.edu.
3       IN      PTR     dns.staid.edu.   //添加反向解析记录
2       IN      PTR     www.staid.edu.   //添加反向解析记录
2       IN      PTR     mail.staid.edu.  //添加反向解析记录
                                                  //2 是指的 dns 服务器IP:192.168.0.2 的最后地址区域
完毕,保存,我们修改
[root@redhat3 named]# vi staid.edu.zone
$TTL    86400
@        IN SOA    localhost root (
                42        ; serial (d. adams)
                3H        ; refresh
                15M        ; retry
                1W        ; expiry
                1D )        ; minimum
    IN NS        staid.edu.     //添加域名服务器记录-NS记录(设置当前域的DNS服务器名称)
    IN MX  5     mail    //添加邮件交换记录-MX记录(设置mail.staid.edu主机作为邮件服务器)
dns    IN A        192.168.0.3                //添加正向解析
www    IN A        192.168.0.2               //添加正向解析
mail   IN A        192.168.0.2                //添加正向解析
blog   CNAME       www                     //添加别名
完毕,保存,下面我们开始测试正确性
[root@redhat3 named]# named-checkzone       staid.edu          /var/named/chroot/var/named/staid.edu.zone
zone staid.edu/IN: loaded serial 42
OK
[root@redhat3 named]# service named restart
停止 named:                                               [确定]
启动 named:                                               [确定]
[root@redhat3 named]#
我们可以在一个客户端机器上,把dns修改为192.168.0.2 然后访问一下sohu,没问题通过了。就此主DNS服务器设置告一段落