DHCP 是 Dynamic Host Configuration Protocol(动态主机分配协议)缩写,它的前身是 BOOTP。BOOTP 原本是用于无磁盘主机连接的网络上面的:网络主机使用 BOOT ROM 而不是磁盘起动并连接上网络,BOOTP 则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬件地址,而 且,与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏 “动态性” ,若在有限的 IP 资源环境中,BOOTP 的一对一对应会造成非常可观的浪费。
DHCP 可以说是 BOOTP 的增强版本,它分为两个部份:一个是服务器端,而另一个是客户端。所有的 IP 网络设定数据都由 DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP环境数据。比较起 BOOTP ,DHCP 透过 “租约” 的概念,有效且动态的分配客户端的 TCP/IP 设定,而且,作为兼容考虑,DHCP 也完全照顾了 BOOTP Client 的需求。
DHCP 的分配形式
首先,必须至少有一台 DHCP 工作在网络上面,它会监听网络的 DHCP 请求,并与客户端搓商 TCP/IP 的设定环境。它提供两种 IP 定位方式:
Automatic Allocation
自动分配,其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端租用到 IP 地址之后,就永远使用这个地址。
Dynamic Allocation
动态分配,当 DHCP 第一次从 HDCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的 IP 地址。
动态分配显然比自动分配更加灵活,尤其是当您的实际 IP 地址不足的时候,例如:您是一家 ISP ,只能提供 200 个IP地址用来给拨接客户,但并不意味着您的客户最多只能有 200 个。因为要知道,您的客户们不可能全部同一时间上网的,除了他们各自的行为习惯的不同,也有可能是电话线路的限制。这样,您就可以将这 200 个地址,轮流的租用给拨接上来的客户使用了。这也是为什么当您查看 IP 地址的时候,会因每次拨接而不同的原因了(除非您申请的是一个固定 IP ,通常的 ISP 都可以满足这样的要求,这或许要另外收费)。当然,ISP 不一定使用 DHCP 来分配地址,但这个概念和使用 IP Pool 的原理是一样的。
DHCP 除了能动态的设定 IP 地址之外,还可以将一些 IP 保留下来给一些特殊用途的机器使用,它可以按照硬件地址来固定的分配 IP 地址,这样可以给您更大的设计空间。同时,DHCP 还可以帮客户端指定 router、netmask、DNS Server、WINS Server、等等项目,您在客户端上面,除了将 DHCP 选项打勾之外,几乎无需做任何的 IP 环境设定。
DHCP 的工作原理
根据客户端是否第一次登录网络,DHCP 的工作形式会有所不同。
第一次登录的时候:
寻找 Server。当 DHCP 客户端第一次登录网络的时候,也就是客户发现本机上没有任何 IP 数据设定,它会向网络发出一个 DHCP DISCOVER 封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为 0.0.0.0 ,而目的地址则为 255.255.255.255 ,然后再附上 DHCP discover 的信息,向网络进行广播。
在 Windows 的预设情形下,DHCP discover 的等待时间预设为 1 秒,也就是当客户端将第一个 DHCP discover 封包送出去之后,在 1 秒之内没有得到响应的话,就会进行第二次 DHCP discover 广播。若一直得不到响应的情况下,客户端一共会有四次 DHCP discover 广播(包括第一次在内),除了第一次会等待 1 秒之外,其余三次的等待时间分别是 9、13、16 秒。如果都没有得到 DHCP 服务器的响应,客户端则会显示错误信息,宣告 DHCP discover 的失败。之后,基于使用者的选择,系统会继续在 5 分钟之后再重复一次 DHCP discover 的过程。
提供 IP 租用地址。当 DHCP 服务器监听到客户端发出的 DHCP discover 广播后,它会从那些还没有租出的地址范围内,选择最前面的空置 IP ,连同其它 TCP/IP 设定,响应给客户端一个 DHCP OFFER 封包。
由于客户端在开始的时候还没有 IP 地址,所以在其 DHCP discover 封包内会带有其 MAC 地址信息,并且有一个 XID 编号来辨别该封包,DHCP 服务器响应的 DHCP offer 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定,DHCP offer 封包会包含一个租约期限的信息。
接受 IP 租约。如果客户端收到网络上多台 DHCP 服务器的响应,只会挑选其中一个 DHCP offer 而已(通常是最先抵达的那个),并且会向网络发送一个DHCP request广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 地址。
同时,客户端还会向网络发送一个 ARP 封包,查询网络上面有没有其它机器使用该 IP 地址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLINE 封包给 DHCP 服务器,拒绝接受其 DHCP offer ,并重新发送 DHCP discover 信息。
事实上,并不是所有 DHCP 客户端都会无条件接受 DHCP 服务器的 offer ,尤其这些主机安装有其它 TCP/IP 相关的客户软件。客户端也可以用 DHCP request 向服务器提出 DHCP 选择,而这些选择会以不同的号码填写在 DHCP Option Field 里面:
换一句话说,在 DHCP 服务器上面的设定,未必是客户端全都接受,客户端可以保留自己的一些 TCP/IP 设定。而主动权永远在客户端这边。
租约确认。当 DHCP 服务器接收到客户端的 DHCP request 之后,会向客户端发出一个 DHCPACK 响应,以确认 IP 租约的正式生效,也就结束了一个完整的 DHCP 工作过程。
DHCP 发放流程
第一次登录之后:
一旦 DHCP 客户端成功地从服务器哪里取得 DHCP 租约之后,除非其租约已经失效并且 IP 地址也重新设定回 0.0.0.0 ,否则就无需再发送 DHCP discover 信息了,而会直接使用已经租用到的 IP 地址向之前之 DHCP 服务器发出 DHCP request 信息,DHCP 服务器会尽量让客户端使用原来的 IP 地址,如果没问题的话,直接响应 DHCPack 来确认则可。如果该地址已经失效或已经被其它机器使用了,服务器则会响应一个 DHCPNACK 封包给客户端,要求其从新执行 DHCP discover。
至于 IP 的租约期限却是非常考究的,并非如我们租房子那样简单, 以 NT 为例子:DHCP 工作站除了在开机的时候发出 DHCP request 请求之外,在租约期限一半的时候也会发出 DHCP request ,如果此时得不到 DHCP 服务器的确认的话,工作站还可以继续使用该 IP ;然后在剩下的租约期限的再一半的时候(即租约的75%),还得不到确认的话,那么工作站就不能拥有这个 IP 了。至于为什么不是到租约期限完全结束才放弃 IP 呢?,对不起,小弟也是不学无术之人,没有去深究了,只知道要回答 MCSE 题目的时候,您一定要记得 NT 是这么工作的就是了。
要是您想退租,可以随时送出 DHCPLEREASE 命令解约,就算您的租约在前一秒钟才获得的。
跨网络的 DHCP 运作
从前面描述的过程中,我们不难发现:DHCDISCOVER 是以广播方式进行的,其情形只能在同一网络之内进行,因为 router 是不会将广播传送出去的。但如果 DHCP 服务器安设在其它的网络上面呢?由于 DHCP 客户端还没有 IP 环境设定,所以也不知道 Router 地址,而且有些 Router 也不会将 DHCP 广播封包传递出去,因此这情形下 DHCP DISCOVER 是永远没办法抵达 DHCP 服务器那端的,当然也不会发生 OFFER 及其它动作了。要解决这个问题,我们可以用 DHCP Agent (或 DHCP Proxy )主机来接管客户的 DHCP 请求,然后将此请求传递给真正的 DHCP 服务器,然后将服务器的回复传给客户。这里,Proxy 主机必须自己具有路由能力,且能将双方的封包互传对方。
若不使用 Proxy,您也可以在每一个网络之中安装 DHCP 服务器,但这样的话,一来设备成本会增加,而且,管理上面也比较分散。当然喽,如果在一个十分大型的网络中,这样的均衡式架构还是可取的。端视您的实际情况而定了。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP具有以下功能:
DHCP Client以广播的方式发出DHCP Discover报文。
所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。
DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server。DHCP Server在发出此报文后会存在一个已分配IP地址的纪录。
DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。
DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。
DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。
DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。
DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。
在使用租期超过50%时刻处,DHCP Client会以单播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址。
在使用租期超过87.5%时刻处,DHCP Client会以广播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址,直到IP地址使用租期到期时,DHCP Client才会向DHCP Server发送DHCP Release报文来释放这个IP地址,并开始新的IP地址申请过程。
需要说明的是:DHCP客户端可以接收到多个DHCP服务器的DHCPOFFER数据包,然后可能接受任何一个DHCPOFFER数据包,但客户端通常只接受收到的第一个DHCPOFFER数据包。另外,DHCP服务器DHCPOFFER中指定 [1] 的地址不一定为最终分配的地址,通常情况下,DHCP服务器会保留该地址直到客户端发出正式请求。
正式请求DHCP服务器分配地址DHCPREQUEST采用广播包,是为了让其它所有发送DHCPOFFER数据包的DHCP服务器也能够接收到该数据包,然后释放已经OFFER(预分配)给客户端的IP地址。
如果发送给DHCP客户端的地址已经被其他DHCP客户端使用,客户端会向服务器发送DHCPDECLINE信息包拒绝接受已经分配的地址信息。
在协商过程中,如果DHCP客户端发送的REQUEST消息中的地址信息不正确,如客户端已经迁移到新的子网或者租约已经过期,DHCP服务器会发送DHCPNAK消息给DHCP客户 端,让客户端重新发起地址请求过程。
DHCP服务
安装DHCP服务
在Windows Server 2003系统中默认没有安装DHCP服务,因此需要安装DHCP服务。
第1步 单击“开始”按钮,在“控制面板”中双击“添加或删除程序”图标,在打开的窗口左侧单击“添加/删除
相关图片
相关图片
Windows组件”按钮,打开“Windows组件向导”对话框。
第2步 在“组件”列表中找到并勾选“网络服务”复选框,然后单击“详细信息”按钮,打开“网络服务”对话框。接着在“网络服务的子组件”列表中勾选“动态主机配置协议(DHCP)”复选框,依次单击“确定→下一步”按钮开始配置和安装DHCP服务。最后单击“完成”按钮完成安装。
提示:如果是在Active Directory(活动目录)域中部署DHCP服务器,还需要进行授权才能使DHCP服务器生效。本例的网络基于工作组管理模式,因此无需进行授权操作即可进行创建IP作用域的操作。
DHCP服务器
并不是安装了DHCP功能后就能直接使用,还必须进行授权操作,未经授权操作的服务器无法提供DHCP服务。对DHCP服务器授权操作的过程如下:
设置DHCP客户端 安装了DHCP服务并创建了IP作用域后, 要想使用DHCP方式为客户端电脑分配IP地址,除了网络中有一台DHCP服务器外,还要求客户端电脑应该具备自动向DHCP服务器获取IP地址的能力,这些客户端电脑就被称作DHCP客户端。
因此我们对一台运行Windows XP的客户端电脑面前进行了如下设置:在桌面上右击“网上邻居”图标,执行“属性”命令。在打开的“网络连接”窗口中右击“本地连接”图标并执行“属性”,打开“本地连接 属性”对话框。然后双击“Internet协议(TCP/IP)”选项,点选“自动获得IP地址”单选框,并依次单击“确定”按钮。
提示:默认情况下端电脑使用的都是自动获取IP地址的方式,一般无需进行修改,只需检查一下就行了。
至此,DHCP服务器端和客户端已经全部设置完成了。在DHCP服务器正常运行的情况下,首次开机的客户端会自动获取一个IP地址并拥有八天的使用期限。
创建用户
创建新用户或供应商选项类启动 DHCP 管理器。单击控制台树中的适用的 DHCP服务器分支。右击在的服务器,然后单击创建新的用户类的”定义用户类“,或者单击“定义供应商类”创建一个新的供应商类。单击”添加”。在”新的类”的对话框键入一个描述性的标识名称,为新的选项,在”显示名称”框。还可能会将其他信息添加到”说明”框。键入数据以匹配的类 ID 由ID或ASCII下的 DHCP客户端提供 DHCP服务器服务使用。若要为十六进制字节数字值输入数据,请单击文本框的左侧。若要输入信息交换 (ASCII)文本字符值为美国标准码数据,单击文本框的右侧。单击”确定”,然后单击”关闭”。使用新的类 ID 配置 DHCP 作用域在 DHCP 管理器,双击相应的 DHCP 作用域。右键单击”作用域选项”,然后单击”配置选项”。单击”高级”,单击以选中复选框或要使用新的供应商或用户类在功能旁边的框。单击”确定”。为客户端计算机设置指定的 DHCP 类 ID 字符串连接到基于 Windows 2000 的 DHCP服务器的客户端计算机使用下面的命令可以设置指定的 DHCP类别ID 字符串:ipconfig / setclassid adapter_name class_id
是例如配置名为”Local Area Connection”的适配器名为”myuserclass 用户类 ID,请在命令提示符下键入 ipconfig / setclassid本地连接myuserclass ,然后按 ENTER 键。
它标识”Local Area Connection”接口接收为”myuserclass”DHCP服务器上配置的 DHCP 选项。
注意:ASCII 中的类 ID 是区分大小写,并必须的匹配在编辑类对话框中输入标识数据的类来创建新的用户或供应商选项类。
DHCP使用情况
什么时候最好使用 DHCP ?
公司内部很多 Laptop计算机使用的场合!因为 Laptop在使用上,当设定为DHCP client 的时候,那么只要它连接上的网域里面有一部可以上网的 DHCP服务器 ,那部Laptop也就可以连接上 Internet 了!
网域内计算机数量相当的多时:另外一个情况就是网域内计算机数量相当庞大时,大到您没有办法一个一个的进行说明来设定他们自己的网络参数,这个时候为了省麻烦,还是架设DHCP 来的方便。
什么情况下不建议使用 DHCP 主机?
Client 在开机的时候会主动的发送讯息给网域上的所有机器,这个时候,如果网域上就是没有DHCP主机呢?那么这部 Client 端计算机会发送四次请求信息,第一次等待时间为 1 秒,其余三次的等待时间分别是 9、13、16 秒。如果还是没有DHCP服务器的响应,那么在5分钟之后,Client端计算机会重复这一动作。
在网域内的计算机,有很多机器其实是做为主机的用途,很少Client 需求,那么似乎就没有必要架设 DHCP。
DHCP跨网运作
DHCP DISCOVER 是以广播方式进行的,其情形只能在同一网段之内进行,因为路由器是不会将二层广播包转发出去的。但如果DHCP 服务器安设在其它的网络上面呢?由于 DHCP 客户端还没有 IP 环境设定,所以也不知道路由器地址,而且有些 Router 也不会将 DHCP 广播封包传递出去,因此这情形下 DHCP DISCOVER 是永远没办法抵达 DHCP 服务器那端的,当然也不会发生 OFFER 及其它动作了。要解决这个问题,我们可以用 DHCP Agent (或 DHCP Proxy )主机来接管客户的 DHCP 请求,然后将此请求传递给真正的 DHCP 服务器,然后将服务器的回复传给客户。这里,Proxy 主机必须自己具有路由能力,且能将双方的封包互传对方。
若不使用 Proxy,也可以在每一个网络之中安装 DHCP 服务器,但这样的话,一来设备成本会增加,而且,管理上面也比较分散。当然,如果在一个十分大型的网络中,这样的均衡式架构还是可取的。 [3]
网络设备
注意:不同的网络设备配置的语法不一样.
要配置DHCP,可以按照下面任务列表进行配置,其中前三个配置任务是必须的。
l 启用DHCP服务器与中继代理(要求)
l DHCP排斥地址配置(要求)
l DHCP地址池配置(要求)
l 配置CLASS(可选)
l 配置绑定数据库保存(可选)
l 手工地址绑定(可选)
l 配置Ping包次数(可选)
l 配置Ping包超时时间(可选)
l 以太网接口DHCP客户端配置(可选)
l PPP封装链路上的DHCP客户端配置(可选)
l FR封装链路上的DHCP客户端配置(可选)
l HDLC封装链路上的DHCP客户端配置(可选)
启用DHCP服务器与中继代理
要启用DHCP服务器、中继代理,全局配置模式中执行以下命令:
R (config)#service dhcp
启用DHCP服务器和DHCP中继代理功能
R (config)#no service dhcp
关闭DHCP服务器和中继代理功能
DHCP排斥地址配置
如果没有特别配置,DHCP服务器会试图将在地址池中定义的所有子网地址分配给DHCP客户端。因此,如果你想保留一些地址不想分配,比如已经分配给服务器或者设备了,你必须明确定义这些地址是不允许分配给客户端的。
要配置哪些地址不能分配给客户端,在全局配置模式中执行以下命令:
R (config)#ip dhcp excluded-address
定义IP地址范围,这些地址DHCP不会分配给客户端
R (config)#no ip dhcp excluded-address
low-ip-address[high-ip-address]
取消配置地址排斥
配置DHCP服务器,一个好的习惯是将所有已明确分配的地址全部不允许DHCP分配,这样可以带来两个好处:1)不会发生地址冲突;2)DHCP分配地址时,减少了检测时间,从而提高DHCP分配效率。
DHCP地址池配置
DHCP的地址分配以及给客户端传送的DHCP各项参数,都需要在DHCP地址池中进行定义。如果没有配置DHCP地址池,即使启用了DHCP服务器,也不能对客户端进行地址分配;但是如果启用了DHCP服务器,不管是否配置了DHCP 地址池,DHCP中继代理的总是起作用的。
如果DHCP请求包中没有DHCP中继代理的IP地址,就分配与接收DHCP请求包接口的IP地址同一子网或网络的地址给客户端。如果没定义这个网段的地址池,地址分配就失败;
如果DHCP请求包中有中继代理的IP地址,就分配与该地址同一子网或网络的地址给客户端。如果没定义这个网段的地址池,地址分配就失败。
要进行DHCP地址池配置,请根据实际的需要执行以下任务,其中前三个任务要求执行:
l 配置地址池并进入其配置模式(要求)
l 配置地址池子网及其掩码(要求)
l 配置客户端缺省网关(要求)
l 配置地址租期(可选)
l 配置客户端的域名(可选)
l 配置域名服务器(可选)
l 配置NetBIOS WINS服务器(可选)
l 配置客户端NetBIOS节点类型(可选)
l 配置DHCP地址池根据Option82分配地址(可选)
配置地址池名并进入其配置模式
要配置地址池名并进入地址池配置模式,在全局配置模式中执行以下命令:
R (config)#ip dhcp pooldhcp-pool
配置地址池名并进入地址池配置模式
地址池的配置模式显示为“R(dhcp-config)#”。
配置客户端启动文件
客户端启动文件是客户端启动时要用到的启动映像文件。启动映像文件通常是DHCP客户端需要下载的操作系统。
要配置客户端的启动文件,在地址池配置模式中执行以下命令:
R (dhcp-config)#bootfilefilename
配置客户端启动文件名
配置客户端缺省网关
配置客户端默认网关,这个将作为服务器分配给客户端的默认网关参数。缺省网关的IP地址必须与DHCP客户端的IP地址在同一网络。
要配置客户端的缺省网关,在地址池配置模式中执行以下命令:
R (dhcp-config)#default-routeraddress[address2…address8]
配置缺省网关
配置地址租期
DHCP服务器给客户端分配的地址,缺省情况下租期为1天。当租期快到时客户端需要请求续租,否则过期后就不能使用该地址。
要配置地址租期,在地址池配置模式中执行以下命令:
R (dhcp-config)#lease{days[hours][minutes] |infinite}
配置地址租期
配置客户端的域名
可以指定客户端的域名,这样当客户端通过主机名访问网络资源时,不完整的主机名会自动加上域名后缀形成完整的主机名。
要配置客户端的域名,在地址池配置模式中执行以下命令:
R (dhcp-config)#domain-namedomain
配置域名
配置域名服务器
当客户端通过主机名访问网络资源时,需要指定DNS服务器进行域名解析。要配置DHCP客户端可使用的域名服务器,在地址池配置模式中执行以下命令:
R (dhcp-config)#dns-serveraddress
[address2…address8]
配置DNS服务器
配置NetBIOS WINS服务器
NetBIOS WINS是微软TCP/IP网络解析NetNBIOS名字到IP地址的一种域名解析服务。WINS服务器是一个运行在Windows NT下的服务器。当WINS服务器启动后,会接收从WINS客户端发送的注册请求,WINS客户端关闭时,会向WINS服务器发送名字释放消息,这样WINS数据库中与网络上可用的计算机就可以保持一致了。
要配置DHCP客户端可使用的NetBIOS WINS服务器,在地址池配置模式中执行以下命令:
R (dhcp-config)#netbios-name-serveraddress[address2…address8]
配置NetBIOS WINS服务器
配置客户端NetBIOS节点类型
微软DHCP客户端NetBIOS节点类型有四种:1)Broadcast,广播型节点,通过广播方式进行NetBIOS名字解析;2)Peer-to-peer,对等型节点,通过直接请求WINS服务器进行NetBIOS名字解析;3)Mixed,混合型节点,先通过广播方式请求名字解析,后通过与WINS服务器连接进行名字解析;4)Hybrid,复合型节点,首先直接请求WINS服务器进行NetBIOS名字解析,如果没有得到应答,就通过广播方式进行NetBIOS名字解析。
缺省情况下,微软操作系统的节点类型为广播型或者复合型。如果没有配置WINS服务器,就为广播型节点;如果配置了WINS服务器,就为复合型节点。
要配置DHCP客户端NetBIOS节点类型,在地址池配置模式中执行以下命令:
R (dhcp-config)#netbios-node-typetype
配置NetBIOS节点类型
配置DHCP地址池的网络号和掩码
进行动态地址绑定的配置,必须配置新建地址池的子网及其掩码,为DHCP服务器提供了一个可分配给客户端的地址空间。除非有地址排斥配置,否则所有地址池中的地址都有可能分配给客户端。DHCP在分配地址池中的地址,是按顺序进行的,如果该地址已经在DHCP绑定表中或者检测到该地址已经在该网段中存在,就检查下一个地址,直到分配一个有效的地址。
要配置地址池子网和掩码,在地址池配置模式中执行以下命令:
R (dhcp-config)#networknetwork-number mask
配置DHCP地址池的网络号和掩码
配置DHCP地址池根据Option82分配地址
通常,DHCP中继代理在转发报文的过程中会添加一个Option82选项用来记录客户端的相关信息(如客户端所处的VLAN、设备槽号、端口号或者用户的1X等级等等),DHCP服务器在收到该报文后可以通过解析Option82信息来根据客户端的具体信息进行地址分配。如对某个VLAN或者某个用户等级的客户端分配某个范围内的IP地址。在需要根据用户的具体网络位置信息(如VLAN、槽号、端口号)来为用户分配特有的IP地址范围或者根据用户的优先级分配特有的(如受限、非受限)IP地址时,可以采用该功能。
每个DHCP地址池可以根据Option82信息进行地址分配,我们把Option82信息进行匹配归类,在DHCP地址池中为这些归类分别指定可以分配的网段范围。这个归类称为CLASS,一个DHCP地址池可以关联多个CLASS,每个CLASS可以指定不同的网段范围。
在地址分配的过程中可以先根据客户端所处的网段确定可以分配的地址池,再根据其Option82信息进一步确定其所属的CLASS,从CLASS对应的网段范围中分配IP地址。当一个请求报文匹配地址池中的多个CLASS时,按照CLASS在地址池中配置的先后顺序从对应的CLASS网段范围中分配地址,如果该CLASS已无可分配地址,则继续从下一个匹配的CLASS网段范围进行分配,依此类推。每个CLASS对应一个网段范围,网段范围必须从低地址到高地址,可以允许多个CLASS之间的网段范围重复。如果指明了地址池关联的CLASS,但对应的网段范围没有配置,则该CLASS默认的网段范围和CLASS所处的地址池的网段范围相同。
要配置地址池关联的CLASS以及CLASS所对应的网段范围,在地址池配置模式中执行以下命令:
R (dhcp-config)#classclass-name
配置关联的CLASS名称,并进入地址池的CLASS配置模式
R(config-dhcp-pool-class)#address rangelow-ip-addresshigh-ip-address
配置对应的网段范围
值得注意的是:
当配置的CLASS在全局CLASS查找不到的情况下,会自动创建一个全局的CLASS;
在地址池中配置关联CLASS与静态手工绑定配置冲突,不可同时配置。
每个地址池下允许配置的CLASS数目最大为5个
配置CLASS
配置CLASS的Option82匹配信息
在全局模式下进入CLASS配置模式后,可以配置每个CLASS对应的具体的Option82匹配信息。一个CLASS可以匹配多个Option82信息,请求报文匹配时只要匹配其中一条信息即认为通过匹配,如果CLASS不配置任何的匹配信息,则认为该CLASS可以匹配任何携带Option82信息的请求报文。请求报文只有匹配了具体的CLASS后,才可从对应的地址池关联的CLASS网段范围中分配地址。
要配置全局的CLASS以及CLASS所对应的匹配Option82信息,在全局配置模式中执行以下命令:
R (config)#ip dhcp classclass-name
配置CLASS名并进入全局CLASS配置模式
R (config-dhcp-class)#relay agent information
进入Option82匹配信息配置模式
R (config-dhcp-class-relayinfo)#relay-information hexaabb.ccdd.eeff…[*]
配置具体的Option82匹配信息
DHCP:Request (xid=21274A1D)
DHCP:Op Code (op) = 1 (0x1)
DHCP:Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP:Hardware Address Length (hlen) = 6 (0x6)
DHCP:Hops (hops) = 0 (0x0)
DHCP:Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP:Seconds (secs) = 0 (0x0)
DHCP:Flags (flags) = 1 (0x1)
DHCP:1…………… = Broadcast
DHCP:Client IP Address (ciaddr) = 0.0.0.0
DHCP:Your IP Address (yiaddr) = 0.0.0.0
DHCP:Server IP Address (siaddr) = 0.0.0.0
DHCP:Relay IP Address (giaddr) = 0.0.0.0
DHCP:Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP:Server Host Name (sname) =
DHCP:Boot File Name (file) =
DHCP:Magic Cookie = [OK]
DHCP:Option Field (options)
DHCP:DHCP Message Type = DHCP Request
DHCP:Client-identifier = (Type:1) 08 00 2b 2e d8 5e
DHCP:Requested Address = 157.54.50.5
DHCP:Server Identifier = 157.54.48.151
DHCP:Host Name = JUMBO-WS
DHCP:Parameter Request List = (Length:7) 01 0f 03 2c 2e 2f 06
DHCP:End of this option field
(4)确认阶段:即DHCP服务器确认分配级DHCP客户端IP地址的阶段。某个DHCP服务器在收到DHCP客户端发来的DHCP REQUEST报文后,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地址分配给该客户端,则以广播方式返回DHCP ACK报文;否则返回DHCP NAK报文,表明地址不能分配给该客户端。
在DHCP 服务器发送的DHCP ACK报文的IP协议头部,Source Address是 DHCP 服务器IP地址,Destination Address仍然是广播地址255.255.255.255。在DHCP ACK报文中的Yiaddr字段包含要分配给客户端的IP地址,而Chaddr和DHCP:Client Identifier字段是发出请求的客户端中网卡的MAC地址。同时在选项部分也会在DHCP OFFER报文中把所分配的IP地址的子网掩码、默认网关、DNS服务器、租约期、续约时间等信息加上。
IP:ID = 0x3D30; Proto = UDP; Len: 328
IP:Version = 4 (0x4)
IP:Header Length = 20 (0x14)
IP:Service Type = 0 (0x0)
IP:Precedence = Routine
IP:...0.... = Normal Delay
IP:....0... = Normal Throughput
IP:.....0.. = Normal Reliability
IP:Total Length = 328 (0x148)
IP:Identification = 15664 (0x3D30)
IP:Flags Summary = 0 (0x0)
IP:.......0 = Last fragment in datagram
IP:......0. = May fragment datagram if necessary
IP:Fragment Offset = 0 (0x0) bytes
IP:Time to Live = 128 (0x80)
IP:Protocol = UDP - User Datagram
IP:Checksum = 0x2EA8
IP:Source Address = 157.54.48.151
IP:Destination Address = 255.255.255.255
IP:Data:Number of data bytes remaining = 308 (0x0134)
DHCP:ACK (xid=21274A1D)
DHCP:Op Code (op) = 2 (0x2)
DHCP:Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP:Hardware Address Length (hlen) = 6 (0x6)
DHCP:Hops (hops) = 0 (0x0)
DHCP:Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP:Seconds (secs) = 0 (0x0)
DHCP:Flags (flags) = 1 (0x1)
DHCP:1…………… = Broadcast
DHCP:Client IP Address (ciaddr) = 0.0.0.0
DHCP:Your IP Address (yiaddr) = 157.54.50.5
DHCP:Server IP Address (siaddr) = 0.0.0.0
DHCP:Relay IP Address (giaddr) = 0.0.0.0
DHCP:Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP:Server Host Name (sname) =
DHCP:Boot File Name (file) =
DHCP:Magic Cookie = [OK]
DHCP:Option Field (options)
DHCP:DHCP Message Type = DHCP ACK
DHCP:Renewal Time Value (T1) = 8 Days, 0:00:00
DHCP:Rebinding Time Value (T2) = 14 Days, 0:00:00
DHCP:IP Address Lease Time = 16 Days, 0:00:00
DHCP:Server Identifier = 157.54.48.151
DHCP:Subnet Mask = 255.255.240.0
DHCP:Router = 157.54.48.1
DHCP:NetBIOS Name Service = 157.54.16.154
DHCP:NetBIOS Node Type = (Length: 1) 04
DHCP:End of this option field
客户端在收到服务器返回的DHCP-ACK确认报文后,会以广播的方式发送免费ARP报文(该报文中,源IP地址和目标IP地址都是本机IP地址,源MAC地址是本机MAC地址,目的MAC地址是广播MAC地址),探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。否则,客户端会发送DHCP DECLINE报文给DHCP服务器,并重新申请IP地址。
如果网络中存在多个DHCP服务器,除DHCP客户端选中的服务器外,其它DHCP服务器中本次未分配出的IP地址仍可分配给其他客户端。
DHCP的优缺点
DHCP服务优点不少:网络管理员可以验证IP地址和其它配置参数,而不用去检查每个主机;DHCP不会同时租借相同的IP地址给两台主机;DHCP管理员可以约束特定的计算机使用特定的IP地址;可以为每个DHCP作用域设置很多选项;客户机在不同子网间移动时不需要重新设置IP地址。
但同时也存在不少缺点:DHCP不能发现网络上非DHCP客户机已经在使用的IP地址;当网络上存在多个DHCP服务器时,一个DHCP服务器不能查出已被其它服务器租出去的IP地址;DHCP服务器不能跨路由器与客户机通信,除非路由器允许BOOTP转发。
工作流程
DHCP服务的工作过程是这样的: