Chinaunix首页 | 论坛 | 博客
  • 博客访问: 160297
  • 博文数量: 126
  • 博客积分: 1073
  • 博客等级: 上尉
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 00:32
文章分类

全部博文(126)

文章存档

2018年(56)

2013年(1)

2012年(8)

2011年(61)

分类: LINUX

2011-01-24 21:06:36

连载

RHEL5.4配置DNS服务(2)

http://blog.chinaunix.net/space.php?uid=14762370&do=blog&id=100701

RHEL5.4配置DNS服务(3)

http://blog.chinaunix.net/space.php?uid=14762370&do=blog&id=100702

                                                                                      

下面是关于linux系统下面配置DNS服务讨论,

 

DNS介绍

DNS全名为Domain Name Server (域名系统),TCP/IP网络中有非常重要的地位,其目的就是为了提供域名和IP地址的解析服务。

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

DNS组织结构

 

这个就是整个DNS的组织结构

最顶级的就是根域名服务器(.

全球13DNS根(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的解析过程

当计算机去访问这个域名的时候

计算机首先会去都读取本地的host文件和缓存

如果有,就直接去解析

如果没有,则去将请求发给DNS Server

如果 Serser的管理区域内

那么DNS Server就会将请求发送给根域名服务器进行查询

根域名服务器就会将请求给.com机构,.com将请求给google.com

当找到了记录,DNS Server就会返回给client,并且将记录保存在自己的缓存里。

当下次有client请求的时候,它就会调用自己的缓存。

正向解析:将主机名装换成IP地址,

反向解析:将IP地址装换成主机名,

 

域名的表示方法 (通常是用FQDN名)

例如:.

最后的那个点是根域名,然后com是顶级域名,google是二级域名,www是主机。

在整个DNS的解析过程中,全球的13台根域名服务器只会管理顶级域,顶级域管理二级域。二级域管理子域。

 

关于DNS的查询方式

递归查询:一般在客户端与服务器之间的查询叫做递归查询。

迭代查询:服务器与服务器之间的查询叫做迭代查询。

 

下面就正式的在linux下面配置DNS服务。

linux下面架设DNS服务器都是用bind软件来实现的

BindBerkeley 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    

最小的存活的时间是86400S24H

@      IN  SOA  server1.example.com.       root.exmaple.com. (

这是一笔SOA记录,只允许存在一个SOA记录

@是代表要解析的这个域本身(example.com)

INInternet记录。

SOA 是初始授权记录,指定网络中第一台DNS Server

Server1.example.comDNS服务器的名字。

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记录,指定nameserverserver1.example.com

至少要有一笔NS记录

server1         IN A            192.168.0.254

指定server1ip地址为192.168.0.254

station10       IN A             192.168.0.10

指定station10ip地址为192.168.0.10

正向解析的数据库就完成了,下面定义反向解析的数据库。

 

2.      定义反向解析数据库

[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换成PTRok了。

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解析一切正常,

阅读(625) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~