DNS

DNS 系列本系列主要讲述有关Windows 下DNS 服务器的相关知识点,由于DNS 和AD 结合异常紧密,所以与AD 相关的DNS 应用和知识将在AD 专栏中讲述。此为本系列的第一节。我想没有什

DNS 系列

本系列主要讲述有关Windows 下DNS 服务器的相关知识点,由于DNS 和AD 结合异常紧密,所以与AD 相关的DNS 应用和知识将在AD 专栏中讲述。

此为本系列的第一节。

我想没有什么人在访问的时候会直接输入IP 地址,取而代之的是输入一串简单,容易记忆的字符,有数字的,如www.163.com ;也有纯字母的,如www.qq.com ,只要网络连接没问题,就可以直接访问对应的网站。但在理论上访问网址依然需要用到IP 地址的,只是字符转换为IP 地址这部分工作由DNS 服务器代劳了而已,而这个转换过程对于客户端来讲是完全透明的。

在讲述DNS 之前,先让我们来认识一下几个与域名相关的概念。

什么是域名?

域名,即DomainName ,准确是说它是由英文字母、阿拉伯数字以及横" -" 组成的一串字符,且英文不区分大小写,通常一个域名可以分为主体和后缀2部分,各部分由一个小点. 隔开。以常见的163.com 为例,163是这个域名的主体,而后面的.com 表示这个域名属于国际域名,常见的还有.net 、.cn 等等。这两部分构成了是一个完整的域名。有朋友可能问了,那我们常见的www.163.com 又是什么呢。从整体上来说,这是一个URL 地址,而非域名。细化来讲,WWW 是一个主机名称,在这台主机上运行着网页服务器,当客户端输入www.163.com 时,系统会在某个系统上查询这个地址所对应的IP 地址,如果一切正常则会很快返回这台主机的IP 地址,之后浏览器会向这个地址发起HTTP 请求进行网页解析。在此过程中提到的“某个系统”就是我们要讲述的DNS 系统。

什么是DNS ?

通常,我们定位一台公网计算机主要依靠的是IP 地址,倘若这台计算机正在对外提供网页浏览服务,IP 为1.1.1.1。访问时可以直接输入IP 地址即可,因为这个地址简单好记,但网络上的计算机千千万,IP 地址又是一串无序的数字,单凭人脑去记忆这些数字,显然不现实,所以急需一种途径或者方法将我们从数字苦海中解救出来,经过不断地探索,人们终于找到一个很好的解决办法,那就是通过将一些字符进行有的规律组合和拼凑,使其可以表达出一定的含义,然后将这些名词与服务器的IP 地址对应起来,我们就可以把这些组合成为域名。当然域名的定义规范远远要比这里谈到的严谨和规范。那这部分工作或是功能由谁来实现呢,这就引出了我们本系列的主角:DNS 。在今天看来,DNS 系统工作的正常与否,直接关系到整个互联网系统的安全和稳定。

DNS即域名解析系统。前面已经提到,它可以将域名转换成IP 地址,反之亦可。当然这也是DNS 最基本的功能之一。

谈到DNS 就不能不说起域名,概念可以参考上面一小节,那这两者是怎样结合在一起的呢?我们先来看一下INTERNET 域名的整体结构。

在整个INTERNET 网络中,域名占据着极其重要的地位,因为它有着一个很严谨的金字塔似的层级结构模式,通常又被称为命名空间。我们在阅读DNS 相关资料时,会经常碰到“命名空间”这个词。那如何去理解呢。来看下面一张图,借此来帮助大家更好的理解命名空间的概念。

,

从这个图中,我们可以大致了解域名体系的逻辑结构。在最顶层的是根域名,图中用一个. 表示,在此基础上延伸出其他所有的域名,严格意义上来说,我们在书写域名的时候都应该在最后带上一个. ,这样才是最完整的域名表达方式,但这样明显过于繁琐,况且按照书写反而无法正常访问网页。

比如访问网易我输入www.163.com ,来看一下访问结果:

,

可以看到结果是“拒绝访问”,有的地址加上一个. 再访问会自动跳转。

所以这里只是想让大家对此有更多了解。 在根域名下就是顶级域名,大致分为三大类,图中每一类都举出了3例子作为代表,其实还也很多。顶级域名位于根域名之下,而在顶级域名下又有二级域名,我们以.com 为例,请大家留意,这里说的是.com ,而不是com ,单独的com 是没有意义的,这里我省略了最后的一个点。在.com 下我列出了三个常见的二级名称,比如.163、.QQ 等,以此类推,后面可能会有很多层这样的结构。但在名称上并非是三级、四级等,而统一称为子域。下一层为上一层的子域,在.163.com 这个域名层级关系中,news 就是这与域名的子域名,同理v 就是.news.163.com 的子域,以此类推。但我们在书写的时候是从最低一级的写起,直至顶级域名,而DNS 查询和解析顺序正好和这个相反。

从图中我们可以看到,整个域名体系结构是非常有层次关系和等级限定的,每一个域名都有类似这样的结构,那么广泛的看,整个域名体系就是一个连续的、层级关系的逻辑的立体名称空间。知道这个概念对我们理解域名以及后面的DNS 都非常有帮助。大家应该有这样的反应,域名是以特定名称为起点的、立体的、名字空间。是一个很连续的结果,在这里我不厌其烦的把这些关键字眼重复再重复,目的就是为了加深大家的印象。

原本在这一节要讲解DNS 的安装,但我发现其实在此之前,还需要向大家说明几个基本的概念,首先说到的是DNS 后缀。

在之前的基础章节里,我们知道了一个域名可以分为主体和后缀2部分,这里的主机我们可以理解为一台主机或者一个网络终端的名称,后缀则直接决定这个域名的性质、类别等一些重要特征。我们这里会从单机入手,理解一下单击里的DNS 后缀到底是怎么一回事,把这个弄清楚了,再去理解与AD 相结合的DNS 才会更容易。那单机的DNS 后缀在那里找呢?我们一起来看一下:

为了方便实验,我做了一个拓扑图,如下:

上图已经将两者的关系表述清楚了,XP2现在还是一台普通的客户端,为加入域。 我们打开XP2的属性,在里面找一下它的DNS 后缀,如下图:

,

从上图我们可以看到,默认情况下 计算机的DNS 后缀的空白的。但请大家注意,图中的是主DNS 后缀,为什么是主呢?难道DNS 后缀还有主次之分??其实这样的,这个里面的主DNS 后缀是针对这台主机而言的,相比之下,每一个网卡也可以设置自己的DNS 后缀,而那些设置准确来讲是绑定某一网卡上的连接DNS 后缀,这部分内容在后面还会详解。

我们已经知道主DNS 后缀的位置了,那这里的设置到底有什么作用呢?其实是这样的,我们可以利用一个命令来解答这个疑惑。PING 命令的作用我想大家都很清楚,也是作为网络连通性诊断的一个必备工具,当我们用ping 命令去ping 一台主机或一个地址会发生什么呢?

我们运行ping xp2命令,看一下效果:

,

从上图得知,XP2自动获取的IP 是192.168.1.2,请大家注意第三个红框,

XP2 [192.168.1.2] ,前者是主机名,后者是对应的IP 地址。这个解析过程是由系统本身完成的,我们也可以ping 一下它的NETBIOS 名称,如下图:

可以看到,最终结果都是一样的,但不同的显示对象有区别。这里存在着一个解析的过程,单单ping 本机比较难分析这个解析过程,我们任意ping 一个名称,然后用wireshark 来监视这个过程,应该会有更多的发现。

运行ping XP3命令 ,看一下结果:

显然,结果是不通的,通过wireshark 的分析我们可以看到在这个过程中,系统会利用NBNS 服务来查找是否有名为XP3的主机,如果没有则返回一个信息,通知查询者未能找到主机XP3。此时,主DNS 后缀依然为空,我们是否可以这样试想,如果主DNS 后缀不为空,在查询时候某台主机时,是否会自动将这个后缀添加到主机名之后呢,比如 后缀为 ms.local,在查询XP3时,返回的结果就是ping xp3.ms.local 呢?我们来试一下,首先将主DNS 后缀改成 ms.local并重启。结果如下图:

,

我们可以看到,计算机名也变成了xp2.ms.local 了,这个有点类似域内的计算机名称的样式。我们现在再来ping 一下XP3,结果如下图:

可以看到,在图形界面下仅仅提示找不到XP3这个主机,而从抓包的情况来分析更明显些,我们可以很清楚的看到当提交此请求后,系统会向已配置的DNS 服务器(DHCP 自动配置)发起解析请求,来查询是否存在XP3.ms.local 这条记录,经过多次查询后返回的结果如图,结果是未能找到XP3主机。从这个实例我们可以看出,在名称解析时,系统会自动加上之前已设置的主DNS 后缀,然后参与解析。当在指定的DNS 服务器上找不到记录时就会返回相应的信息。反之,如果没有配置DNS 服务器地址时,系统只能通过NBNS 服务器利用广播方式进行查找了,具体如何查找可以参考之前的WINS 系列。

我们再结合现有的AD 域来看,在DC 上,肯定是无法解析到XP3这台主机,XP2也一样,因为在DC 的DNS 上没有XP2和XP3的记录信息。如果我们将XP2的主DNS 后缀改成和AD 域一样,那么当在XP2上ping win2k3时,一定会成功,因为之前讨论过,系统会自动将其转换为 win2k3.os.ad ,因为在192.168.1.1这台服务器上有这条记录,所以可以ping 同,反之在DC 上ping XP2则不行。因为在DNS 上并不存在xp2.os.ad 的记录,之所以这个过程无法交互,是因为我们并非按照常规方法将XP2注册到DNS 服务器上,而仅仅是在本机上修改了主DNS 后缀,从某种程度上来说这仅仅是个假象而已。如果按照一般加域的步骤,相互通讯是没有问题的,这个我们后面会讨论到

上节介绍了计算机主DNS 后缀的一些内容,今天这一节将继续延伸此话题,同时也谈到与之相关的其他概念。

,

本节的试验环境是一台DC 和一台客户机相连,很简单的拓扑环境。如下图:

在WINS 系列中我们说到,当利用ping 程序访问某一名称时,如果本机设置了WINS 服务器,则会向此服务器发出解析请求,反之,系统将会利用NBNS 服务通过广播的方式来解析此名称。如下图:

但是,当我们ping 一个类似域名结构的名称时候,比如 ping sss.com ,此时系统会分两种情况进行处理。

当本机网卡属性中未设置DNS 服务器时,系统依旧会利用NBNS 服务进行解析此名称,尽管这个名称看上去具有域名的结构特征。如下图:

从上图可以看到,NBNS 服务试图在解析sss.com 这个名词,而不是一个域名,因为对于NBNS 服务而言,只有名称的概念,而不存在域名的概念。

当我们为其配置一个合法且有效的DNS 服务器地址之后呢?测试结果如下图:

,

刚开始,系统会向DNS 服务器发出标准的A 记录查询请求,看是否存在sss.com 这样的A 记录,经过几次尝试以失败告终,第四个数据包是由DNS 服务器发给客户机的,所传达的信息是“Server Failure”。可见在这台DNS 的区域里并不存在sss.com 这样的A 记录。 那这些内容和我们今天要讲的多种DNS 后缀有什么关联呢?其实是这样的,当我们为系统配置了多种的DNS 后缀后,再去ping 某一名称时,系统会自动在该名称后添加上已设定的DNS 后缀,并对此名称进行解析,此时才是真正的对一个域名进行解析,其中包括了主体名称和设定的DNS 后缀。

如何设置这些DNS 后缀呢?在Windows 系统中,有很多地方可以设置。下面我们一一进行描述。

设定主DNS 后缀

从名称上应该可以看出,这个DNS 后缀的优先级是很高的,因为这个设置是针对整个系统的,这一部分在上一节中也有提及。我们再来回顾一下设置的过程。按照下图找到如下位置:

,

这里就是设置本机的主DNS 后缀的地方。我们在此输入ms.local 并重启。 下面是设置的结果:

,

大家可以看到,此时计算机全名已经修改成了xp2.ms.local ,其中XP2是原来的计算机名称。

此时,我们任意ping 一个名称,比如 kkk,看一下与之前的有什么变化。如下图:

从上图可以看到,在解析kkk 这个名称的时候会自动在后面加上ms.local 的主DNS 后缀进行解析,类似的,我们输入另一个名称比如mmm ,也会得到同样的结果。也就是说,当我们输入一个单标签的名称时,系统会自动检查此时是否设置有主DNS 后缀,如果有,则自动加上并组合成【单名称 . 主DNS 后缀】这样的形式参与解析。

还有一点要提一下,如果我们把主DNS 后缀改成很DC 域名一样,那么ping win2k3时就可以自动替换成 ping win2k3.os.ad 了,因为DNS 里有这条记录,所以可以顺ping 通了。 而类似这样的单标签的名称,系统统称之为【不合格的名称】。

除了在这里设置,还有其他地方吗? 当然有的。打开网卡属性并点选【高级】,在【DNS 】选项卡中就可以看到了,如下图:

在上图中,我们可以看到系统提供了另外三个地方可以进行DNS 后缀的设置,以此来解决单标签解析,也就是解析不合格名称的问题。

标签: