Chinaunix

标题: RHEL5.4配置DNS服务(1) [打印本页]

作者: rhroot1112    时间: 2010-02-23 00:23
标题: RHEL5.4配置DNS服务(1)

E-mail: rhroot1112@163.com                               2010-2-18
                      RHCE学习笔记

连载
RHEL5.4配置DNS服务(2)
http://blog.chinaunix.net/u3/111899/showart_2184360.html
RHEL5.4配置DNS服务(3)

http://blog.chinaunix.net/u3/111899/showart_2184368.html

[/url]

下面是关于linux系统下面配置DNS服务的问题

DNS介绍
DNS全名为Domain Name Server (域名系统),在TCP/IP网络中有非常重要的地位,其目的就是为了提供域名和IP地址的解析服务。
当我们在上网的时候,通常输入的是网址,其实这就是一个
[url=http://baike.baidu.com/view/43.htm]域名

,而计算机网络上的计算机彼此之间只能用IP地址才能相互识别。再如,我们去一WEB服务器中请求一WEB页面,我们可以在浏览器中输入网址或者是相应的IP地址,但是IP地址我们记不住或说是很难记住,所以有了域名的说法,这样的域名会让我们容易的记住。
DNS组织结构

这个就是整个DNS的组织结构
最顶级的就是根域名服务器(.)
全球13个DNS根(rootDNS)服务器信息
  A.root-servers.net198.41.0.4美国(另支持IPv6)
  B.root-servers.net192.228.79.201美国
  C.root-servers.net192.33.4.12法国
  D.root-servers.net128.8.10.90美国
  E.root-servers.net192.203.230.10美国
  F.root-servers.net192.5.5.241美国(另支持IPv6)
  G.root-servers.net192.112.36.4美国
  H.root-servers.net128.63.2.53美国(另支持IPv6)
  I.root-servers.net192.36.148.17瑞典
  J.root-servers.net192.58.128.30美国(另支持IPv6)
  K.root-servers.net193.0.14.129英国(另支持IPv6)
  L.root-servers.net199.7.83.42美国(另支持IPv6)
M.root-servers.net202.12.27.33日本(另支持IPv6)
常见的顶级域服务器


DNS的解析过程
当计算机去访问
www.google.com
这个域名的时候
计算机首先会去都读取本地的host文件和缓存
如果有,就直接去解析
如果没有,则去将请求发给DNS Server
如果
www.google.com不在DNS
Serser的管理区域内
那么DNS Server就会将请求发送给根域名服务器进行查询
根域名服务器就会将请求给.com机构,.com将请求给google.com
当找到了记录,DNS Server就会返回给client,并且将记录保存在自己的缓存里。
当下次有client请求的时候,它就会调用自己的缓存。
正向解析:将主机名装换成IP地址,
反向解析:将IP地址装换成主机名,

域名的表示方法 (通常是用FQDN名)
例如:
www.google.com
.
最后的那个点是根域名,然后com是顶级域名,google是二级域名,www是主机。
在整个DNS的解析过程中,全球的13台根域名服务器只会管理顶级域,顶级域管理二级域。二级域管理子域。

关于DNS的查询方式
递归查询:一般在客户端与服务器之间的查询叫做递归查询。
迭代查询:服务器与服务器之间的查询叫做迭代查询。
下面就正式的在linux下面配置DNS服务。
在linux下面架设DNS服务器都是用bind软件来实现的
Bind是Berkeley Internet Name Domain Service的简写,它是一款实现DNS服务器的开放源码软件
目前Internet绝大多数的DNS服务器都是用BIND来架设的。

下面是关于DNS这个服务的属性
DNS的相关软件包
Bind   bind-chroot  caching-nameserver
Bind                 是来提供核心的二进制程序
Bind-chroot           提供安全性的
Caching-nameserver    提供模板文件
DNS的守护进程
/usr/sbin/named    /usr/sbin/rndc
DNS的脚本
/etc/init.d/named
DNS的端口
53        953(tcp  udp)
DNS的配置文件
/var/named/chroot/etc/named.conf(主配置文件)   /var/named/chroot/*

下面具体来搭建DNS服务
第一步,安装软件包
DNS软件包默认是没有安装的,首先我们就要安装这个软件包
[root@localhost ~]# yum -y install bind bind-chroot caching-nameserver
Loaded plugins: rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package bind.i386 30:9.3.6-4.P1.el5 set to be updated
---> Package bind-chroot.i386 30:9.3.6-4.P1.el5 set to be updated
---> Package caching-nameserver.i386 30:9.3.6-4.P1.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================
Package                      Arch           Version                      Repository        Size
=================================================================================================
Installing:
bind                         i386           30:9.3.6-4.P1.el5            Server           978 k
bind-chroot                    i386           30:9.3.6-4.P1.el5            Server            44 k
caching-nameserver               i386           30:9.3.6-4.P1.el5            Server            60 k

Transaction Summary
=================================================================================================
Install      3 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 1.1 M
Downloading Packages:
(1/3): bind-9.3.6-4.P1.el5.i386.rpm                                           | 978 kB     00:00     
(2/3): bind-chroot-9.3.6-4.P1.el5.i386.rpm                                |  44 kB     00:00     
(3/3): caching-nameserver-9.3.6-4.P1.el5.i386.rpm                    |  60 kB     00:00     
-------------------------------------------------------------------------------------------------
Total                                                            1.3 MB/s | 1.1 MB     00:00     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : bind                                                                         1/3
  Installing     : caching-nameserver                                                  2/3
  Installing     : bind-chroot                                                               3/3

Installed:
  bind.i386 30:9.3.6-4.P1.el5                        bind-chroot.i386 30:9.3.6-4.P1.el5         
  caching-nameserver.i386 30:9.3.6-4.P1.el5         
Complete!
DNS的所有软件包就安装成功了。
第二步,复制模板文件
由于安装了chroot环境,所以我们的DNS主配置文件应该在/var/named/chroot/etc目录下面
[root@localhost ~]# cd /var/named/chroot/
[root@localhost chroot]# ls
dev  etc  var
[root@localhost chroot]# cd etc/
[root@localhost etc]# ls
localtime  named.caching-nameserver.conf  named.rfc1912.zones  rndc.key
[root@localhost etc]#
打开named.caching-nameserver.conf文件来看看,
//
// named.caching-nameserver.conf
//
// Provided by Red Hat caching-nameserver package to configure the
// ISC BIND named(8) DNS server as a caching only nameserver
// (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// DO NOT EDIT THIS FILE - use system-config-bind or an editor
// to create named.conf - edits to this file will be lost on
// caching-nameserver package upgrade.
//
这个文件告诉我们不要直接的编辑这个文件,去创建一个named.conf文件,然后编辑named.conf文件,当有了named.conf,将不在读取这个文件。
现在就将named.caching-nameserver.conf文件复制成named.conf文件。
[root@localhost etc]# ls
localtime  named.caching-nameserver.conf  named.rfc1912.zones  rndc.key
[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf
[root@localhost etc]# ls
localtime                      named.conf           rndc.key
named.caching-nameserver.conf  named.rfc1912.zones
[root@localhost etc]#
可以看到,named.conf文件就被创建成功了。最好在copy的时候加上-P的参数,保留权限。否则启动服务的时候会报权限拒绝的。

第三步,编辑named.conf文件
[root@localhost etc]#
[root@localhost etc]# vim named.conf
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";

        // Those options should be used carefully because they disable port
        // randomization
        // query-source    port 53;     
        // query-source-v6 port 53;

        allow-query     { 192.168.0.0/24; };
        allow-query-cache { any; };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view localhost_resolver {
        match-clients      { 192.168.0.0/24; };
        match-destinations { any; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
};
解释这些语法参数的意思
options
代表全局配置
listen-on port 53 { any; };
DNS服务监听在所有接口
listen-on-v6 port 53 { ::1; };
ipv6监听在本地回环接口
directory       "/var/named";
zone文件的存放目录,指的是chroot环境下面的/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";
每一次访问耗费了多数内存的存放文件
allow-query   { 192.168.0.24 };
允许查询的客户端,现在修改成本地网段,
allow-query-cache {any; };
允许那些客户端来查询缓存,any表示允许任何人。
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
定义日志的存放位置在/var/named/chroot/var/named/data/目录下面
};
view localhost_resolver {
        match-clients      { 192.168.0.0/24; };
        match-destinations  { any; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
};
这里是定义视图的功能,
Match-clients     是指匹配的客户端
Match-destination 是指匹配的目标
到这里,named.conf文件就已经配置成功了,这个视图最后写include "/etc/named.rfc1912.zones";接下面,就去配置这个文件。当然,我们可以匹配不同的客户端来创建不同的视图。

第四步,定义zone文件。(编辑named.rfc1912.zones文件)
[root@localhost etc]#
[root@localhost etc]# vim named.rfc1912.zones
zone "." IN {
        type hint;
        file "named.ca";
};
zone "example.com" IN {
        type master;
        file "example.zone";
        allow-update { none; };
};

zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "named.example";
        allow-update { none; };
};
解释这些语法参数的意思
Zone “.”                   根区域
Zone “example.com”         定义正向解析的区域
zone "0.168.192.in-addr.arpa"  定义反向解析的区域
IN                        Internet记录
type hint                   根区域的类型为hint
type master                 区域的类型为主要的
file “named.ca” ;             区域文件是named,ca
file "example.zone";          指定正向解析的区域文件是example.com
file "named.example";         指定反向解析的区域文件是named,example
allow-update { none; };        默认情况下,是否允许客户端自动更新
在named.ca文件中就定义了全球的13台根服务器,
在example.com文件中就定义DNS的正向解析数据库
在named.example文件中就定义DNS反向解析的数据库
定义zone文件就完成了,下面来编辑DNS的数据库文件。

第五步,复制模板文件成数据库文件
[root@localhost ~]#
[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# ls
data              localhost.zone   named.ca         named.local  slaves
localdomain.zone  named.broadcast  named.ip6.local  named.zero
[root@localhost named]#
可以看到,在chroot环境下面的/var/named/有很多模板文件。Named.ca就是根区域的数据库文件,我们将localhost.zone复制成example.zone,这个是正向解析的数据库文件,将named.local复制成named.example,这个是反向解析的数据库文件。数据库文件一定要和/etc/named.rfc1912.zones这个文件里面的匹配。
[root@localhost named]#
[root@localhost named]# cp -p localhost.zone example.zone
[root@localhost named]# cp -p named.local named.example
[root@localhost named]# ls
data          localdomain.zone  named.broadcast  named.example    named.local  slaves
example.zone  localhost.zone    named.ca         named.ip6.local  named.zero
[root@localhost named]#
复制成功,正向解析和反向解析的数据库文件就已经好了。

第六步,定义数据库文件
1.      定义正向解析数据库文件
[root@localhost named]#
[root@localhost named]# vim example.zone
$TTL    86400
@           IN  SOA  server1.example.com.       root.exmaple.com. (
                                        2010022101    ; serial (d. adams)
                                        3H                   ; refresh
                                        15M                ; retry
                                        1W                  ; expiry
                                        1D )                ; minimum

@                 IN NS           server1.example.com.
server1         IN A            192.168.0.254
station10       IN A            192.168.0.10
station20       IN A            192.168.0.20
station30       IN A            192.168.0.30
station40       IN A            192.168.0.40
station50       IN A            192.168.0.50   
关于正向解析数据库中每一行参数的解释
$TTL    86400     
最小的存活的时间是86400S(24H)
@      IN  SOA  server1.example.com.       root.exmaple.com. (
这是一笔SOA记录,只允许存在一个SOA记录
@是代表要解析的这个域本身(example.com)
IN是Internet记录。
SOA 是初始授权记录,指定网络中第一台DNS Server。
Server1.example.com是DNS服务器的名字。
Root.example.com是指管理员的邮箱。
2010022101    ; serial (d. adams)
3H                   ; refresh
15M                ; retry
1W                  ; expiry
1D )                ; minimum
这些部分主要是用来主DNS和辅助DNS做同步用的
2010022101    序列号,当主DNS数据改变时,这个序列号就要被增加1,而辅助DNS通过序列号来和主DNS同步。
3H            刷新,主DNS和辅助DNS每隔三小时同步一次。
15M           重试,3H之内,没有同步,每隔15M在尝试同步
1W            过期,1W之内,还没有同步,就不同步了
1D            生存期,没有这条记录,缓存的时间。
@             IN NS           server1.example.com.
这是一笔NS记录,指定nameserver为server1.example.com
至少要有一笔NS记录
server1         IN A              192.168.0.254
指定server1的ip地址为192.168.0.254
station10       IN A             192.168.0.10
指定station10的ip地址为192.168.0.10
IN   Internet   NS  nameserver   A   address
正向解析的数据库就完成了,下面定义反向解析的数据库。

1.      定义反向解析数据库
[root@localhost named]#
[root@localhost named]# vim named.example
$TTL    86400
@      IN      SOA     server1.example.com.   root.example.com.  (
                                      2010022101 ; Serial
                                      28800           ; Refresh
                                      14400           ; Retry
                                      3600000       ; Expire
                                      86400 )        ; Minimum
@       IN      NS       server1.example.com.
254     IN      PTR     server1.example.com.
10       IN      PTR     station10.example.com.
20       IN      PTR     station20.example.com.
30       IN      PTR     station30.example.com.
40       IN      PTR     station40.example.com.
50       IN      PTR     station50.example.com.
其实反向解析的数据库文件的配置和正向解析的差不多,只需要将ip地址和域名换一个位置就可以了,把A换成PTR就ok了。
DNS的基本配置就完成了,在来看看DNS是否能够正常工作。
我们先重启一下DNS服务
[root@localhost ~]#
[root@localhost ~]# service named restart
Stopping named:                                           [  OK  ]
Starting named:                                             [  OK  ]
[root@localhost ~]#
可以看到,DNS服务启动成功了。
在查询以前,要在客户端来指定DNS Server,在/etc/resolv.conf这个文件中指定。
[root@localhost ~]#
[root@localhost ~]# vim /etc/resolv.conf
search  example.com
nameserver  192.168.0.254
~                     
再来使用nslookup工具来查询一下
[root@localhost ~]#
[root@localhost ~]# nslookup
> server1.example.com
Server:         192.168.0.254
Address:        192.168.0.254#53

Name:   server1.example.com
Address: 192.168.0.254
> 192.168.0.254
Server:         192.168.0.254
Address:        192.168.0.254#53

254.0.168.192.in-addr.arpa      name = server1.example.com.
>
可以看到,DNS解析一切正常,


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/111899/showart_2184349.html
作者: zimu887    时间: 2012-04-21 19:36
讲解很清晰、、、




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2