DNS
项目 6 配置与管理DNS 服务器项目描述:某高校组建了学校的校园网,为了使校园网中的计算机简单快捷地访问本地网络及Internet 上资源,需要在校园网中架设DNS 服务器,用来提供域名转换成IP
项目 6 配置与管理DNS 服务器
项目描述:
某高校组建了学校的校园网,为了使校园网中的计算机简单快捷地访问本地网络及Internet 上资源,需要在校园网中架设DNS 服务器,用来提供域名转换成IP 地址的功能。
在完成该项目之前,首先应当确定网络中DNS 服务器的部署环境,明确DNS 服务器的各种角色及其作用。
项目目标:
●
●
●
●
●
●
● 了解DNS 服务器的作用及其在网络中的重要性 理解DNS 的域名空间结构及其工作过程 理解并掌握缓存DNS 服务器的配置 理解并掌握主DNS 服务器的配置 理解并掌握辅助DNS 服务器的配置 理解并掌握DNS 客户机的配置 掌握DNS 服务的测试
6.1 相关知识
DNS (Domain Name Service ,域名服务)是Internet/Intranet中最基础也是非常重要的一项服务,它提供了网络访问中域名和IP 地址的相互转换。
6.1.1 DNS 概述
在TCP/IP网络中,每台主机必须有一个唯一的IP 地址,当某台主机要访问另外一台主机上的资源时,必须指定另一台主机的IP 地址,通过IP 地址找到这台主机后才能访问这台主机。但是,当网络的规模较大时,使用IP 地址就不太方便了,所以,便出现了主机名(Host Name)与IP 地址之间的一种对应解决方案,可以通过使用形象易记的主机名而非IP 地址进行网络的访问,这比单纯使用IP 地址要方便得多。其实,在这种解决方案中使用了解析的概念和原理,单独通过主机名是无法建立网络连接的,只有通过解析的过程,在主机名和IP 地址之间建立了映射关系后,才可以通过主机名间接地通过IP 地址建立网络连接。
主机名与IP 地址之间的映射关系,在小型网络中多使用hosts 文件来完成,后来,随着网络规模的增大,为了满足不同组织的要求,以实现一个可伸缩、可自定义的命名方案的需要,InterNIC 制定了一套称为域名系统(DNS )的分层名字解析方案,当DNS 用户提出IP 地址查
,项目6 配置与管理DNS 服务器
139
询请求时,可以由DNS 服务器中的数据库提供所需的数据,完成域名和IP 地址的相互转换。DNS 技术目前已广泛应用于Internet 中。
组成DNS 系统的核心是DNS 服务器,它是回答域名服务查询的计算机,它为连接Intranet 和Internet 的用户提供并管理DNS 服务,维护DNS 名字数据并处理DNS 客户端主机名的查询。DNS 服务器保存了包含主机名和相应IP 地址的数据库。
DNS 服务器分为三类:
(1)主DNS 服务器(Master 或Primary )。主DNS 服务器负责维护所管辖域的域名服务信息。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区文件)包含着该服务器具有管理权的一部分域结构的最精确信息。配置主DNS 服务器需要一整套的配置文件,包括主配置文件(/etc/named.conf)、正向域的区文件、反向域的区文件、高速缓存初始化文件(/var/named/named.ca)和回送文件(/var/named/named.local)。
(2)辅助DNS 服务器(Slave 或Secondary )。辅助DNS 服务器用于分担主DNS 服务器的查询负载。区文件是从主服务器中转移出来的,并作为本地磁盘文件存储在辅助服务器中。这种转移称为“区文件转移”。在辅助DNS 服务器中有一个所有域信息的完整复制,可以权威地回答对该域的查询请求。配置辅助DNS 服务器不需要生成本地区文件,因为可以从主服务器下载该区文件。因而只需配置主配置文件、高速缓存文件和回送文件就可以了。
(3)唯高速缓存DNS 服务器(Caching-only DNS server)。供本地网络上的客户机用来进行域名转换。它通过查询其他DNS 服务器并将获得的信息存放在它的高速缓存中,为客户机查询信息提供服务。唯高速缓存DNS 服务器不是权威性的服务器,因为它提供的所有信息都是间接信息。
6.1.2 DNS 查询模式
按照DNS 搜索区域的类型,DNS 的区域分为正向搜索区域和反向搜索区域。正向搜索是DNS 服务的主要功能,它根据计算机的DNS 名称(域名),解析出相应的IP 地址;而反向搜索是根据计算机的IP 地址解析出它的DNS 名称(域名)。
1.正向查询
正向查询就是根据域名,搜索出对应的IP 地址。其查询方法为:当DNS 客户机(也可以是DNS 服务器)向首选DNS 服务器发出查询请求后,如果首选DNS 服务器数据库中没有与查询请求所对应的数据,则会将查询请求转发给另一台DNS 服务器,依此类推,直到找到与查询请求对应的数据为止,如果最后一台DNS 服务器中也没有所需的数据,则通知DNS 客户机查询失败。
2.反向查询
反向查询与正向查询正好相反,它是利用IP 地址查询出对应的域名。
6.1.3 DNS 域名空间结构
在域名系统中,每台计算机的域名由一系列用点分开的字母数字段组成。例如,某台计算
,140 Linux 网络服务器配置管理项目实训教程
机的FQDN (Full Qualified Domain Name)为computer.jnrp.cn ,其具有的域名为jnrp.cn ;另一台计算机的FQDN 为www.computer.jnrp.cn ,其具有的域名为computer.jnrp.cn 。域名是有层次的,域名中最重要的部分位于右边。FQDN 中最左边的部分是单台计算机的主机名或主机别名。
DNS 域名空间的分层结构如图6-1所示。
图6-1 DNS 域名空间结构
整个DNS 域名空间结构如同一棵倒挂的树,层次结构非常清晰。如图6-1所示,根域位于顶部,紧接在根域下面的是顶级域,每个顶级域又可以进一步划分为不同的二级域,二级域再划分出子域,子域下面可以是主机也可以再划分子域,直到最后的主机。在Internet 中的域是由InterNIC 负责管理的,域名的服务则由DNS 来实现。
6.1.4 DNS 域名解析过程
DNS 解析过程如图6-2所示。
图6-2 DNS 域名解析过程
,项目6 配置与管理DNS 服务器
141
(1)客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
(2)当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该记录项,则本地的域名服务器就直接把查询的结果返回。
(3)如果本地的缓存中没有该记录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
(4)本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该记录,则返回相关的下级域名服务器的地址。
(5)重复步骤(4),直到找到正确的记录。
(6)本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
6.1.5 DNS 常见资源记录
从DNS 服务器返回的查询结果可以分为两类:权威的(authoritative )和非权威的(non-authoritative )。所谓权威的查询结果,是指该查询结果是从被授权管理该区域的域名服务器的数据库中查询而来的。所谓非权威的查询结果,是指该查询结果来源于非授权的域名服务器,是该域名服务器通过查询其他域名服务器而不是本地数据库得来的。
在能够返回权威查询结果的域名服务器中存在一个本地数据库,该数据库中存储与域名解析相关的条目,这些条目称为DNS 资源记录。 资源记录的内容通常包括5项,基本格式如下:
Domain TTL Class Record Type Record Data
各项的含义如表6-1所示。
表6-1 资源记录条目中各项含义 项目
域名(Domain )
存活期(TTL )
类别(Class ) 拥有该资源记录的DNS 域名 该记录的有效时间长度 说明网络类型,目前大部分资源记录采用“IN ”,表示Internet 含义
记录类型(Record Type) 说明该资源记录的类型,常见资源记录类型如表6-2所示
记录数据(Record Data) 说明和该资源记录有关的信息,通常是解析结果,该数据格式和记录类型有关
表6-2 DNS 资源记录类型
资源记录类型
A
CNAME
SOA
NS
PTR
MX
HINFO 说明 主机资源记录,建立域名到IP 地址的映射 别名资源记录,为其他资源记录指定名称的替补 起始授权机构 名称服务器,指定授权的名称服务器 指针资源记录,用来实现反向查询,建立IP 地址到域名的映射 邮件交换记录,指定用来交换或者转发邮件信息的服务器 主机信息记录,指明CPU 与OS
,142 Linux 网络服务器配置管理项目实训教程
例如为了能够解析www.jnrp.cn 这个域名对应的IP 地址,需要在jnrp.cn 所在的域名服务器中添加如下条目:
www.jnrp.cn. IN A 192.168.0.1 或者:
www IN A 192.168.0.1
6.1.6 /etc/hosts文件
hosts 文件是Linux 系统中一个负责IP 地址与域名快速解析的文件,以ASCII 格式保存在/etc目录下,文件名为“hosts ”。hosts 文件包含了IP 地址和主机名之间的映射,还包括主机名的别名。在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP 地址,否则就需要使用DNS 服务程序来解决。通常可以将常用的域名和IP 地址映射加入到hosts 文件中,以实现快速方便的访问。hosts 文件的格式如下:
IP 地址 主机名/域名
【例6-1】假设要添加域名为www.jnrp.cn ,IP 地址为192.168.0.1;域名为computer.jnrp.cn ,IP 地址为192.168.21.1。则可在hosts 文件中添加如下记录。
www.jnrp.cn 192.168.0.1
computer.jnrp.cn 192.168.21.1
6.1.7 DNS 规划与域名申请
在建立DNS 服务之前,进行DNS 规划是非常必要的。
1.DNS 的域名空间规划
决定如何使用DNS 命名,以及通过使用DNS 要达到什么目的。要在Internet 上使用自己的DNS ,公司必须先向一个授权的DNS 域名注册颁发机构申请并注册一个二级域名,注册并获得至少一个可在Internet 上有效使用的IP 地址。这项业务通常可由ISP 代理。
2.DNS 服务器的规划
确定网络中需要的DNS 服务器的数量及其各自的作用,根据通信负载、复制和容错问题,确定在网络上放置DNS 服务器的位置。对于大多数安装配置来说,为了实现容错,至少应该对每个DNS 区域使用两台服务器。DNS 被设计成每个区域有两台服务器,一个是主服务器,另一个是备份或辅助服务器。在单个子网环境中的小型局域网上仅使用一台服务器时,可以配置该服务器扮演区域的主服务器和辅助服务器两种角色。
3.申请域名
同时,为了将企业网络与Internet 很好地整合在一起,实现局域网与Internet 的相互通信,建议向域名服务商(如万网http://www.net.cn和新网http://www.xinnet.com)申请合法的域名。然后设置相应的域名解析。
提示:若要实现其他网络服务(如Web 服务、E-mail 服务等),DNS 服务是必不可少的。
,项目6 配置与管理DNS 服务器
143
没有DNS 服务,就无法将域名解析为IP 地址,客户端也就无法享受相应的网络服务。若要实现服务器的Internet 发布,就必须申请合法的DNS 域名。
6.2 项目设计及准备
6.2.1 项目设计
为了保证校园网中的计算机能够安全可靠地通过域名访问本地网络以及Internet 资源,需要在网络中部署主DNS 服务器、辅助DNS 服务器、缓存DNS 服务器。
6.2.2 项目准备
(1)安装Linux 企业服务器版,用作DHCP 服务器。
(2)安装有Windows XP操作系统的计算机1台,用来部署DNS 客户端。
(3)安装有Linux 操作系统的计算机1台,用来部署DNS 客户端。
(4)确定每台计算机的角色,并规划每台计算机的IP 地址及计算机名。
(5)或者用VMware 虚拟机软件部署实验环境。
DNS 服务器的IP 地址必须是静态的。
6.3 项目实施
6.3.1 任务1:安装DNS 服务
Linux 下架设DNS 服务器通常使用BIND (Berkeley Internet Name Domain Service)程序来实现,其守护进程是named 。
1.认识BIND
BIND 是一款实现DNS 服务器的开放源码软件。BIND 原本是美国DARPA 资助伯克利大学(Berkeley )开设的一个研究生课题,后来经过多年的变化发展,已经成为世界上使用最为广泛的DNS 服务器软件,目前Internet 上绝大多数的DNS 服务器都是用BIND 来架设的。
BIND 经历了第4版、第8版和最新的第9版,第9版修正了以前版本的许多错误,并提升了执行时的效能,BIND 能够运行在当前大多数的操作系统平台之上。目前BIND 软件由因特网软件联台会(Internet Software Consortium ,ISC )这个非赢利性机构负责开发和维护。
144 Linux 网络服务器配置管理项目实训教程
2.安装BIND 软件包
BIND 包含以下几个软件包:
● bind :DNS 服务器软件包。
● bind-utils :DNS 测试工具,包括dig 、host 与nslookup 等。
● bind-chroot :使BIND 运行在指定的目录中的安全增强工具。
● caching-nameserver :高速缓存DNS 服务器的基本配置文件,建议一定安装。
要安装DNS 服务,可将Red Hat Enterprise Linux 4.0第4张安装盘放入光驱,加载光驱后使用命令“rpm -ivh /media/cdrom/RedHat/RPMS/bind-9.2.4-2.i386.rpm”可以安装bind 软件包。其命令执行结果如下:
[root@RHEL4 RPMS]# rpm -ivh /media/cdrom/RedHat/RPMS/bind-9.2.4-2.i386.rpm
warning: /media/cdrom/RedHat/RPMS/bind-9.2.4-2.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### [100]
package bind-9.2.4-2 is already installed
3.安装chroot 软件包
chroot 是Change Root的缩写,它可以改变程序运行时所参考的“/”根目录位置,即将某个特定的子目录作为程序的虚拟“/”根目录。chroot 对程序运行时可以使用的系统资源、用户权限和所在目录进行严格控制,程序只在这个虚拟的根目录具有权限,一旦跳出该目录就无任何权限了。举个简单的例子,使用过FTP 的读者都知道,用户登录到FTP 服务器时,看到的根目录并不是服务器上真正的根目录,而是它的主目录。用户不能访问除主目录外的任何资源,用户的任何操作仅对自己的主目录有效,不会影响系统和其他用户的文件,chroot 的作用也是类似的。
对于网络管理员而言,可以使用chroot 技术增强DNS 服务的安全性。将Red Hat Enterprise Linux 4.0第4张安装盘放入光驱,加载光驱后使用命令“rpm -ivh /media/cdrom/RedHat/RPMS/ bind-chroot-9.2.4-2.i386.rpm ”可以安装chroot 软件包。其命令执行结果如下:
[root@RHEL4 RPMS]# rpm -ivh /media/cdrom/RedHat/RPMS/bind-chroot-9.2.4-2.i386.rpm
warning: /media/cdrom/RedHat/RPMS/bind-chroot-9.2.4-2.i386.rpm: V3 DSA signature: NOKEY , key ID db42a60e
Preparing... ########################################### [100]
package bind-chroot-9.2.4-2 is already installed
使用了chroot 后,由于BIND 程序的虚拟目录是/var/named/chroot,所以DNS
服务器的配置文件、区域数据文件和配置文件内的语句,都是相对这个虚拟目
录而言的。如/etc/named.conf文件的真正路径是
/var/named/chroot/etc/named.conf,
/var/named目录的真正路径是/var/named/chroot/var/named。
4.配置BIND 配置文件
建立DNS 服务器过程中,通常用到以下BIND 配置文件,如表6-3所示。
(1)/etc/named.conf。BIND 默认主配置文件是/etc/named.conf。该文件的每一行都以分号作为结束符,行注释可使用“#”或者“//”。对多行文字的注释采用/*…..*/。该文件的主要
,项目6 配置与管理DNS 服务器
145
内容如下:
表6-3 BIND 配置文件 配置文件
/etc/named.conf
/var/named/named.ca
/var/named/localhost.zone
/var/named/named.local
/var/named/domainname.zone BIND 的主配置文件 指向根域名服务器的指示文件 用于localhost 到本地回环地址的解析 用于本地回环地址到localhost 的解析 用户自己建立的DNS 区域的数据库文件
[root@RHEL4 ~]# cat /etc/named.conf
//定义全局配置语句
options {
//定义服务器区域配置文件的存放目录
directory "/var/named";
};
// 以下内容声明一个控制通道,用于rndc 实用程序控制named 守护进程
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
//zone用于声明一个区,以下部分定义根域的区声明
zone "." IN {
type hint;
file "named.ca";
};
//定义本地回环地址的正向解析区声明
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
//定义本地回环地址的反向解析区声明
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
//定义包含文件,即将/etc/rndc.key文件包含进当前配置文件
include "/etc/rndc.key"; 说明
说明:
① options 配置段。该配置段属于全局性的设置,常用配置项命令及功能如下: directory :用于指定named 守护进程的工作目录,各区域正反向搜索解析文件和DNS
,146 Linux 网络服务器配置管理项目实训教程
根服务器地址列表文件(named.ca )应放在该配置项指定的目录中。
pid-file :指定创建用于保存named 守护进程号的文件名及路径。守护进程号文件一般保存在/var/run目录中,BIND 软件包安装时在/var/run目录下创建了一个named 目录,因此,可将进程号文件保存在该目录中,相应的配置命令为:“pid-file "/ var / run / named / named.pid";”。
statistics-file :用于指定记录状态信息的文件的位置。若将其保存在与进程号文件相同的位置,相应的配置命令为“statistics-file "/var/ run/ named/ named.stats";”。 allow-recursion{}:指定允许查询该DNS 服务器的IP 地址或网络。在{}中可指定允许查询的IP 地址或网络地址列表,地址间用分号分隔。若不配置该项,则默认所有主机均可以查询。allow-query{}与此功能相同。另外,还可使用地址匹配符来表达允许的主机。比如,any 可匹配所有的IP 地址,none 不匹配任何IP 地址,localhost 匹配本地主机使用的所有IP 地址,localnets 匹配同本地主机相连的网络中的所有主机。比如若仅允许127.0.0.1和192.168.1.0/24网段的主机查询该DNS 服务器,则命令为:allow-recursion{127.0.0.1;192.168.1.0/24;}或表达式为:allow-query{127.0.0.1;192. 168.1.0/24;}。
transfer-format :用于控制在发送的每个信息中包含一个资源记录,还是包含多个资源记录。若每个信息包中包含多个资源记录,则效率更高,但只有8.1或以上版本的BIND 域名服务器才支持,默认为one-answer 。
每个信息包含多个资源记录的配置命令为“transfer-format many-answers; ”。 每个信息包含一个资源记录的配置命令为“transfer-format one-answer; ”。
listen-on :设置named 守护进程监听的IP 地址和端口。若未指定,默认监听DNS 服务器的所有IP 地址的53号端口。当服务器安装有多块网卡,有多个IP 地址时,可通过该配置命令指定所要监听的IP 地址。对于只有一个地址的服务器,不必设置。若要设置DNS 服务器监听192.168.1.2这个IP 地址,端口使用标准的5353号,则配置命令为“listen-on 5353{192.168.1.2;};”。
forwarders{}:用于定义DNS 转发器。当设置了转发器后,所有非本域的和在缓存中无法找到的域名查询,可由指定的DNS 转发器来完成解析工作并做缓存。forward 用于指定转发方式,仅在forwarders 转发器列表不为空时有效,其用法为:“forward first | only ; ”。forward first为默认方式,DNS 服务器会将用户的域名查询请求,先转发给forwarders 设置的转发器,由转发器来完成域名的解析工作,若指定的转发器无法完成解析或无响应,则再由DNS 服务器自身来完成域名的解析。若设置为“forward only;”,则DNS 服务器仅将用户的域名查询请求,转发给转发器,若指定的转发器无法完成域名解析或无响应,DNS 服务器自身也不会试着对其进行域名解析。例如,某地区的DNS 服务器为 61.128.192.68 和 61.128.128.68,若要将其设置为DNS 服务器的转发器,则配置命令为: ● ● ● ● ● ●
options{
forwarders {61.128.192.68;61.128.128.68;};
forward first;
};
② controls 声明段。BIND 软件包提供了一个rndc 工具。通过该工具,使用命令行参数可
,项目6 配置与管理DNS 服务器
147
实现本地或远程管理named 守护进程,为了使rndc 能够连接named 守护进程,在named.conf 配置文件中必须添加controls 声明段,用于指定控制通道,以允许管理员在本地执行rndc 命令,实现named 进程的管理。在进行身份验证时所需的密钥信息,默认存放在/etc/rndc.key文件中,因此在named.conf 配置文件的末尾,使用“include "/etc/rndc.key";”语句将其包含了进来。
③ Zone 区域声明: ● 主域名服务器的正向解析区域声明格式为:
zone " 区域名称" IN {
type master ;
file " 实现正向解析的区域文件名";
allow-update {none;};
}; ● 从域名服务器的正向解析区域声明格式为:
zone " 区域名称" IN {
type slave ;
file " 实现正向解析的区域文件名";
masters {主域名服务器的IP 地址;};
};
反向解析区域的声明格式与正向相同,只是file 所指定要读的文件不同,另外就是区域的名称不同。若要反向解析x.y.z 网段的主机,则反向解析的区域名称应设置为:z.y.x.in-addr.arpa 。
(2)根区域文件/var/named/named.ca。/var/named/named.ca是一个非常重要的文件,该文件包含了Internet 的顶级域名服务器的名字和地址。利用该文件可以让DNS 服务器找到根DNS 服务器,并初始化DNS 的缓冲区。当DNS 服务器接到客户端主机的查询请求时,如果在Cache 中找不到相应的数据,就会通过根服务器进行逐级查询。/var/named/named.ca文件的主要内容如下:
[root@RHEL4 ~]# cat /var/named/named.ca
; 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
;