Linux 下DNS的配置

转载 2007年09月26日 13:05:00
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服务器的解析了。就是这样一步一步来。
 

相关文章推荐

linux下dns配置详细步骤

………………………………………………DNS的配置步骤:…………………………………………………… 一、配置静态IP地址: #vi /etc/sysconfig/network-scripts/i...

linux配置dns三种方式

在网卡文件中修改 echo 'DNS1="114.114.114.114" ' >> /etc/sysconfig/network-scripts/ifcfg-eth0 在主机表文件host...

Linux静态IP及DNS配置

以eth0为例,下面是其配置文件示例。 主要是配置红色部分。 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 ...

Linux运维笔记----DNS的基本配置

DNS的基本配置1 .DNS(域名服务器)DNS(Domain Name Server,域名服务器)是进行域名和与之对应的IP地址转化的服务器。DNS中保存了一张域名和与之对应的IP地址的表,以解析消...
  • men_wen
  • men_wen
  • 2016年09月11日 21:49
  • 3771

Linux下DNS服务器的设置

环境:要设的DNS机子的 IP  34.0.188.99                                          网关 34.0.188.250               ...
  • zzw45
  • zzw45
  • 2004年07月17日 09:54
  • 16198

Linux下配置DNS

第一步:实验环境: 真机windows的ip为192.168.56.1 虚拟机linux的ip为192.168.56.78 虚拟机xp的ip为192.168.56.23 修改linux的/etc/re...

DNS服务器故障纠错

说明:这是一篇对DNS排错的文章,因为在网上(包括RedHat知识库)几乎没有对文中提到的错误进行直接描述和提出最好最快的解决方案的报告,经过长达近一个小时的排错和资料查阅才有了这篇文章的脱稿。 ...
  • ZJunJun
  • ZJunJun
  • 2012年04月01日 14:05
  • 9940

linux下安装和配置DNS服务器

1.DNS概念: 简单来讲DNS就是系统上的一个占用53端口的服务,用来提供域名和IP地址的相互转换。比如你访问www.csdn.net,路由器是不可能知道这个地址,你需要先连接到DNS服务器,DNS...

set a openDNS for linux ubuntu 14.04

noting to say, always the following commands: (1)modify head sudo gedit /etc/resolvconf/resolv.conf....
  • WanGong
  • WanGong
  • 2015年01月31日 20:06
  • 738

linux下如何修改DNS地址

Linux下设置DNS的位置主要是, 1. 网卡设置配置文件里面DNS服务器地址设置, 2. 系统默认DNS服务器地址设置。 3. hosts文件指定 生效顺序是: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux 下DNS的配置
举报原因:
原因补充:

(最多只允许输入30个字)