Linux 下DNS的配置

Linux 下DNS的配置
连续摸了好几天的Bind。当然也有自己不够专注的因素,使得进度一拖再拖。
期间也在Bind这个程序中遇到了种种问题,包括配置文件和一些系统权限问题,总是使Named跑不起来或者即使跑起来也没有效用(不能解析)。
 
为了多多得了解Linux这个系统的服务,光是做些简单的操作是远远不够的,必须要通过熟练和频繁的操作才能感受它的“习惯”和“特点”,才能熟悉它,适应它。所以从简单的服务到复杂的,我都一路走来。会用Linux架几个站不是我的目的,而是通过架站和服务的手段,对Linux有感性和深刻的认识。从陌生概念的理解到各种调试运行的操作和原理,一路积累,一路理解,一路吃透,这才叫积累。为了DNS服务器,自己甚至放慢了学习Bash的脚步。
 
我知道自己必需要走过这个坎。遇到了阻力才是幸运的事情,太顺利的话等于没有积累和收获。几天下来一直遇到各种各样的失败,今天中午被王神说了句“契而不舍”,觉得自己被王神这样评价很荣幸,动力就这样来了。
 
与昨天不同,今天大刀阔斧地对Bind的一系列配置文件进行了手动改造(CentOS5自带的named.conf模版比较变态,里面全都是高级设定,而且都不注释的- -)。总之先要解决最基本的运行问题,然后再往上推复杂的配置。
 
 
主配置文件
==============================================================================
首先,先要讲Bind程序的主配置文件 /etc/named.conf  。(安装的部分已经在上一集里讲过了,这里就不再敷述咯)
先贴一下我系统当中的named.conf文件内容,然后分析下,其中都是些基本而必要的配置。交代一下,/etc/named.conf文件内的每条句末都要用“;”分号来结尾。
---------------------------------------------------------------------------
options    (Option段内的都是Bind程序系统的全局配置)
{
 query-source    port 53;    (指定了DNS工作端口是53)
 query-source-v6 port 53;    (这里也是指定DNS的工作端口,不过是For IPv6的)
 directory "/var/named";    (这里是定义DNS服务器区域文件的路径。由/etc/named.conf先定义区域,每一个区域对应一个区域文件,区域内的记录全写在相关区域的区域文件内。并且在named.conf中也指明了区域文件的存放路径,这里就是交代了默认的区域文件存放路径/var/named。所以,之后在区域中指定的区域文件或者其他的相关文件,全是在这个路径下的。)
 dump-file   "data/cache_dump.db";    (指定了DNS的Dump文件名,存放在之前定义的路径下了)
 statistics-file  "data/named_stats.txt";
 memstatistics-file  "data/named_mem_stats.txt";   (这2个都不用改,使用默认的)
};
 
 
logging    (Loggin段内的一般不用修改)  
{
  channel default_debug {
          file "data/named.run";
          severity dynamic;
                        }; 
};
 
 
(以下就是区域段Zone段了,用来记录各种域。并且每个域要用一个Zone段来写,而每个Zone段内也要指明区域文件。只要指定区域文件名就可以了,因为Bind程序会根据之前在Option段里设置的Named路径,即默认下/var/named这个路径去寻找。因此,配置文件中指明的,和实际在Named路径下的区域文件名要匹配地起来。)
zone "center.net" {    (第一个Zone段我写我自己设定的一个 center.net 的域)
  type master;    (由于这个服务器是主管center.net的域的,因此这里填写Master类型。如果本机是辅助DNS服务器,而Center这个域又是从主DNS服务器上复制过来的话,那么这里要写Slave型)
  file "center.net";    (域center.net的区域文件名字为center.net,并且保存的路径就是之前定义的/var/named下)
 };
 
zone "." {    (这个是根区域的Zone段,里面记录了世界互联网上的根域名服务器地址,在使用段时间后需要更新的哟)
     type hint;    (由于根服务器是权威的,根域也不是本DNS服务器自己主管的,所以类型用Hint)
     file "named.ca";  (指定了根区域文件)
  };
 
zone "localhost" {  (本机段区域)
     type master; 
     file "named.localhost";
  };
  
zone "0.0.127.in-addr.arpa" {  (本地的反向解析区域,区域名的格式必须为"三.二.一.in-addr.arpa")
     type master;    (本地反向解析类型是Master)
     file "named.127.0.0";   (指定本地反向解析区域文件)
  };
 
zone "0.168.192.in-addr.arpa" {    (指定区域的反向解析区域,这里是为center.net地址而做的反向区域。center.net的主机地址设定为192.168.0.201。)
     type master;    (DNS服务器类型是Master)
     file "named.192.168.0";  (指定该反向解析区域的文件名)
  };
 
 
-----------------------------------------------------------------------------------------------------------
到这里,简单的/etc/named.conf配置项目就完成了。里面有一个我自己建立的区域,即"center.net"这个区域。
再而,也有针对这个区域的反向解析区域"0.168.192.in-addr.arpa"这个区域。
此外的话还必须要有3个默认区域:即根域".",本地区域"localhost"和本地反向区域"0.0.127.in-addr.arpa"区域。
规律是:正解析区域和反解析区域两两对应(这里一共2对),另外附加个根区域。所以这此一共在/etc/named.conf中会出现5个Zone段。
 
 
区域配置文件
=================================================================
之前在DNS主配置文件当中申明了若干个区域,同时,也指定了这些区域的区域文件。这里Named的路径使用默认的 /var/named ,因此在做完主配置文件之后就要在/var/named这个目录下写主配置文件中对应的区域文件。
这里要做的配置文件分别是:
center.net
named.ca
named.localhost
named.127.0.0
named.192.168.0   这5个区域文件。
 
首先,我们来做 center.net 这个区域的文件
------------------------------------------------------------------------------------------------------
$TTL 86400     (这个是默认的TTL时间)
(第一段是SOA记录,指明了完整的域名,管理员的信箱,以及主辅DNS服务器的同步时间设定,单位秒)
@                         IN          SOA        center.net.         kanecruiseisgod.hotmail.com  (
(@代表本机            SOA表示授权起始     这里的center.net.要连最后的.号也跟上     接着是管理员信箱,@号用.号代替了    后面的那个左括号一定要写在SOA的一行里)
                                      1997022700 ; Serial  (序列号,辅DNS服务器根据序列版本比较判断是否要更新数据)
                                      28800      ; Refresh   (刷新周期)
                                      14400      ; Retry    (失败重试周期)
                                      3600000    ; Expire    (超时时间)
                                      86400 )    ; Minimum   (最小TTL)
 
(第二段里记录这个区域里的特殊角色记录,比如NS表示该域内的域名服务器,MX表示是该域内的邮件服务器,MX之后的数字表示优先级,越小的数字优先级越高。@仍然代表本机,如果不是本机的话,前面不要加@符号而是写上改主机域名的主机头。然后在行末写上“sample.center.net.”这样完整的域名,记得“.”号也要跟在后面)
@                       IN          NS          sample.center.net.
@                       IN          MX  0      sample.center.net.
 
(第三段里的记录就是A记录了,也就是域名对应IP地址。本机“localhost.”后面必须要加“.”号而且地址为127.0.0.1的回送地址,这条必须要写。而其他域名如“sample.center.net.”这个主机虽然也是本机,但是只要是不同的域名并且要被解析出来的话就必需要写,而且只要写主机头就可以了,这里只写了“sample”,但是系统在工作的时候会自动把域名补全,即“sample.center.net.”)
localhost.            IN          A            127.0.0.1
sample               IN          A            192.168.0.201
------------------------------------------------------------------------------------------------
 
第二个是 named.ca 这个根区文件,不用特别编辑,在安装好Bind包之后就默认有。可以更新,这里给看下里面的一些主要的根域服务器记录。
-------------------------------------------------------------------------------------------------
;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  <file>"
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC
;       under anonymous FTP as
;           file                /domain/named.cache
;           on server          
FTP.INTERNIC.NET
;       -OR-                    RS.INTERNIC.NET
;
;       last update:    Jan 29, 2004
;       related version of root zone:   2004012900
;
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
;
; formerly NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
;
; formerly C.PSI.NET
;
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
;
; formerly TERP.UMD.EDU
;
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
;
; formerly NS.NASA.GOV
;
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
;
; formerly NS.ISC.ORG
;
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
;
; formerly NIC.NORDU.NET
;
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
;
; operated by VeriSign, Inc.
;
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
;
; operated by RIPE NCC
;
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
;
; operated by ICANN
;
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
;
; operated by WIDE
;
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
; End of File
-----------------------------------------------------------------------------------------------
 
第三,本地区域文件 named.localhost
--------------------------------------------------------------------------------------
$TTL 86400
(第一段也是SOA记录)
@                   IN               SOA                 localhost.                root.localhost.  (
(@代表本机               SOA代表启示授权      这里“localhost.”要包含点       后面的是管理员信箱 root@localhost .)
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
 
(第二段记录本地的特殊身份主机,本机恰巧是DNS服务器这里有一条NS本机记录,后面的“localhost.”也要包含点)
@                   IN              NS             localhost.
 
(第三段记录了A记录,将第二段里的域名对应IP地址作为A记录,地址为127.0.0.1)
localhost.         IN            A                127.0.0.1
----------------------------------------------------------------------------------------
 
第四,center.net的反解析区域文件 named.192.168.0
---------------------------------------------------------------------------------------
$TTL 86400
(第一段还是SOA记录)
@                    IN                   SOA                  localhost. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
 
(第二段是特殊身份主机记录)
@                    IN             NS      localhost.
 
(第三段是反解析指针PTR记录,由于IP地址的“三.二.一”已经之前申明了,那么这里只要写第“四”位的数字就可以了,然后条目末尾匹配要解析的域名,而且必须是带点的完整域名)
localhost.         IN             PTR     localhost.
201                 IN             PTR     sample.center.net.
(这里201代表了192.168.0.201的地址,然后PTR指向的是“sample.center.net.”完全的FQDN名称)
-----------------------------------------------------------------------------------------------------------------------------
 
第五,本地反向解析区域文件
-----------------------------------------------------------------------------------------------
$TTL 86400
@       IN      SOA     localhost. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
@                  IN      NS      localhost.
1                  IN      PTR     localhost.
(这里的1代表了127.0.0.1)
-----------------------------------------------------------------------------------
 
 
运行
===================================================
运行中遇到了不少的问题
 
问题1
其中一次就是主配置文件
[root@sample named]# service named start
Starting named:
Error in named configuration:
/etc/named.conf:29: missing ';' before '}'
(提示是说,在/etc/named.conf文件的第29行末没有用分号“;”结尾)
                                                           [FAILED]
问题2
在更正了分号问题后,再启动服务,仍然失败
[root@sample named]# service named start
Starting named:                                            [FAILED]
查看日志
Jul 17 09:36:31 sample named[2007]: could not configure root hints from 'name.ca': file not found
Jul 17 09:36:31 sample named[2007]: loading configuration: file not found
(提示是说,/etc/named.conf里指定的根区域文件“name.ca”没有在路径/var/named下找到。明显是我在/etc/named.conf里将“named.ca”误打成“name.ca”,而系统到/var/named下去找name.ca又找不到这个文件而造成的启动失败。)
问题3
将主配置文件中的“named.ca”改正确后,再启动,仍然失败。
[root@sample named]# service named start
Starting named:                                            [FAILED]
查看日志
Jul 17 09:37:13 sample named[2041]: loading configuration from '/etc/named.conf'
Jul 17 09:37:13 sample named[2041]: listening on IPv4 interface lo, 127.0.0.1#53
Jul 17 09:37:13 sample named[2041]: listening on IPv4 interface eth0, 192.168.0.201#53
Jul 17 09:37:13 sample named[2041]: could not configure root hints from 'named.ca': permission denied
Jul 17 09:37:13 sample named[2041]: loading configuration: permission denied
(提示是说已经完成在网络接口监听,但是在读取诸如named.ca这些区域配置文件的时候,没有权限)
查看/var/named下区域文件的权限情况
[root@sample named]# ls -l
-rw-r----- 1 root  root   544 Jul 17 09:35 center.net
drwxr-x--- 5 root  named 4096 Jul 10 12:51 chroot
drwxrwx--- 2 named named 4096 Jul 10 12:56 data
-rw-r----- 1 root  root   450 Jul 17 09:34 named.127.0.0
-rw-r----- 1 root  root   503 Jul 17 09:33 named.192.168.0
-rw-r----- 1 root  root  2518 Jul 17 09:30 named.ca
-rw-r----- 1 root  named  449 Jul 17 09:29 named.localhost
(发现了好多root组root用户权限的文件,而作为named用户启动的named进程是无法读取这些文件的,因为造成了启动失败。)
[root@sample named]# chown -R named.named ./*     将/var/named路径下的所有文件改成named用户named组的权限
[root@sample named]# ls -l
-rw-r----- 1 named named  544 Jul 17 09:35 center.net
drwxr-x--- 5 named named 4096 Jul 10 12:51 chroot
drwxrwx--- 2 named named 4096 Jul 10 12:56 data
-rw-r----- 1 named named  195 Mar 14 08:10 localhost.zone
-rw-r----- 1 named named  450 Jul 17 09:34 named.127.0.0
-rw-r----- 1 named named  503 Jul 17 09:33 named.192.168.0
-rw-r----- 1 named named 2518 Jul 17 09:30 named.ca
-rw-r----- 1 named named  449 Jul 17 09:29 named.localhost
再运行
named[root@sample named]# service named start
Starting named:                                            [  OK  ]
这次就运行起来了。接着要查看是否有效
[root@sample ~]# ping sample.center.net
PING sample.center.net (192.168.0.201) 56(84) bytes of data.
64 bytes from sample.center.net.0.168.192.in-addr.arpa (192.168.0.201): icmp_seq=1 ttl=64 time=4.60 ms
64 bytes from sample.center.net.0.168.192.in-addr.arpa (192.168.0.201): icmp_seq=2 ttl=64 time=0.079 ms
^X64 bytes from sample.center.net.0.168.192.in-addr.arpa (192.168.0.201): icmp_seq=3 ttl=64 time=0.093 ms
--- sample.center.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.079/1.592/4.604/2.129 ms
(到这里,sample.center.net 的正向解析已经完成了)
 
[root@sample ~]# nslookup
> set type=ptr    
> 192.168.0.201
Server:         192.168.0.201
Address:        192.168.0.201#53
201.0.168.192.in-addr.arpa      name = sample.center.net.0.168.192.in-addr.arpa.
(这里,192.168.0.201的反向解析也完成了)
 

 虽然花了较多的时间,但是还是把DNS的基本给拿下了。我记下了王神所说的“契而不舍”四个字。DNS完成的话,接下来就可以做FTP和Mail服务器的解析了。就是这样一步一步来。
 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值