1、DHCP 简介5.1.1 dhcp1. dhcp 介绍随着网络规模的扩大和网络复杂度的提高,网络配置越来越复杂,经常出现计算机位置变化(如便携机或无线网络)和计算机数量超过可分配的 ip 地址的情况。动态主机配置协议 dhcp(dynamic host configuration protocol)就是为满足这些需求而发展起来的。与 bootp 相比,dhcp 也采用客户/服务器通信模式,由客户端向服务器提出配置申请(包括分配的 ip地址、子网掩码、缺省网关等参数) ,服务器根据策略返回相应配置信息,两种协议的报文都采用 udp 进行封装,并使用基本相同的报文结构。bootp 运行在相对静态(
2、每台主机都有固定的网络连接)的环境中,管理员为每台主机配置专门的bootp 参数文件,该文件会在相当长的时间内保持不变。dhcp 从两方面对 bootp 进行了扩展:dhcp 可使计算机仅用一个消息就获取它所需要的所有配置信息;dhcp 允许计算机快速、动态地获取 ip 地址,而不是静态为每台主机指定地址。2. dhcp 的 ip 地址分配(1)ip 地址分配策略对于 ip 地址的占用时间,不同主机有不同的需求:对于服务器,可能需要长期使用固定的 ip 地址;对于某些主机,可能需要长期使用某个动态分配的 ip 地址;而某些个人则可能只在需要时分配一个临时的 ip 地址就可以了。针对这些不同的需
3、求,dhcp 服务器提供三种 ip 地址分配策略:手工分配地址:由管理员为少数特定主机(如 www 服务器等)配置固定的 ip 地址。自动分配地址:为首次连接到网络的某些主机分配固定 ip 地址,该地址将长期由该主机使用。动态分配地址:以“租借” 的方式将某个地址分配给客户端主机,使用期限到期后,客户端需要重新申请地址。大多数客户端主机得到的是这种动态分配的地址。(2)ip 地址分配的优先次序dhcp 服务器按照如下次序为客户端选择 ip 地址:dhcp 服务器的数据库中与客户端 mac 地址静态绑定的 ip 地址;客户端以前曾经使用过的 ip 地址,即客户端发送的 dhcp-request
4、报文中请求 ip 地址选项(requested ip addr option)的地址;在 dhcp 地址池中,顺序查找可供分配的 ip 地址,最先找到的 ip 地址;如果未找到可用的 ip 地址,则依次查询超过租期、发生冲突的 ip 地址,如果找到则进行分配,否则报告错误。5.1.2 dhcp 服务器1. dhcp 服务器的应用环境在以下场合通常利用 dhcp 服务器来完成 ip 地址分配:网络规模较大,手工配置需要很大的工作量,并难以对整个网络进行集中管理。网络中主机数目大于该网络支持的 ip 地址数量,无法给每个主机分配一个固定的 ip 地址。大量用户必须通过 dhcp 服务动态获得自己的
5、 ip 地址,而且,对并发用户的数目也有限制。网络中具有固定 ip 地址的主机比较少,大部分主机可以不使用固定的 ip 地址。2. dhcp 服务器的基本原理在 dhcp 的典型应用中,一般包含一台 dhcp 服务器和多台客户端(如 pc 和便携机) ,如下图所示:dhcp 客户端为了获取合法的动态 ip 地址,在不同阶段与服务器之间交互不同的信息,通常存在以下三种模式:(1)dhcp 客户端首次登录网络dhcp 客户端首次登录网络时,主要通过四个阶段与 dhcp 服务器建立联系。发现阶段,即 dhcp 客户端寻找 dhcp 服务器的阶段。客户端以广播方式发送 dhcp_discover 报文
6、,只有 dhcp 服务器才会进行响应。提供阶段,即 dhcp 服务器提供 ip 地址的阶段。dhcp 服务器接收到客户端的 dhcp_discover 报文后,从 ip 地址池中挑选一个尚未分配的 ip 地址分配给客户端,向该客户端发送包含出租 ip 地址和其它设置的dhcp_offer 报文。服务器在发送 dhcp_offer 报文之前,会以广播的方式发送 arp 报文进行地址探测,以保证发送给客户端的 ip 地址的唯一性。选择阶段,即 dhcp 客户端选择 ip 地址的阶段。如果有多台 dhcp 服务器向该客户端发来 dhcp_offer 报文,客户端只接受第一个收到的 dhcp_offe
7、r 报文,然后以广播方式向各 dhcp 服务器回应 dhcp_request 报文,该信息中包含 dhcp 服务器在 dhcp_offer 报文中分配的 ip 地址。确认阶段,即 dhcp 客户端确认所提供 ip 地址的阶段。客户端收到 dhcp_ack 确认报文后,广播 arp 报文,目的地址是被分配的 ip 地址。如果在规定的时间内没有收到回应,客户端才使用此地址。除 dhcp 客户端选中的服务器外,其它 dhcp 服务器本次未分配出的 ip 地址仍可用于其它客户端的 ip地址申请。(2)dhcp 客户端再次登录网络当 dhcp 客户端再次登录网络时,主要通过以下几个步骤与 dhcp 服务
8、器建立联系。dhcp 客户端首次正确登录网络后,以后再登录网络时,只需要广播包含上次分配 ip 地址的dhcp_request 报文即可,不需要再次发送 dhcp_discover 报文。dhcp 服务器收到 dhcp_request 报文后,如果客户端申请的地址没有被分配,则返回 dhcp_ack 确认报文,通知该 dhcp 客户端继续使用原来的 ip 地址。如果此 ip 地址无法再分配给该 dhcp 客户端使用(例如已分配给其它客户端) ,dhcp 服务器将返回dhcp_nak 报文。客户端收到后,重新发送 dhcp_discover 报文请求新的 ip 地址。(3)dhcp 客户端延长
9、ip 地址的租用有效期dhcp 服务器分配给客户端的动态 ip 地址通常有一定的租借期限,期满后服务器会收回该 ip 地址。如果 dhcp 客户端希望继续使用该地址,需要更新 ip 租约(如延长 ip 地址租约) 。实际使用中,在 dhcp 客户端启动或 ip 地址租约期限达到一半时,dhcp 客户端会自动向 dhcp 服务器发送 dhcp_request 报文,以完成 ip 租约的更新。如果此 ip 地址有效,则 dhcp 服务器回应 dhcp_ack 报文,通知 dhcp 客户端已经获得新 ip 租约。(4)在 pc 机上的配置(以 window xp 操作系统为例)在用户 pc 机(即
10、dhcp 客户端)的 dos 环境下使用 ipconfig /release 命令主动释放 ip 地址,此时,用户 pc 机向 dhcp 服务器发送 dhcp_release 报文。然后,在用户 pc 机的 dos 环境下使用 ipconfig /renew 命令申请新的 ip 地址,此时,用户 pc 机向 dhcp 服务器发送 dhcp_discover 报文。在用户 pc 机( dhcp 客户端)上也可以使用 ipconfig /renew 命令来更新其 ip 地址租约。上述几个过程在下面的 dhcp 客户端状态迁移图中有完整体现:5.1.3 dhcp accounting 简介dhcp
11、accounting 又称为 dhcp 计费,是指 dhcp 服务器在分配和释放租约时,通知 radius 服务器开始计费或停止计费。dhcp 服务器与 radius 服务器配合使用,实现了网络计费功能,同时也在一定程度上保障了网络的安全性。1. dhcp accouting 报文结构在 dhcp 服务器与 radius 服务器进行交互主要是通过发送 accounting start 和 accounting stop 请求报文来进行的,这两种报文结构的结构大致相同,只是在 attribute 字段稍有差别,报文结构如下:code:code 字段在报文中占用一个字节,用来表示 radius 报
12、文的类型。当收到的报文的 code 字段非法时,该报文将会被丢弃。code 值为4时表示是 accounting start 报文,为5时表示是 accounting stop 报文。identifier:identifier 字段在报文中占用一个字节,用来匹配请求和回应报文,radius 服务器可以通过这个字段来检测从同一个客户端的相同 ip 地址和 udp 端口发来的重复请求。length:length 字段在报文中占用两个字节,标识了整个 accounting 报文的长度。authenticator:authenticator 字段在报文中占用16个字节。用来识别客户端和 radius
13、计费服务器之间的信息。2. dhcp accounting 的工作机制在运行 dhcp server 功能的防火墙上配置好 aaa 认证和 radius,则 dhcp server 作为 radius 的客户端。对于 dhcp server 作为 radius 客户端的认证过程,请参考本手册的“安全”部分,这里将指介绍 dhcp server 与radius server 的计费交互过程。dhcp 服务器通过 dhcp ack 报文将 ip 配置信息发送给 dhcp 客户端后,会发送 accounting start 请求报文给指定的 radius 服务器, radius 服务器将对 acco
14、unting start 请求进行相应的处理,并进行记录。同时radius 服务器给 dhcp 服务器发送回应报文。当由于某种原因,dhcp 服务器的租约被释放后,dhcp 服务器将立刻发送 accounting stop 请求报文通知 radius 服务器停止记录,然后 radius 服务器对 accounting stop 报文进行相应的处理并停止记录。同时radius 服务器给 dhcp 服务器发送回应报文。释放租约的原因有:租约过期、收到用户的 release 请求、手工删除租约、手工删除地址池等。若由于种种原因,指定域的 radius 服务器不可达,则 accounting star
15、t 报文将在一定的时间间隔发送三次,若三次后仍没有收到正确的相应报文,则不再发送 accounting start 报文。5.1.4 dhcp 服务器支持 bims option 1. dhcp 服务器支持 bims option 概述dhcp 服务器支持 bims option 是指 dhcp 服务器在给 dhcp 客户端分配 ip 地址的同时将 bims(branch intelligent management system)服务器的信息也同时告知 dhcp 客户端,使 dhcp 客户端在得到 ip 地址后能够通过 bims 服务器进行软件备份和升级。 bims option 的 opt
16、ion 号为217。2. bims option 的报文结构bims option 是在 dhcp 服务器给 dhcp 客户端的回应报文的 options 字段中添加的。由于不同厂商的dhcp 客户端对 dhcp 回应报文的处理机制不同,因此 dhcp 服务器在 dhcp_offer 和 dhcp_ack 报文中都将携带 bims option 选项。bims option 报文结构如下:bims option 报文的结构与其它 option 报文的结构基本相同,也包含了 code 和 len 字段用来标识 option的序号和 option 报文的长度。i1in 字段主要用来携带 bims
17、服务器的 ip 地址、协议端口号以及 bims server 的共享密钥。在该字段由字符串组成,例如 bims 服务器的 ip 地址为192.168.1.1,端口号为80,共享密钥为 abcdefg,则在 i 字段中表示为192.168.1.1.80.abcdefg。3. dhcp 服务器支持 bims option 工作机制(1)dhcp 客户端向 dhcp 服务器发送请求报文申请 ip 地址以及配置参数。(2)dhcp 服务器端收到请求报文后,查看本地配置的地址池,dhcp 服务器可以在全局地址池及接口地址池启动 bims option。若将要分配地址的地址池启动了 bims option
18、,则 dhcp 服务器将在回应报文中除携带分配给客户端的 ip 配置信息外,还将携带 bims 服务器的 ip 地址、协议端口号以及共享密钥。dhcp 客户端收到服务器带有 bims option 的回应报文后解析出 option 中的 bims 服务器 ip 地址、协议端口号以及共享密钥。客户端获得 bims 服务器的信息后就向 bims 服务器定期发送连接请求,以便通过bims 服务器进行软件的备份和升级。5.1.5 dhcp 服务器支持 option 1841. dhcp 服务器支持 option184简介option 184是 rfc 中规定的保留选项,用户可以自定义该选项中携带的信息
19、。因此3com 使用该选项定义了四个私有的子选项,从而使 dhcp 服务器可以在回应 dhcp 客户端的请求时携带 dhcp 客户端需要的信息。option 184中包含的子选项主要是携带了语音方面的信息,其子选项号和携带的信息具体如下:sub-option 1:ncp-ip (network call processor ip address) ,网络呼叫处理器 ip 地址。sub-option 2:as-ip(alternate server ip address) ,备选 ncp 服务器的 ip 地址。sub-option 3:voice vlan configuration,语音 vl
20、an 配置。ub-option 4:fail-over call routing,failover 呼叫路由。(1)option 184中各子选项的含义ncp-ipncp-ip 子选项携带了 ncp(network call processor,网络呼叫处理器)的 ip 地址。在 option 184中若使用该子选项,必须将其作为第一个子选项(sub-option 1) 。option 184的 sub-option 1子选项携带的 ncp-ip 地址可以标识作为网络呼叫控制源的服务器及应用程序下载服务器。as-ipas-ip 子选项携带了 as(alternate server ,备选服务器
21、)的 ip 地址,该子选项为 option 184的第二个子选项(sub-option 2) 。只有定义了 sub-option 1,即只有定义了 ncp-ip 子选项,as-ip 子选项才能生效。option 184中的 sub-option 2子选项携带了备选 ncp 服务器的 ip 地址,用来作为 ncp-ip 的备份。当 ncp-ip 中携带的地址不可达或不合法时,才使用该选项指定的 ncp 服务器。voice vlan configurationvoice vlan configuration 子选项携带了语音 vlan 是否使能的标记以及 vlan id,该子选项为 option
22、184的第三个子选项(sub-option 3) 。option 184的 sub-option 3子选项共由两部分组成:一部分携带了语音 vlan 识别是否使能的标记,另一部分携带了语音 vlan 的 id 信息。当语音 vlan 使能域标记为0时,则表示没有使能语音 vlan 识别功能,即使 vlan id 域中指定了语音 vlan id,也将忽略该 vlan id 信息;当语音 vlan 使能域标记为1时,表示使能语音 vlan 识别功能。(2)fail-over call routingfail-over call routing 子选项携带了 failover 呼叫路由的 ip 地址
23、及其关联的拨号串,该子选项为 option 184的第四个子选项(sub-option 4) 。option 184的 sub-option 4子选项中的 fail-over 呼叫路由的 ip 地址和拨号串就是 sip(session initiation protocol,会话初始化协议)用户之间互相通信时对端的 ip 地址和呼叫号码。当 ncp 服务器不可达时,sip用户可以使用已配置的对端 ip 地址及呼叫号码直接与对端 sip 用户建立连接并通信。dhcp 服务器添加 option 184的 sub-option 时,添加 sub-option 2、sub-option 3或 sub-
24、option 4前必须先添加 sub-option 1子选项,否则后面的子选项将无效。(3)dhcp 服务器支持 option 184的工作机制dhcp 服务器携带的 option 184信息是添加在服务器给 dhcp 客户端的回应报文中。下面假设 dhcp 客户端与 dhcp 服务器在同一网段, dhcp 服务器支持 option 184的工作机制如下:dhcp 客户端向 dhcp 服务器发送请求报文,请求报文中携带 option 184选项,该选项中指明了请求option 184的配置参数。dhcp 服务器查看请求报文中的请求列表,然后在回应报文的 options 字段中添加 option
25、 184及相应的sub-option 后返回给 dhcp 客户端。只有 dhcp 客户端在请求报文的 option 55选项中指明要求回应 option 184选项,dhcp 服务器才会回应option 184。5.1.6 dhcp 中继1. dhcp 中继的应用环境早期的 dhcp 协议只适用于 dhcp 客户端和服务器处于同一个子网内的情况,不能跨网段。因此,为进行动态主机配置,需要在所有网段上都设置一个 dhcp 服务器,这显然是很不经济的。dhcp 中继功能( dhcp relay)的引入解决了这一难题:局域网内的客户端可以通过 dhcp 中继与其它子网的 dhcp 服务器通信,最终取
26、得合法的 ip 地址。这样,多个网络上的 dhcp 客户端可以使用同一个 dhcp服务器,既节省了成本,又便于进行集中管理。一般来说,dhcp 中继可以是主机,也可以是防火墙或路由器,只要对它启动 dhcp 中继代理的服务程序即可。2. dhcp 中继的基本原理下图是 dhcp 中继的典型应用示意图。工作原理如下:当 dhcp 客户端启动并进行 dhcp 初始化时,它在本地网络广播配置请求报文。如果本地网络存在 dhcp 服务器,则可以直接进行 dhcp 配置,不需要 dhcp 中继;如果本地网络没有 dhcp 服务器,则与本网络相连的、带 dhcp 中继功能的网络设备收到该广播报文后,进行适当处理并转发给指定的、其它网络上的 dhcp 服务器。dhcp 服务器根据客户端提供的信息进行相应的配置,并通过 dhcp 中继将配置信息发送给客户端,完成对客户端的动态配置。事实上,从开始配置到最终完成配置,可能存在多次这样的交互过程。dhcp 中继提供了对 dhcp 广播报文的透明传输功能,能够把 dhcp 客户端(或服务器)的广播报文透明地传送到其它网段的 dhcp 服务器(或客户端)上。在实际网络环境中,dhcp 中继功能一般是在防火墙某个具体的接口上实现的。这时需要为该接口配置 ip 中继地址,用来指定 dhcp 服务器。