dhcp讲解

  • 格式:doc
  • 大小:7.17 MB
  • 文档页数:83

从本节开始,我们将开始讨论有关DHCP服务器的相关问题,从易到难一步步理解DHCP服务。

还是一样,在第一节里,首先将介绍有关DHCP的一些基本知识点。

对于一个小型网络来说,为每个客户端分配IP地址是件很轻松的事,无法就是打开网络属性,在合适的地方填入阿拉伯数字即可。

但如果网络规模很大、客户端很多,或者需要对分配下去的IP地址进行统一规划和管理,显然这些需求通过手工配置IP地址是无法实现的。

这样我就需要一个工具来帮我们打点这些繁杂的IP,也就是我们要谈的DHCP。

从字面理解,DHCP是Dynamic Host Configuration Protocol的缩写,即动态主机配置协议。

请注意这里的一个关键字,Dynamic即动态,意为在这个工具管理下的客户端的IP地址并非固定不变的,而是会根据具体的配置而动态变更。

其实,不仅仅是IP,还有很多网络参数都可以通过DHCP进行分配,比如dns 地址、wins地址等等。

说到dhcp就需要提一下bootp协议,这个是用于早期的无盘工作站网络中的协议,DHCP在此基础上进行了修改和加强,使之更易于应用和管理。

作为一个基础性的服务,DHCP广泛被部署在企业各种环境中,无论是独立的工作组环境还是集中式的域环境,几乎都少不了DHCP的身影,所以理解并掌握DHCP就显得很重要了。

本系列旨在为大家较详尽地介绍DHCP的诸多知识点、以及与之相关的重要应用,使得大家对DHCP能有一个全面的认识,无法做到面面俱到,只求用自己的切身体会和实际经历来帮助大家更好的掌握DHCP服务和WINS服务类似,DHCP大体上也由两部分组成,DHCP服务器和DHCP客户端。

那么相对的,也会有非DHCP客户端。

今天这几节先着重讨论在没有DHCP环境下,客户端是如何获取IP地址的。

说到获取IP地址,我们就有必要先到网络连接的属性里去看一下,那里看是IP地址是根据地哦!打开一个网络连接的属性,如下图:在【常规】选项中,当我们勾选“自动获得...”也就是图中标记为蓝色的选项,那么系统就会认为用户会通过一个外部程序获取IP地址、子网掩码以及DNS等网络信息。

如果此时您就一口咬定这里所说的“外部程序”就是DHCP服务器的话,不能说错,但至少不完全。

勾选这两项后,意为着客户机获取IP的来源有2个,第一个来源是大家熟知的DHCP服务器,第二个来源是PPP点对点协议。

第一个不用怎么解释,可以很容易想到是DHCP,后面还会详细讲解。

第二个呢?不急,先说点别的。

我们现在家庭普遍使用的网络接入方式,当然肯定不是古老的56k小猫拨号了,而是DSL专线,这其中又以ADSL占大多数。

这种网络接入方式以普通电话线路做为传输介质,只要在线路两端加装ADSL设备,通过一定的连接方式就可以上网了。

OK,问题来了。

我们知道,要想上网,必须要有一个IP地址,那么类似这样的电话拨号上网,IP地址从何而来?就是通过自动获取得到的,如何获取??客户端会创建一个拨号程序,然后输入合法有效的用户名和密码然后拨号,服务端接收到拨号请求并初始化连接后,就开始验证用户的身份,一旦身份验证成功,就会从IP地址池中分配一个IP给用户,这样我们就可以上网了。

这么一系列的通讯过程就是建立在PPP协议之上,但并非原生的PPP协议,而是经过一些修改的PPPOE协议,即PPP Over Ethernet。

回到这个话题上来,当我们选中【自动获得IP地址和DNS服务器地址】后,就会从电信端的拨号访问服务器中获取一个IP地址,严格来说是电信端分配给用户的。

显然,大家可以知道这里并非由DHCP服务器分配的地址,只是分配的机制类似而已。

但如果客户端并非直接拨号上网,而是通过路由器代为拨号,此时客户端的IP还是来源于DHCP服务器,只是这个服务器内建在路由器内而已。

原理都是一样的。

说了那么一通,是不是有点晕了。

不要紧,稍后我会做个小节,其实非常简单。

我们继续看2个红色的框框,我们可以在其中手工设置IP地址和DNS 服务器。

但,有个很蹊跷的地方,不知道大家注意没有。

就是IP地址和DNS并不是成对的。

怎么讲呢?我们来做个小测试。

当我们选中【使用下面的IP地址】时,在DNS设置区域会自动勾选【使用下面的DNS服务器地址】。

如下图:因为我们已经有自动获取转为手动,同时为了满足客户端的解析请求,就需要设置一个DNS地址。

因为DNS会随着IP地址一起被指派的,如果关闭了自动获取IP,显然客户端无法自动获取到DNS地址,只能手工指定。

但反之,我们再选择【自动获得IP地址】时,DNS并没有随之变为【自动获得DNS服务器地址】,而还是停留在刚才的状态,此时我们也可以选择【自动获得DNS服务器地址】。

如下图:为什么会这样???到此有人估计要说我无聊了。

但我觉得微软这样设计一定有他的道理。

个人觉得可能的原因如下:1、早期dhcp服务器无支持分配DNS的功能,为了保证最大兼容,在自动获取IP的同时,客户还可以手工设置DNS地址。

2、是为APIPA而准备的第一个好理解写,第二个等讲到APIPA的时候就好理解了。

什么是APIPA??我们先看网络属性的【备用配置】选项卡。

如下图:在这里有一个【自动专用IP地址】,我感觉写成【自动获取专用IP地址】这样似乎更容易理解些。

这些就是自动获取IP的三种情况,DHCP、PPP和APIPA。

那到底何为APIPA呢?上节中,我们提到了APIPA,这节里我们将详细讲解有关APIPA的相关知识点。

当我们将网卡属性设置为自动获取后,如果客户端在一定时间内无法找到并从DHCP服务器或PPP协议获取到IP地址,那么系统就自动启用一种备选方案,也就是使用APIPA给客户端临时分配一个169.254.X.X的IP地址,具体范围是169.254.0.1—169.254.255.254,子网掩码均为255.255.0.0。

这里的APIPA为Automatic Private IP Addressing的缩写,即为自动专用IP寻址,当系统接入网络后,且长时间无法获取到IP地址,系统为了减少性能消耗(尽管这种消耗微乎其微),就会采取这种措施来避免永不休止的查找。

这是一种应急的机制,作用并不是简单的分配一个IP,请注意这个名称最后的单词,IP Addressing,而并非IP Address。

那这又有什么区别呢?稍后就会讲到。

我们先来看一个例子这里我模拟了一个客户端无法联系到DHCP服务器的场景,此时客户端获取到了一个169.254.X.X的IP地址。

如下图:这里请注意两个地方:1、我使用的查询命令是ipconfig /all。

大家都知道用这个命令可以把所有的重要参数都查询出来,包括IP地址、掩码、网关、DNS、MAC等等。

但在上图中只有IP地址、掩码和MAC,并没有网关、DNS。

原因是因为APIPA分配的网络信息只包含IP地址和子网掩码,比武其他。

2、请注意IP地址前的名称是“Autoconfiguration IP Address”,而不是正常情况下的“IP Address”。

从这点上我们也可以区别IP地址的来源。

还记得刚才那个问题吗?为什么DNS可以独立配置呢?其实也是出于这个的考虑。

我们可以为APIPA手工设置一个DNS地址。

还是刚才的环境,我们为这个地址169.254.155.85配置一个DNS,1.1.1.1 。

如下图:通过 ipconfig /all 查询。

如下图:可以看到,我们为这个地址设置的DNS生效了。

那我们是否可以自己定义在这个IP呢?当然可以。

在【备用配置】选项卡里,我们还可以手工设置IP地址。

如下图:别的信息我没有填写,其实都是一样的。

通过这样的设置,其目的在于当DHCP 服务器不可用,系统会将此地址分配给该网卡,而不会使用169.254这样的地址。

其实这个功能非常好用。

如何使用?先来看一个场景,大家也一定都遇到过。

有这么一个客户,在家时笔记本连接路由器并通过ADSL上网,为网卡设置了一个固定IP地址192.168.1.1。

在公司,内网部署了DHCP,此时会从DHCP服务器获取一个10.0.0.10的IP,这样有两套不同的网络配置,如何做到两边都能顺利使用呢?通常的解决办法,或是手动修改地址,或是通过第三方软件辅助切换。

但如果将192.168.1.1的IP设置在上图的选项中,那么在家的时候由于没有DHCP,则会自动使用这个地址,在公司,这个地址会被忽略掉,因为存在可用的DHCP服务器,客户端可以直接获取IP地址。

这样一来用户就不用来回切换了,也不必使用第三方软件,基本可以做到无缝连接。

有机会的话,还是希望大家可以试一下这个方法。

我们再回到APIPA上来。

对于默认分配的169.254这样的IP,和我们手工设置的有什么区别呢?大家千万不要看到网卡连接图标上有一个感叹号就觉得网络肯定有什么问题。

其实不然,我们来做个测试就知道了。

这样有两台主机,主机名分别是win2k3和XP2,都接在一个交换机上。

由于网内没有DHCP服务器,自然都是通过APIPA获取IP地址。

分别查看一下两台主机上的IP地址。

如下图:Win2k3:XP2:在XP2上PING一下Win2k3。

如下图:网络访问测试。

如下图:访问Win2k3的C盘。

如下图:可见,尽管是169.254之类的IP,但其实和我们手动设置的没有什么区别,只是似乎在一个局域网内这样的客户端的最大数量有一个限制,好像是要少于25台,这个我没有测试过,还没有这样的环境,所以无法得知这个限制是否存在。

我们也可以在注册表中将APIPA这个功能禁止掉,可以针对某个网卡,也可以针对全部的网卡。

打开注册表后,请定位到以下位置:HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\这个下面会对应当前网卡的标识符,在相应的标记符下新增一个名为IPAutoconfigurationEnabled的DWORD值,并将其值设为十六进制的0即可。

修改完成后重启才能生效。

如果想禁用全部网卡的这个功能,则在interfaces下增加相同的键值。

关于禁用APIPA的方法算是个补充知识,稍作了解即可。

还记得之前提到过有关IP Addressing的问题吗?为什么这里是addressing而不是address呢?当默认使用APIPA获取一个169.254的地址后,系统并非就这样一直使用这个地址,而是会每隔一段时间就会向网内发送DHCP DISCOVER数据包,这个间隔时间大约是5分钟。

在此期间,系统还会随机进行DHCP服务器的查询,如果查询到DHCP并获得了一个IP,那么就会将169.254的IP释放掉。

从这里我们可以看到,APIPA提供的是一套冗余IP配置和寻址的结合方案,显然这里使用addressing比address意义更广泛。