您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页建立DNS服务器

建立DNS服务器

来源:华佗养生网
3.1 建立DNS服务器

 工作情境

人们使用互联网,通常采用域名,而计算机又好使用IP地址,域名如何实现与IP地址的对应关系?实现的方式就是DNS服务器。

从这一章节开始,将介绍Linux系统强大的网络功能,如Web服务器、FTP服务器和邮件服务器。为了实现真实的网络情境,首先要建立DNS服务器,以便后续章节的实例可以采用域名访问,达到实际应用的模式。

 学习目标

通过本章节的学习,能够理解Internet上DNS域名空间结构和DNS服务器的工作模式。通过实例的学习,能够建立一个DNS服务器,并能为局域网工作站提供域名解析服务。

 考核评价

模拟一个企业机构的网络环境,能够建立一个DNS服务器,为局域网内部的Web服务器、FTP服务器、邮件服务器以及其他工作站提供域名服务。

能够熟练的进行DNS客户端的配置,不论是Linux系统,还是Windows系统为客户端工作站。

网络体系中使用的是IP地址,IPV4地址是4个点分十进制数,难于记忆应用。因此,人们采用了域

名系统DNS(Domain Name System),DNS是Internet和Intranet中重要的网络服务,它是一种组织成域层次结构的计算机和网络服务命名系统。

通过DNS服务可以将域名解析为IP地址,从而使得人们能通过简单好记的域名来代替IP地址访问网络。

3.8.1 DNS的域名服务

在引入DNS(Domain Name System,域名系统)之前,Linux系统是将容易记忆的域名映射到IP地址并将它保存在一个共享的静态文件hosts(/etc/hosts)中,再由它来实现网络中域名的管理。但随着网络的庞大,特别是当Internet上的计算机数量迅速增加时,通过一个中心授权机构为所有Internet主机管理一个主机文件的工作将无法进行。

开发DNS,通过DNS将存储在数据库中的域名数据分布在不同的服务器上,就可以减轻对任何一台服务器的负载,并且提供了以区域为基础的对域名系统的分布式管理能力。 1. DNS域名系统的简介

网络中为了区别各个主机,为每台主机分配一个唯一的IP地址。但这些数字难于记忆,所以就采用“域名”的方式来取代这些数字。

不过最终还是必须将域名转换为对应的IP地址才能访问主机。通过建立DNS数据库,记录主机名称与IP地址的对应关系,驻留在服务器端,为客户端的主机提供IP地址解析服务,这就是域名服务所提供的域名解析。当某台主机要与其他主机通信时,就可以利用主机名称向DNS服务器查询该主机的IP地址。

整个DNS域名系统由以下4个部分组成。

(1) DNS域名空间

DNS是基于客户/服务器模型设计的。本质上,整个域名系统以一个的分布式数据库的方式工作。DNS域名空间的分层结构,如同一颗倒立的树,层次结构非常清晰。

目前由InterNIC管理全世界的 IP 地址,在 InterNIC 之下的 DNS 结构分为多个Domain,其中 root domain (根域)下的七个 top-level domain(顶级域) 都归 InterNIC 管理。top-level domain 可以再细分为 second-level domain (二级域),而 second-level domain 又可以分成多级的 subdomain (子域)如 \"example、www\" ,在最下面一层被称为 hostname(主机名称)如 \"host-a\" ,一般用户使用完整的名称来表示 (FQDN全部有资格的域名),如 \"host-a.example.Microsoft.com\"。

在Internet的DNS域名空间中,域是其层次结构的基本单位,任何一个域最多属于一个上级域,但可以有多个或没有下级域。在同一个域下不能有相同的域名或主机名,但在不同的域中则可以有相同的域名或主机名。

图3.8.1 DNS域名空间的层次结构

根域(Root Domain)

在DNS域名空间中,根域只有一个,它没有上级域,以圆点\".\"来表示。全世界的IP地址和DNS域名空间都是由位于美国的InterNIC(Internet Network Information Center,因特息管理中心)负责管理或进行授权管理的。目前全世界有13台根域服务器,这些根域服务器也位于美国,并由InterNIC管理。

但是,在根域服务器中并没有保存全世界的所有Internet网址,其中只保存着顶级域的“DNS服务器--IP地址”的对应数据。

 顶级域(top-level domain,TLD)

在根域之下的第一级域便是顶级域,它以根域为上级域,其数目有限且不能轻易变动。顶级域是由InterNIC统一管理的。在FQDN中,各级域之间都以原点\".\"分隔,顶级域位于最右边。  常用的地理域和机构域

 地理域

.AU澳大利亚 .RU俄联邦 .FR法国 .DE德国 .JP日本 .KR韩国 .TW省 .CN中国 .CA加

拿大 .IT意大利 .CH瑞士 .SG新加坡 .UK英国 .US美国  机构域

.com商业组织 .edu教育组织 .net网络支持组织 .mil美事机构 .gov美国机构 .org非商业性组织 .int国际组织

各级子域(Subdomain)

在DNS域名空间中,除了根域和顶级域之外,其它域都称为子域。 反向域(in-addr.arpa)

为了完成反向域解析过程,需要使用到另外一个概念,即反向域。

(2) 资源记录

将DNS域名映射到特定类型的资源信息,以便在名称注册和解析时使用。 (3) DNS服务器

提供存储和应答资源记录的名称查询服务。 (4) DNS客户端

用来查询DNS服务器,将域名称解析为查询中指定的资源记录类型。 2. DNS查询解析

当DNS客户端需要查询所使用的名称时,它会查询DNS服务器来解析该名称。

DNS查询以各种不同的方式进行解析。客户端可以使用从先前的查询获得的缓存信息就地应答查询;DNS服务器也可使用其自身的资源记录信息缓存来应答查询;DNS服务器还可以代表请求客户端查询或联系其他DNS服务器,以便完全解析该名称,并将应答返回至客户端,这个过程称为递归。

此外,客户端本身也可尝试联系其他的DNS服务器来解析名称。然后根据来自DNS服务器的参,使用其他的查询,该过程称作迭代。

总之,DNS查询过程按两部分进行:

本地解析——名称查询从客户端计算机开始,并传送给本机的DNS客户服务程序进行解析; 当客户端提出解析请求时,首先将请求传送至DNS客户服务,.以便使用本地缓存信息进行解析,如

果可以解析所要查询的名称,则DNS客户服务应答该查询,该请求处理过程结束。

查询DNS服务器——如果不能在本机解析查询,可根据设定的查询DNS服务器来解析名称。 当客户端请求无法在本地解析时,将请求发送至DNS服务器。DNS服务器接收到查询请求时,首先

检查它能否在服务器的本地配置区域中获取资源记录信息做出应答,如果查询的名称与本地区域信息中的相应资源记录匹配,则使用该信息来解析查询的名称,服务器做出应答,此次查询完成。如果区域信息中没有查询的名称,则服务器检查它能否通过来自先前查询的本地缓存信息来解析该名称。如果从中发现了匹配的信息,则服务器使用该信息应答查询,此次查询完成。如果无论从缓存还是从区域信息,查询的名称在首选服务器中都未发现匹配的应答,那么查询过程可继续进行,使用递归来完全解析名称。 例如,如果要递归查询certer.example.com的地址,首选DNS服务器通过分析完全合格的域名,向顶层域com查询,而com的DNS服务器与example.com服务器联系以获得更进一步的地址,这样循环查询直到获得所需要的结果,并一级级向上返回查询结果,最终完成查询工作。

需要注意的是,为了让DNS服务可以正确运行递归查询,需要有一些必要的信息,该信息通常以根目录的形式来提供,借助使用根目录提示寻找根域服务器,DNS服务器可以完成递归查询。

如果客户端申请使用递归过程,但在DNS服务器上禁用递归或查询DNS服务器时客户端没有申请使用递归,则使用迭代的方式查询。

例如,要迭代查询user.certer.example.com的地址,首先DNS服务器在本地查询不到客户端请求的信息时,就会以DNS客户端的身份向其他配置的DNS服务器继续进行查询,以便解析该名称。在大多数情况下,可能会将搜索一直扩展到Internet上的根域服务器,但根域服务器并不会对该请求进行完整的应答,它只会返回example.com服务器的IP地址,这时DNS服务就根据该信息向example.com服务器查询,由example.com服务器完成对user.certer.example.com域名的解析后,再将结果返回DNS服务器。

对于大多数的迭代查询而言,如果它的主DNS不能解析该名称,那么客户端会使用本地配置的DNS服务器列表,在整个DNS名称空间中联系其他名称服务器。 3. 如何使用DNS

在网络中开始使用DNS之前,必须先规划DNS域名称空间。名称空间规划包括确定要如何使用DNS命名和通过使用DNS要达到什么目的等。

首先选择和注册一个可用于维护Internet上公司的一个顶级或二级域名作为父DNS域名,如teach.com。

其次,将父域名称与公司内使用的位置或公司名称组合起来形成其他子域名,如mail.teach.com。 但必须注意,在选择域名时必须符合RCF 1123中的规定:所有大写字母(A~Z)、小写字母(a~z)、数字(0~9)和连字符(-)。

除了需要内部DNS名称空间支持,许多网络还需要外部DNS名称支持,例如在Internet上使用的支持。DNS服务器提供了集成和管理分离名称空间的方法,在这些名称空间中,外部和内部DNS名称都在网络上解析。

如果决定将名称服务DNS的使用在专用名称空间内,对于如何设计和实现它则不存在。例如,可以选择任何DNS命名标准配置DNS服务器,使之作为网络DNS分布式设计的有效根服务器,或形成一个自身包含DNS域树的结构和层次。但如果需要提供对外部DNS名称空间的引用或Internet上的整个DNS服务时,则需要考虑专用和外部名称空间之间的兼容性。 4. Linux系统的hosts文件说明

hosts文件是Linux系统中一个负责IP地址与域名快速解析的文件,以ASCII格式保存在“/etc”目录下,文件名为“hosts”。hosts文件包含了IP地址和主机名之间的映射,还包括主机名的别名。在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址,否则就需要使用DNS服务程序来解决。通常可以将常用的域名和IP地址映射加入到hosts文件中,实现快速方便的访问。

hosts文件的格式如下:IP 地址 名和 IP地址记录。

主机名/域名

[实例3.8.1]在主机名为RHEL5的/etc/hosts文件中添加本机域名、IP地址和另一个工作站fedora的域

3.8.2 建立DNS服务器

Linux下架设DNS服务器通常是使用Bind软件来实现,Bind是一款实现DNS服务器的开放源码软件。已经成为世界上使用最为广泛的DNS服务器软件,目前Internet上绝大多数的DNS服务器都是用Bind来架设的。以下以一个实例,详细说明创建一个DNS服务器的过程。

[实例3.8.2]假定一个教学机构,建立一个DNS服务器,使用了域名:teach.com,在企业内部局域网内使用。要求局域网内的工作站都能使用域名访问这些服务器。该机构内有几台服务器,其IP地址和域名分别如下:

文件服务器: 邮件服务器: Web服务器: DNS服务器:

IP地址 IP地址 IP地址 IP地址

192.168.1.253 192.168.1.252 192.168.1.251 192.168.1.254

域名 ftp.teach.com 域名 mail.teach.com 域名 www.teach.com 域名 dns.teach.com 要建立这样一个DNS服务器,为这个机构提供DNS服务,按以下步骤进行安装和测试。 1. DNS服务的安装

Red Hat Enterprise Linux 安装程序默认没有安装DNS服务。可以先验证是否已经安装,如果未安装,就安装Bind软件包。

2. 安装chroot软件包

为什么要安装chroot软件包呢?由于早期Linux服务都是以root权限启动和运行的,黑客利用服务的漏洞入侵系统,能获得root级别的权限,从而控制整个系统。

为了减缓这种攻击所带来的负面影响,现在服务器软件通常设计为以root权限启动,然后服务器进程自行放弃root,再以某个低权限的系统账号来运行进程。这种方式的好处在于该服务被攻击者利用漏洞入侵时,由于进程权限很低,攻击者得到的访问权限又是基于这个较低权限的,因此对系统造成的危害比以前减轻了许多。

chroot是Change Root的缩写,它可以改变程序运行时所参考的“/”根目录位置,即将某个特定的子目录作为程序的虚拟“/”根目录。chroot对程序运行时可以使用的系统资源、用户权限和所在目录进行严格控制,程序只在这个虚拟的根目录具有权限,一旦跳出该目录就无任何权限了。

使用了chroot后,就算黑客入侵了某个服务,由于具有的权限相当有限,因此最多也只能破坏该服务的虚拟根目录,不会威胁到整个服务器的安全。对DNS服务而言,有经验的网络管理员都会对其使用chroot技术来增强bind的安全。

在安装光盘的Server目录下找到bind-chroot的RPM安装包文件bind-chroot-9.3.4-10.P1.el5.i386.rpm,使用下面的命令安装chroot。

使用了chroot后,由于Bind程序的虚拟根目录是/var/named/chroot/,因此,所有的DNS服务器配置文件、区域数据文件和配置文件内的语句,都是相对这个虚拟根目录而言,如/etc/named.conf,其真正的路径是/var/named/chroot/etc/named.conf ; 而目录/var/named/,其真正的路径是/var/named/chroot/var/named/。 3. 配置DNS

(1) DNS主配置文件

DNS的主配置文件为/var/named/chroot/etc/named.conf。安装DNS服务后,安装程序不会自动生成

这个配置文件,用户需要自行创建或将/usr/share/doc/bind-9.3.4/sample/etc/named.conf范本文件复制到/var/named/chroot/etc/named.conf,该文件只包括Bind的基本配置,不包含任何DNS区域数据,需对默认文件做相应的配置后,才能使DNS服务按照要求运行起来。

named.conf文件格式有如下规则: 配置文件中语句必须以分号结尾;  需用花括号将容器指令(如options)中的配置语句包含起来;  注释符号可以使用c语言中的符号对 “/*”和“*/”、c++语言的“//”和Shell脚本的“#”。 依据实例3.8.2修改后的/var/named/chroot/etc/named.conf内容如下: options {

directory \"/var/named\";

dump-file \"/var/named/data/cache_dump.db\"; statistics-file \"/var/named/data/named_stats.txt\"; /*

* If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-source * directive below. Previous versions of BIND always asked * questions using port 53, but BIND 8.1 uses an unprivileged * port by default. */

// query-source address * port 53; };

controls {

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

zone \".\" IN {

type hint;

file \"named.ca\"; };

zone \"teach.com\" { type master;

file \"teach.com.zone\"; allow-transfer { 192.168.1.254; }; };

zone \"1.168.192.in-addr.arpa\" { type master;

file \"192.168.1.arpa\"; allow-transfer { 192.168.1.254; }; };

include \"/etc/rndc.key\";

(2) 根服务器信息文件named.ca

/var/named/named.ca是一个非常重要的文件,该文件包含了Internet的根服务器名字和地址,Bind接到客户端主机的查询请求时,如果在Cache中找不到相应的数据,就会通过根服务器进行逐级查询。例如,当服务器收到来自DNS客户机查询www.sina.com域名的请求时,如果Cache没有相应的数据,就会

向Internet的根服务器请求,然后根服务器将查询交给负责域.com的权威名称服务器,域.com权威名称服务器再将请求交给负责域sina.com的权威名称服务器进行查询。

由于named.ca文件经常会随着根服务器的变化而发生变化,应从国际互联网络信息中心 (InterNIC) 的 FTP服务器下载最新的版本,下载地址为: ftp://ftp.rs.internic.net/domain/named.root。下载完后,应将该文件改名为named.ca,并复制到“/var/named/chroot/var/named/”目录下。然后,可以用命

令:chown named:named named.ca命令将named.ca文件的用户和组改为named。一个named.ca的示例文件如下:

; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the \"cache . \" ; configuration file of BIND domain name servers). ;

; This file is made available by InterNIC ; under anonymous FTP as

; file /domain/named.root ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ;

; last update: Dec 12, 2008

; related version of root zone: 2008121200 ;

; formerly NS.INTERNIC.NET

;

. 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4

A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30 ;

; 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 ;

; FORMERLY NS.NASA.GOV

;

. 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ;

; FORMERLY NS.ISC.ORG ;

. 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241

F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2F::F ;

; FORMERLY NS.NIC.DDN.MIL ;

. 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ;

; FORMERLY AOS.ARL.ARMY.MIL

;

. 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53

H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803F:235 ;

; FORMERLY NIC.NORDU.NET ;

. 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 ;

; OPERATED BY VERISIGN, INC. ;

. 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:C27::2:30 ;

; OPERATED BY RIPE NCC ;

. 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FD::1

;

; OPERATED BY ICANN ;

. 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42

L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::42 ;

; OPERATED BY WIDE ;

. 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 M.ROOT-SERVERS.NET. 3600000 AAAA 2001:DC3::35 ; End of File

(3) 正向解析区域文件

一个区域内的所有数据(包括主机名和对应IP地址、刷新间隔和过期时间等)必须存放在DNS服务器内,而用来存放这些数据的文件就被称为区域文件(区域数据文件使用“;”符号注释)。DNS服务器的区域数据文件一般存放在/var/named/chroot/var/named/目录下,一台DNS服务器内可以存放多个区域文件,

同一个区域文件也可以存放在多台DNS服务器中。

下面是实例中的区域文件:/var/named/chroot/var/named/teach.com.zone的内容。 $ttl 38400

teach.com. IN SOA dns.teach.com. admin.teach.com. ( 2005090509 10800 3600 604800 38400 )

teach.com. IN NS dns.teach.com. dns IN A 192.168.1.254 RHEL5.teach.com. IN A 192.168.1.254 ftp.teach.com. IN A 192.168.1.253 mail.teach.com. IN A 192.168.1.252 www.teach.com. IN A 192.168.1.251 fedora.teach.com. IN A 192.168.1.10 WinXP.teach.com. IN A 192.168.1.20 (4) 反向解析区域文件

反向解析区域文件的结构和格式与区域文件类似,只不过它的主要内容是建立IP地址映射到DNS域名的指针PTR资源记录。

下面是一个在/var/named/chroot/var/named/192.168.1.arpa文件定义反向解析区域的例子。 $ttl 36000

1.168.192.in-addr.arpa. IN SOA dns.teach.com. admin.teach.com. ( 2005090503 10800 3600 604800 36000 )

1.168.192.in-addr.arpa. IN NS dns.teach.com.

254.1.168.192.in-addr.arpa. IN PTR dns.teach.com. 253.1.168.192.in-addr.arpa. IN PTR ftp.teach.com. 252.1.168.192.in-addr.arpa. IN PTR mail.teach.com. 251.1.168.192.in-addr.arpa. IN PTR www.teach.com. 254.1.168.192.in-addr.arpa. IN PTR RHEL5.teach.com. 10.1.168.192.in-addr.arpa. IN PTR fedora.teach.com. 20.1.168.192.in-addr.arpa. IN PTR WinXP.teach.com. 4. 域名服务器的测试

完成域名服务器DNS的配置后,应该对其进行测试。 (1) 测试前的准备

启动DNS服务,并验证“named”是否运行

修改/etc/resolv.conf文件,添加域名解析服务器的IP地址 修改/etc/resolv.conf内容为:

修改后,最好重新启动Linux服务器。

(2) 使用nslookup程序测试

 正向解析

反向解析

3.8.3 启动和停止DNS服务的命令

1. 启动DNS服务

/etc/init.d/named start

2. 停止DNS服务

/etc/init.d/named stop

3. 重新启动DNS服务

/etc/init.d/named restart

4. 自动启动DNS服务

运行ntsysv找到named服务进行确定

3.8.4 DNS客户端的配置

1. Linux中DNS客户端的配置

在Linux系统的工作站中,编辑/etc/resolv.conf文件,添加语句:

nameserver DNS服务器IP地址

例如,在实例3.8.2配置完成后,可在该服务器的同一网络中启动一台Linux系统的工作站,如fedora主机,进行如下的操作:编辑/etc/resolv.conf后,用nslookup命令进行测试或用ping命令进行应用。

2. Windows操作系统客户端的配置

在Windows系统的工作站使用DNS服务,只需在“网络邻居”中“本地连接”的“Internet协议(TCP/IP)属性对话框中,将DNS服务器的IP地址填上。

可以使用nslookup命令或ping命令进行测试验证。以下操作先查看本机的IP地址,然后用nslookup命令和ping命令进行验证。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务