第13章 域名服务器DNS

第13章 域名服务器DNS13.1 域名服务概述许多应用层软件经常直接使用域名系统DNS(Domain Name System),但计算机的用户只是间接使用域名系统。标识互联网上的主机通常采用唯一

第13章 域名服务器DNS

13.1 域名服务概述

许多应用层软件经常直接使用域名系统DNS(Domain Name System),但计算机的用户只是间接使用域名系统。标识互联网上的主机通常采用唯一的IP 地址,IPV4协议采用32位二进制表示,IPV6协议采用128位二进制表示,用户连接到互联网上的某个主机时,显然不愿意记住这么长的IP 地址,使用名字的原因是名字比数字更容易记忆。虽然大多数人能够记住常用的电话号码、地址以及其它相关特征数据,但是即使是点分十进制IP 地址(如:61.144.43.225)也并不太容易记住IP 地址,即使只是常用的也不是一件容易的事。相反大家愿意使用某种有具体含义的、易于记忆的名字,如www.pyp.edu.cn ,因此产生了域名的概念。

早期的互联网络规模很小,整个网络中只存在很少的计算机,那个时候使用hosts 文件来保存所有主机名字和相应的IP 地址。用户输入一个主机名字后计算机通过查找这个hosts 文件很快就能找到将这个主机名字对应的机器的IP 地址。

理论上来说可以只使用一台计算机作为域名服务器,再这台计算机中装入因特网上所有的主机名,并回答整个互联网对所有对IP 地址的查询任务,但是随着因特网规模的扩大,这样的域名服务器肯定会因过负荷而无法提供正常的服务,并且一旦这台域名服务器出现故障,整个因特网就会因为无法解析域名而导致整个网络的瘫痪。

从1983年开始,因特网开始采用以层次结构的命名树作为主机的名字,并使用分布式数据库作为域名数据库存储机制的分布式域名系统(DNS )。因特网的域名系统DNS 被设计成为一个联机分布式数据库系统,并采用客户/服务器(C/S)结构。DNS 使大多数名字都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。由于DNS 是分布式系统,即使某一个域名服务器出现故障,仅仅只影响其管辖的域的域名解析,即使是这样我们也可以通过备用域服务器来提供更加可靠的域名解析服务。

13.1.1 HOSTS 文件

早些时候的计算机网络规模非常的小,整个网络只有少数互联的计算机,所有的主机名和 IP 地址的映像关系都保存在一个名为 HOSTS 的数据文件(文本文件)中。通过查找这个数据库文件,可以将一个主机名解析到一个 IP 地址上。

使用 HOSTS 文件进行 IP 地址解析,用户可以自己编辑该文件增加特定的域名和主机IP 之间的映射,对于小型的网络来说使用hosts 文件管理域名和主机IP 之间的映射关系是可以接受的,但是 HOSTS 的缺点是不能存储大量的主机名与 lP 地址之间的映像关系(映射表),因为不能用作大型的网络的域名解析服务。

,

13.1.2 DNS 的功能

域名解析服务DNS 是在HOSTS 的基础上发展起来的,域名解析服务使用具有层次名字空间,该模型使用分布式数据库代替了集中管理的HOSTS 文件系统。DNS 允许用户在查找网络资源时使用用户友好的域名取代IP 地址,域名相对过去的HOSTS 文件中的主机名由于采用层次结构,更方便记忆和管理。当DNS 客户端向DNS 服务器发出IP 地址的查询请求时,DNS 服务器通过主机名称解析,根据域名在DNS 数据库中寻找到对应的IP 地址。例如,新浪网站的IP 地址是202.106.184.200,几乎所有浏览该网站的用户都是使用www.sina.com.cn ,而并非使用IP 地址来访问。域名一般有具体的含义便于记忆,如 www.sina.com.cn 。域名一般不会改变,但是IP 地址可能会由于某种原因而改变,比方说主机移动另一个网络中时IP 地址必须跟着改变,当域名对应的IP 地址改变时,只需要修改这种映射关系就可以定位到新的主机。

DNS 的工作原理如图6-2所示。

DNS 的工作任务是在计算机主机名与 IP 地址之间进行映像。DNS 工作在 OSI 参考模型的应用层,使用 TCP 和 UDP 作为传输协议。

当需要给某人打电话时,可能知道这个人的姓名,而不知道他的电话号码。这时,可通过查看电话号簿查得他的电话号码,从而与他进行通话。由此可看出,电话号码簿的功能便是建立姓名与电话号码之间的映射关系,DNS 的功能类似于电话薄。当客户端向 DNS 服务器提出访问请求(如:www.sina.com.cn ),DNS 服务器在收到客户端的请求后在数据库中查找相对的 IP 地址(202.106.184.200 ),并作出反应。如果该 DNS 服务器无法提供对应的 IP 地址,它就转给下一个DNS 服务器继续完成查找,直到找到或者报告主机不存在之类的错误信息。

13.1.3 域名结构

早期的因特网使用名字简短的非等级的名字空间系统。随着互联网上用户数增加,非

,

等级的名字空间来很难管理一个很大的而且是经常变化的名字集合。因此出现采用了层次树状结构的DNS (Domain Name Service,域名服务),域名服务类似全球邮政系统和电信系统。例如一个完整的电话号码0086-020-12345678,这个电话号码包含3个层次,其中国际区号0086代表中国,国内地区号020代表广州,最后的12345678表示一个具体的用户的电话号码。同样,Internet 网络也采用类似的命名方法,这样任何一个连接在Internet 网络上的主机或路由器,都有可以分配一个唯一的域名。

域名只是个逻辑上的概念,并不反映计算机所在的物理地点。一个域还可以继续划分为子域,如二级域、三级域等。

域名的结构由若干个分量组成,各分量之间用小数点隔开;如:www.sina.com.cn ,其中cn 为代表中国的顶级域名,com 为cn 下的二级域名表示一般的工商、金融等企业,sina 为三级域名,表示Sina 中国这个企业,www 是该企业下属的一台具体的主机。每一级的域名都由长度不超过 63 个并且不区分大小写字母的字符英文字母和数字组成,级别最低的域名写在最左边(如www 主机),而级别最高的顶级域名则写在最右边(如cn 表示中国的顶级域名)。完整的域名不超过 255 个字符。

域名系统对下级域名的数量和含义没有明确的规定。各级域名由其上一级的域名管理机构管理。为了便于使用变长的域名和使用有助记忆的字符串。在IPV4中 IP 地址是定长的32位二进制数字,IPV6中IP 地址是定长的128 位二进制数字。域名中的“点”和点分十进制 IP 地址(如192.168.0.1)中的“点”并无一一对应的关系。点分十进制 IP 地址中一定是包含三个“点”,但域名中“点”的数目则不一定正好是三个。

13.1.4 域名解析

名字到域名的解析是由若干个域名服务器程序协同工作完成的。域名服务器程序运行在专用的网络节点上,人们也常把运行域名服务系统的的主机称为域名服务器。

域名的解析过程如下:当某一个应用进程需要将主机名解析为IP 地址时,该应用进程成为域名系统DNS 的一个客户,并将待解析的域名放在DNS 请求报文中,以UDP 数据报(使用UPD 协议是因为不需要像TCP 协议一样建立连接有更高的通信效率)方式发给本地域名服务器。本地的域名服务器在查找域名数据库后,将对应的IP 地址放在回答报文中返回。应用进程获得目的主机的IP 地址后即可进行通信。若本地域名服务器找不到请求的域名数据,此域名服务器就暂时成为DNS 中的一个客户,并向其它域名服务器发出查询请求,其它服务器如果找到则将查询的IP 数据附加到数据包中发送给该服务器,该服务器在转发给最初的付出请求的客户,这种过程直至某一台DNS 服务器能够相应的数据或者到某一个限还找不能找到就报告错误。

当一个公司向InterNIC 注册了域名时,InterNIC 会把相应信息放进根服务器上,让其在整个互联网上传播。DNS 服务器周期性的和其它DNS 服务器上的DNS 数据库同步,并检查其它服务器上的新表项,如发现新的表项就更新自己的DNS 数据库,这个过程通常称为传播。一个新注册的域名大约能够在3~4天内完成整个传播过程。

顶级域为一个注册的域名授权给一个特定DNS 服务器作为其基本DNS 服务器。这样

,

减轻了顶级域控制器为每一个Internet 上的DNS 请求作处理的负担。域和区经常成对出现,一个区在名字世界中是一个基本域,它授权给另一个DNS 服务器以便管理。sina.com.cn 是一个区,但www.sina.com.cn 实际上是那个区内的一个子域。管理的责任授权给一个基本的DNS 服务器,Sina 中国站点的基本DNS 服务器是taurus.sina.com.cn ,其IP 地址是61.172.201.226,因为指定taurus 为Sina 中国站点的基本DNS ,那么它也是sina.com.cn 的基本区。这个服务器的指定所有者是root @sina.com.cn,在SOA 中为root. taurus.sina.com.cn 。

常用的顶级域(Top Level Domain,TLD )有COM (公司企业)、EDU (教育机构)、GOV (政府部门)、MIL (军事部门)、NET (网络服务机构)和ORG (非盈利性组织)。每个国家有自己的由双字母组成的顶级域,如CN 表示中国,UK 表示英国,JP 表示日本。如www.sina.com.cn 就是CN 顶级域名下的一个域名。

在顶级域名下注册的二级域名均由该拥有该顶级域名的组织或者国家自行确定。我国将二级域名划分为“行政区域名”和“类别域名”两大类。如行政区域名“.gd.cn ”表示广东,类别区域名“.edu.cn ”表示教育机构,

我国在二级域名.edu 下申请注册三级域名则由中国教育和科研计算机网网络中心负责。在二级域名.edu 之外的其它二级域名下申请注册三级域名的,则应向中国互联网网络信息中心 CNNIC 申请。

13.2 安装和卸载BIND

DNS 服务在Linux 中的安装软件叫做BIND (Berkely Internet Name Daemon),一般的Linux 发行盘中都有该软件,在Redhat 9发行盘中有关于BIND 服务的安装包,在安装过程中可以选择是否安装BIND 服务,Redhat9附带的BIND 的版本为9.2.1-16。

13.2.1 查看BIND 安装信息

使用rpm -qa命令可以查看BIND 服务以及相关RPM 包的是否安装以及软件的版本。

,

[root@localhost RPMS]$rpm -qa bind

bind-9.2.1-16

[root@localhost root]# rpm -qa caching-nameserver

caching-nameserver-7.2-7

[root@localhost root]# rpm -qa bind-utils

bind-utils-9.2.1-16

[root@localhost root]# rpm -qa redhat-config-bind

redhat-config-bind-1.9.0-13

13.2.2 卸载BIND 服务

使用rpm -e bind卸载BIND 服务,由于有其它包依赖该包,所以不能卸载。

[root@localhost root]$rpm -e bind

error: Failed dependencies:

bind is needed by (installed) redhat-config-bind-1.9.0-13

bind is needed by (installed) caching-nameserver-7.2-7

bind >= 9.1.3-0.rc2.3 is needed by (installed) caching-nameserver-7.2-7

[root@localhost root]$

从以上的提示可以看出redhat-config-bind-1.9.0-13,caching-nameserver-7.2-7两个包依

赖BIND 服务,所以可以先尝试卸载这两个包。

1、卸载caching-nameserver 服务。

[root@localhost root]$rpm -e caching-nameserver

确认该包已经删除

[root@localhost root]$rpm -qa caching-nameserver

2、删除redhat-config-bind 包,该包是用于在X-Window 下配置Bind 的一个可视工具。

[root@localhost root]$rpm -e redhat-config-bind

[root@localhost root]$rpm -qa redhat-config-bind

3、删除Bind 服务。

[root@localhost root]$rpm -e bind

warning: /etc/rndc.key saved as /etc/rndc.key.rpmsave 13.2.3 安装BIND 服务

1、安装Bind (在第一张CD 里)

[root@localhost root]$mount /dev/cdrom /mnt/cdrom

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@localhost root]$cd /mnt/cdrom/RedHat/RPMS/

,

root@localhost RPMS]$ $rpm -ivh bind-9.2.1-16.i386.rpm

warning: bind-9.2.1-16.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e

Preparing... ########################################### [100]

1:bind ########################################### [100]

2、接下来安装bind-utils 工具和caching-nameserver 服务

因为一般情况下都需要用到这些工具和服务,如果想在X-Window 下配置BIND 还需

要安装redhat-config-bind 工具。安装bind-utils ,这次由于该工具可能已经安装,使用-U 参

数升级安装。

[root@localhost RPMS]$ rpm -Uvh bind-utils-9.2.1-16.i386.rpm

warning: bind-utils-9.2.1-16.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e

Preparing... ########################################### [100]

package bind-utils-9.2.1-16 is already installed

3、安装caching-nameserver 服务(在第二张CD 里)

[root@localhost RPMS]$rpm -ivh caching-nameserver-7.2-7.noarch.rpm

warning: caching-nameserver-7.2-7.noarch.rpm: V3 DSA signature: NOKEY, key ID d42a60e Preparing... ########################################### [100]

1:caching-nameserver ########################################### [100]

4、安装redhat-config-bind 配置工具

[root@localhost RPMS]$rpm -ivh redhat-config-bind-1.9.0-13.noarch.rpm

warning: redhat-config-bind-1.9.0-13.noarch.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### [100]

1:redhat-config-bind ########################################### [100]

13.3 配置DNS 服务器

DNS 服务使用53号端口。与DNS 配置相关的配置文件主要有:/etc/hosts,/etc/host.conf,/etc/resolv.conf,/etc/named.boot,/etc/named.conf。/var/named目录下还包含DNS 区域和反

向区域的一些配置文件:

[root@localhost root]# cd /var/named/

[root@localhost named]# ll

total 12

-rw-r--r-- 1 named named 195 Jan 25 2003 localhost.zone

-rw-r--r-- 1 named named 2499 Jan 25 2003 named.ca

-rw-r--r-- 1 named named 433 Jan 25 2003 named.local

,

/etc/hosts文件

机器启动时,在查询DNS 数据库之前,机器需要检查一些主机到IP 地址的匹配,这些匹配信息保存在/etc/hosts文件中,在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析某个主机的别名的IP 地址,/etc/hosts文件的内容的范例: 1 # Do not remove the following line, or various programs

2 # that require network functionality will fail.

3 127.0.0.1 localhost.localdomain localhost

该文件中只保行对localhost 主机的信息,它代表计算机本身。

文件的格式:IP 地址 主机名称(域名) 主机别名

/etc/host.conf文件

/etc/host.conf文件确定计算或其域名的顺序,一般情况下内容如下,应该首先查找hosts 文件在通过BIND 服务查找DNS 数据库。/etc/host.conf文件的内容如下:

order hosts,bind

创建DNS 服务器的过程包含以下几个步骤:

标识DNS 服务器

创建DNS 配置文件(/etc/named.conf,/var/named/*)

启动named 服务守护进程

配置 DNS 服务器必须使用静态IP 地址,下面假设安装DNS 服务器的的IP 地址为192.168.10.2,配置的域名为,网络拓扑结构如图所示。

,

Windows Xp192.168.10.4

Redhat 9 Linux

13.3.1创建/etc/named.conf文件

一般情况下安装好BIND 服务之后会创建/etc/named.conf和/etc/named.custom文件,/etc/named.custom文件用于保存一些不会改改的资料,在/etc/named.conf文件中通过include "/etc/named.custom"语句引用该文件。

修改/etc/named.conf文件如下,增加了一个正向区域“skydev.net ”,区域文件为“/var/named.skydev.net.zone ”。

1 controls {

2 inet 127.0.0.1 allow { localhost; } keys { rndckey; };

3 };

4

5 include "/etc/named.custom";

6 include "/etc/rndc.key";

7

8 zone "0.0.127.in-addr.arpa" {

9 type master;

10 file "0.0.127.in-addr.arpa.zone";

11 };

12 zone "10.168.192.in-addr.arpa" {

13 type master;

14 file "10.168.192.in-addr.arpa.zone";

15 };

,

16

17 zone "localhost" {

18 type master;

19 file "localhost.zone";

20 };

21 zone "skydev.net" {

22 type master;

23 file "skydev.net.zone";

24 };

文件内容解释:

第8-10行:定义localhost 的反向区域

第17-20行:定义localhost 正向区域

第12-14行:定义skydev.net 区域的反向区域

第21-23行:定义正向区域“skydev.net ”,区域文件为“skydev.net.zone ”,文件的路径在

“/etc/named.custom”文件中指定。

/etc/named.custom文件

1 ## named.custom - custom configuration for bind

2 #

3 # Any changes not currently supported by redhat-config-bind should be put 4 # in this file.

5 #

6

7 zone "." {

8 type hint;

9 file "named.ca";

10 };

11

12 options {

13 directory "/var/named/";

14 };

文件解释:

第12-13行:定义缺省的区域文件的存放目录为“/etc/named/”。

13.3.2 /var/named/skydev.net.zone文件

前面在/etc/named.conf文件中定义了一个正向区域“skyde.net ”,该区域的文件

,

“/etc/named/skydev.net.zone”,该文件定义了域名和IP 地址之间的映射关系。在该文件中我们定义了2个域名:www.skydev.net 对应的IP 地址为192.168.20.2和ftp.skydev.net 对应的IP 地址为192.168.10.3,并且指定localhost 文域名服务器。

[root@localhost root]# cat -n /var/named/skydev.net.zone

1

2 $TTL 86400

3 @ IN SOA @ root.localhost (

4 2006012803 ; serial

5 28800 ; refresh

6 7200 ; retry

7 604800 ; expire

8 86400 ; ttl

9 )

10

11

12 IN NS ns.skydev.net.

13

14 @ IN MX 1 mail.skydev.net

15

16 www IN A 192.168.10.2

17 ftp IN A 192.168.10.3

18 mail IN A 192.168.10.4

19 @ IN A 192.168.10.2

20 ns IN A 192.168.10.2

文件内容说明:

第3-8行关于SOA 记录的说明:

标签: