第十五章 域名服务
第十五章域名服务在前面几章中我们学习了IP 地址管理和文件服务管理,在对服务器主机进行访问时都是使用IP 地址,。而在实际的网络应用中,通常是使用域名访问服务器主机的,本章将学习网络中域名服务器的配置
第十五章
域名服务
在前面几章中我们学习了IP 地址管理和文件服务管理,在对服务器主机进行访问时都是使用IP 地址,。而在实际的网络应用中,通常是使用域名访问服务器主机的,本章将学习网络中域名服务器的配置与管理。
在网络应用系统中,DNS 服务器为用户提供了主机名和IP 地址的解析服务。在局域网内部,通过构建DNS 服务器,可以使用户使用域名访问局域网中的每一台主机。在互联网中,通过DNS 可以使全世界所有的网络用户使用域名访问各种类型的主机,如Web 服务器,Mail 服务器等。
BIND ( Berkeley Internet Name Domain)是著名的开源服务器软件,1984年在UNIX 系统上开发实现,1985年正式命名为BIND 。BIND 可运行在大多数的UNIX/Linux系统中,成为事实上的标准。世界上大多数DNS 服务器主机都使用BIND 服务器提供域名解析服务。 15.1 DNS基础
人们在使用网络的过程中,每一刻都在享受着DNS 服务器提供的服务,如使用IE 浏览网页等。
15.1.1 DNS作用
用户在使用网络过程中,通常是通过域名访问服务器的,例如浏览网易的首页需要在IE 的地址栏中输入www.163.com ,而浏览器程序在访问网易的服务器时是使用IP 地址进行访问的,因此浏览器程序就需要通过向DNS 服务器查询来将域名www.163.com 转换为对应的IP 地址再进行访问。
DNS 服务器的主要作用就是为所有网络程序提供主机域名与IP 地址的相互转换,包括以下两个方面的转换功能:
将主机名称(域名)转换为对应的IP 地址,称为正向解析。域名的正向解析也是DNS 服务器最常用的功能。
将主机的IP 地址转换为对应的域名,称为反向解析。域名的反向解析不常用,确是DNS 服务器不可或缺的功能,很多网络服务会将域名的反向解析作为访问控制策略的一部分,没有配置正确的反向解析记录有可能造成部分网络服务不可用。
从上面的功能描述可以看出,DNS 服务器的功能相对其他网络服务器比较简单,但却是其他网络服务器正常使用的基础和保障,因此,DNS 服务对所有的网络服务都具有重要的辅助作用。
15.1.2 DNS结构和作用机制
在整个互联网的应用中,所有的DNS 的集合可以看作是一个大的分布式数据库,这个分布式数据可采用倒置的树形结构,全世界的域名系统具有唯一的“根”,DNS 根服务器使用“.”表示。
DNS 数的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个
,层析结构。域名空间的每个域的名字,通过域名表示。域名通常由一个完全合格域名(FQDN )标识。FQDN 能准确表示出其相对于DNS 域根的位置,也就是节点到DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS 域microsoft 来说,其完全合格域名(FQDN )为microsoft.com 。
根(. )服务器是所有主机域名解析的源头。
“.cn.”服务器负责解析所有以“cn”结尾的域名的解析。
“com.cn.”服务器负责所有以com.cn 结尾的域名的解析。
“sina.com.cn.”服务器是新浪公司负责维护的DNS 服务器,用于对sina.com.cn 域中
所有的主机进行域名解析。因此能够解析主机www.sina.com.cn 的IP 地址。

在DNS 的域名系统中,使用“.”在FQDN 中进行域和子域之间的分隔
com.cn 是“.cn”的子域。
sina.com.cn 是com.cn 的子域。
Internet 域名空间进行了层次的划分。由树根到树枝,也就是从DNS 根到下面的节点,按照不同的层次,进行了统一的命名。域名空间最顶层,即DNS 的根,称为根域(root )。根域的下一层为顶级域或一级域。其下层为二级域,再下层为二级域的子域,按照需要进行规划,可以为多级,二级域名开始,个人和组织可以申请。整个域名空间由最顶层到下层,可以分为:根域、顶级域、二级域、子域。并且域中能够包含主机和子域。主机的FQDN 从最下层到最顶层反写。
Internet 域名空间的最顶层是根域(root ),其记录着Internet 的重要DNS 信息,由Internet 域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组织。
DNS 根域下面是顶级域,也是由Internet 域名注册授权机构管理。共有3种类型的顶级域:
组织域:采用3个字符的代号,表示DNS 域中所包含的组织的主要功能或活动。
如商业机构组织是com ,教育组织机构是edu 等。
国家或地区域:采用2个字符的代号,如cn 为中国,kr 为韩国,us 为美国。 反向域:这个是特殊域,名字为in-addr.arpa ,用于将IP 地址映射到域名。
由于美国是互联网最早的使用者,因此美国的各种机构会直接使用以上域名而很少加国
,家域名“.us”,而其他国家的机构在使用域名时都需要在本国的子域中进行注册,如域名后缀“.com.cn”代表中国公司,域名后缀“.edu.cn”代表中国的教育机构等。
15.2使用BIND 构建DNS 服务器
15.2.1 DNS查询原理及流程
1、DNS 相关概念
DNS 服务器
运行DNS 服务器程序的计算机,存储DNS 数据库信息。DNS 服务器会尝试解析客户机的查询请求。在解答查询时,如果DNS 服务器能够提供所请求的信息,就直接回应解析结果,如果该DNS 服务器没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址,如果以上两种方法均失败,则回应客户机没有所请求的信息。
DNS 缓存
DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存。当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析。
资源记录
DNS 服务器的信息数据,按照分类进行存储,能够解析客户端的DNS 请求。
区域文件
包含区域资源记录的文件,选择DNS 服务器为授权服务器,管理该区域。在大部分DNS 实现中,使用文本文件实现区域文件。
2、递归查询和迭代查询
递归查询:
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询的DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
迭代查询
DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是根据另一台DNS 服务器地址,向这台DNS 服务器提交请求,依次循环直到返回查询的结果。
,
3、正向解析和反向解析
正向解析
正向解析是指域名到IP 地址的解析过程。
反向解析
反向解析是从IP 地址到域名的解析过程,作为为服务器的身份验证。
4、资源记录
为了将名字解析为IP 地址,服务器查询他们的区域文件(又叫DNS 数据库文件)。区域文件中包含组成相关DNS 域资源信息的资源记录。某些资源记录把域名解析为IP 地址,另一些则把IP 地址解析为域名。某些资源记录不仅包括DNS 域中服务器的信息,还可以用于定义域,即指定每台服务器授权了哪些域,这些资源记录就是SOA 和NS 记录。

15.2.2 安装DNS 服务
BIND 全称Berkeley Internet Name Domain(伯克利因特网名称域系统)。BIND 主要有三个版本:BIND4,BIND8,BIND9。
BIND8融合了许多提高效率、稳定性和安全性的技术,而BIND9增加了一些超前的理念:IPv6的支持,公开密钥加密,多处理器支持,增量区域传输等等。
1、DNS 所需的软件
,
bind-9.3.6-4.P1.el5.i386.rpm
提供了域名服务的主要程序及相关文件,安装DNS 服务器必须安装。
bind-utils-9.3.6-4.P1.el5.i386.rpm
提供了对DNS 服务器的测试工具程序(如nslookup 、dig 等)
bind-chroot-9.3.6-4.P1.el5.i386.rpm
为bind 提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND 的根目录)
caching-nameserver-9.3.3-7.el5.i386.rpm
为配置BIND 作为缓存域名服务器提供必要的默认配置文件,这些文件在配置主、从域名服务器时也可以作为参考
2、软件包的安装
系统默认安装的相关软件包:

使用yum 工具进行安装,yum 的配置:

修改/etc/yum.repos.d/rhel-debuginfo.repo内容为:

然后进行软件的安装:

安装后查询软件包是否正确安装:
,
3、DNS 服务器的配置文件
BIND 服务器的主配置文件是named.conf ,文件默认不存在,需要手工建立或者从样例文件复制而来,样例文件是/etc/named.caching-nameserver.conf,由于安装了bind-chroot 软件包,构造了一个虚假的目录,实际上上述样例文件只是一个链接文件:

真正的文件在/var/named/chroot/etc/目录中。
我们进入到上述目录,并建立主配置文件:

加-p 选项是为了不改变文件原有的权限。
我们查询此文件的有效行:
,
directory 用于设置BIND 服务器的工作目录,即域名区域文件保存的目录,默认是
/var/named。
dump-file 用于设置域名缓存文件的保存位置和文件名。
以上的设置是named.conf 文件中的基本的全局设置。
而named.conf 文件中没有对区域的具体设置,而是通过加载另一个文件来实现。
,
type 字段指定区域的类型,对于管理区域至关重要,一共分为以下几种:
master :主DNS 服务器:拥有区域数据文件,并对此区域提供管理数据。
slave :辅助DNS 服务器:拥有主DNS 服务器的区域数据文件的副本,辅助DNS
服务器会从主DNS 服务器同步所有区域数据。
stub :stub 区域和slave 类似,但其只复制主DNS 上的NS 记录而不是所有区域数
据。
forward :配置转发。把在本地DNS 服务器解析不了的域名转发到另外的DNS 服务
器解析。
hint :指定为根区域。
4、设置named 服务开机启动状态:

5、DNS 服务器的类型基本有3种:
缓存域名服务器
其主要功能是提供域名解析的缓存。该类型服务器中不包括注册域名的设置,而只对用户查询过的域名解析记录进行缓存,当用户首次进行域名查询时,缓存服务器将向其他DNS
,服务器进行域名查询并将查询结果保存在缓存中,缓存服务器可以大大提高常用域名的查询速度,因此特别适合在局域网内部使用。
主域名服务器
主域名服务器是特定区域所有信息的权威性信息源,对于某个指定区域,主域名服务器是唯一存在的。主域名服务器保存了指定域的区域文件。
从域名服务器
从域名服务器不进行特定域信息(区域文件)的权威设置,而是从该域的主域名服务器中获取相应的文件并进行保存。当主域名服务器的内容发生变化时,从域名服务器的内容也会进行相应的变化。从域名服务器是对主域名服务器的备份,可以有效的对主域名服务器的负载进行分担。
15.2.3 配置缓存域名服务器
缓存域名服务器,是配置其他类型DNS 服务器的基础。
实例:缓存域名服务器的主机IP 地址为192.168.1.2,该主机是构建主域名服务器的基础;缓存域名服务器应能够与互联网中的其他DNS 服务器进行网络连接,以查询DNS 客户机的域名解析请求。
在局域网内部构建缓存域名服务器的主要目的是提高域名解析的速度和节约对互联网访问的出口带宽。
1、安装caching-nameserver 软件包
该软件包在系统安装光盘自带,默认没有安装,可使用yum 工具进行安装。

查询安装此软件包后所安装的文件列表:

能看出安装caching-nameserver 软件包后,安装了DNS 服务器的配置文件以及区域文件等内容。
2、修改named.conf 配置文件
首先建立named.conf (虽然上图显示已经建立/etc/named.conf,但是在/etc/,目录下查找不到),我们复制样例文件:

对named.conf 文件进行修改,修改的内容(只列出被修改的行和内容):



3、文件named.conf 中的全局设置
配置文件named.conf 中的options 字段定义了BIND 服务器的全局设置属性:

4、根区域设置及根区域文件
根区域是互联网中所有域名的开始,使用句点(. )表示,缓存服务器只能够访问DNS 根服务器才能提供正常的域名解析服务。因此在缓存域名服务器的配置文件中包括根区域的配置信息:
由于named.conf 中没有设置具体区域,运行时需要加载named.rfc1912.zones 文件中的区域设置,所以我们查看此文件中的根区域配置信息。

type 设置hint 表示该区域的类型为根区域;file 设置的是根区域文件的名称和位置,即在BIND 服务器的工作目录“/var/named/”中。
根区域文件中包括了全世界范围内互联网使用的所有DNS 根服务器的地址解析信息,是由互联网管理机构统一发布,因此不需要用户更改其中的内容。
