RHEL5 DNS服务器配置

 
试验环境
1.装有RHEL5系统计算机一台;DNS master server:10.10.10.5
2.windows2k3;DNS slave  server:10.10.10.101
3.server可与互联网通信;
 
目录说明
/var/named/chroot/etc                            ;存放named.conf

/var/named/chroot/var/named                ;存放zone&arpa文件
/var/log/messages                                  ; 查看配置过程中出错信息


 

首先,应该检查自己是否已经安装了bind
[root@net ~]# rpm -qa bind*
bind-9.3.3-10.el5
bind-libbind-devel-9.3.3-10.el5bsp;  &nbs
bind-sdb-9.3.3-10.el5
bind-devel-9.3.3-10.el5
caching-nameserver-9.3.3-7.el5.i386.rpm
 

bind-chroot包放最后一个安装bind-chroot-9.3.3-10.el5      
安装chroot包时要将/usr/share/doc/bind-9.3.3/sample/etc/named.conf范本文件复制为/etc/named.conf,否则会报错
Locating /var/named/chroot//etc/named.conf failed: [失败]
使用了chroot后,虚拟根目录为/var/named/chroot,则namd.conf实际位置为/var/named/chroot/etc,而工作目录/var/named实际路径为/var/named/chroot/var/named.tc  

停用chroot则 在/etc/sysconfig/named 中的 ROOTDIR 这一行给注释掉


 
实验步骤:
 
第一步:安装dns服务器包;
 
[root@net ~]#mount /dev/cdrom    /mnt
[root@net ~]#cd /mnt/Server                              //这是DVD的文件夹,以上的包都在这里找

 
 
第二步:建立主配置文件,并修改相关选项;

[root@net ~]#cd /var/named/chroot/etc
注意:安装caching-nameserver-9.3.3-7.el5.i386.rpm 之后会自动生成一个named.caching-nameserver.conf 这个文件,首先我们把它改个名字, 改成named.conf,并备份一下
[root@net etc]#cp -p named.caching-nameserver.conf named.caching-nameserver.conf.back
[root@net etc]#cp -p named.caching-nameserver.conf named.conf          //先用这个来编辑
[root@net etc]#vi named.conf    

acl "list1" {
                   10.10.10.0/24;                         //作示范,写一个就行  针对网段
                   10.10.10.203/24;                     //针对一个IP
                };

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; };         //允许查询哪些主机查询;
        allow-forward "list1";           //允许list1中的dns server复制本机的记录文件
};

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@net ~]# vi /var/named/chroot/etc/named.rfc1912.zones
在文件末尾添加一下内容,并保存推出;
 
zone "test.net" IN {
         type master;
         file "test.zone";      //linux给出的范例就是.zone
};
 
zone "1.10.10.10.in-addr.arpa" IN {
         type master;
         file "rtest.local";
};
###########################
#如果在linux上配slave的话,如下
zone "test.net" IN {
         type slave;
        master { 10.10.10.203; };   //假设10.10.10.203是master
         file "test.zone";      //这里面可以写路径, 不过注意这个默认的虚拟目录是在/var/named/chroot/var/named 中的
};
 
zone "10.10.10.in-addr.arpa" IN {
         type slave;
        master { 10.10.10.203; };
         file "abc\rtest.local";   //将复制来的文件放在/var/named/chroot/var/named/abc里
};
###########################

 
 
第四步:建立对应的区域文件;
 
[root@net ~]#cd /var/named/chroot/var/named
[root@net named]#vi test.zone             //建立正向解析区域文件;
 
$TTL     86400
test.net.              IN SOA  dns.test.net.       root@test.net. (           //注意域名后面有
                                         42               ; serial (d. adams)
                                         3H               ; refresh
                                         15M              ; retry
                                         1W               ; expiry
                                         1D )             ; minimum

                 IN NS           dns.test.net.
                 IN MX  10        mail.test.net.
dns               IN A             10.10.10.5
www              IN A             10.10.10.5
2k3              IN A            10.10.10.203
ftp              IN CNAME        www.test.net.
#$TTL  下面可用@ 这@代表域名的意思,在配置文件里所有的域名后都别忘加" . "点也很重要
###############################
#如果有子域,只要加一个A和NS记录就行
sub.test.net.         IN NS    dns.sub.test.net.      //指出子域的dns
dns.sub.test.net.  IN  A      10.10.10.55            //指出子域的dns地址
###############################
 

[root@huyb named]#vi rtest.local            //建立反向解析区域文件;
$TTL     86400
@        IN       SOA      dns.test.net. root.test.net.  (
                                       1997022700 ; Serial
                                       28800       ; Refresh
                                       14400       ; Retry
                                       3600000     ; Expire
                                       86400 )     ; Minimum
5           IN       NS      dns.test.net.
5          IN      PTR     dns.test.net.
5           IN       PTR     www.test.net.
203      IN      PTR     2k3.test.net.           

第五步:
把zone配置文件的owner改了,这个文件要是权限过高,那slave就没法去访问和复制

 
[root@net named]#chown named:named test.zone
[root@net named]#^test.zone^rtest.local

 
第六步: 检查语法
[root@net named]#named-checkconf -t /var/named/chroot   #这命令默认是去找/etc/named/named.conf
#因为安上了chroot这个包,虚拟出来了另一个工作路径/var/named/chroot 所以要把它加上      
[root@net named]#                                     //回车没提示那就是OK了
还有一个命令是检查zone的文件语法      命令 域名 文件位置
[root@net named]#named-checkzone test.net /var/named/chroot/var/named/test.zone
 

第七步:
把iptables里写入规则
[root@net named]#iptables -A FORWARD -i eth0 -p tcp --dorp 53 -j ACCEPT
[root@net named]#^tcp^udp
[root@net named]#service iptables save           //保存
关闭selinux
[root@net named]#/usr/sbin/setenforce 0          //立刻关闭 SELINUX    1为启用
[root@net named]#echo "/usr/sbin/setenforce 0" >> /etc/rc.local     //添到系统自动加载文件中
或者
[root@net named]#vi /etc/sysconfig/selinux
把SELINUX=""改成disabled  再重启

第八步:
[root@net named]#service named start   //启动服务
host
dig
nslookup
用这三条指令来测试