admin管理员组

文章数量:1533850

2024年3月4日发(作者:)

DHCP的实现

一、 概述

动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)是用于对多个客户计算机集中分配IP地址以及IP地址相关的信息的协议,这样就能将IP地址和TCP/IP的设置统一管理起来,而避免不必要的地址冲突的问题,因此常常用在网络中对众多DOS/Windows计算机的管理方面,节省了网络管理员手工设置和分配地址的麻烦。

除了能够方便管理之外,DHCP还能略微达到节省IP地址的目的。假设网络中有50个计算机,但只有40个 IP地址,但是这50台计算机不会同时启动,IP地址应该满足要求。如果使用静态IP地址的设置方式,还是会遇到分配地址的困难,因为计算机的使用是随机的,无论怎样分配地址都无法避免出现冲突现象,而使用DHCP就能避免这个问题。 DHCP也能用于统一设置其他的一些IP设置,如缺省路由、DNS服务器等等,使用它能减少一个大型网络的管理任务。

DHCP是从原有的BootP协议发展起来的,原来的目的是为无盘工作站分配IP地址的协议,当前更多的用于集中管理IP地址。然而DHCP协议也有其缺点,例如一台DHCP客户计算机没有一个固定的IP地址,而对于提供网络服务的服务器来讲,经常变化的IP地址并不适合。并且当前的DNS协议并不能和DHCP协作,为DHCP客户直接提供主机名解析任务。

二、DHCP的工作原理

1、DHCP的工作过程

DHCP工作时要求客户机和服务器进行交互,由客户机通过广播向服务器发起申请IP地址的请求,然后由服务器分配一个IP地址以及其他的TCP/IP设置信息。整个过程可以分为以下步骤:

IP地址租用申请:DHCP客户机的TCP/IP首次启动时,就要执行DHCP客户程序,以进行TCP/IP 的设置。由于此时客户机的TCP/IP还没有设置完毕,就只能使用广播的方式发送DHCP请求信息包,广播包使用 UDP端口67和68进行发送,广播信息中包括了客户机的网络界面的硬件地址和计算机名字,以提供DHCP服务器进行分配。

IP地址租用提供:当接收到DHCP客户机的广播信息之后,所有的DHCP服务器均为这个客户机分配一个合适的IP地址,将这些IP地址、网络掩码、租用时间等信息,按照DHCP客户提供的硬件地址发送回DHCP客户机。这个过程中对DHCP服务器没有对客户计算机进行限制,因此客户机能收到多个IP地址提供信息。

IP地址租用选择:由于客户机接收到多个服务器发送的多个IP地址提供信息,客户机将选择一个IP地址,拒绝其他提供的IP地址,以便这些地址能分配给其他客户。客户机将向它选择的服务器发送选择租用信息。

IP地址租用确认:服务器将收到客户的选择信息,如果也没有例外发生,将回应一个确认信息,将这个IP地址真正分配给这个客户机。客户机就能使用这个IP地址及相关的TCP/IP数据,来设置自己的TCP/IP堆栈。

更新租用:DHCP中,每个IP地址是有一定租期的,若租期已到,DHCP服务器就能够将这个IP地址重新分配给其他计算机。因此每个客户计算机应该提前不断续租它已经租用的IP地址,服务器将回应客户机的请求并更新该客户机的租期设置。一旦服务器返回不

能续租的信息,那么DHCP客户机只能在租期到达时放弃原有的IP地址,重新申请一个新

IP地址。为了避免发生问题,续租在租期达到50%时就将启动,如果没有成功将不断启动续租请求过程。

释放IP地址租用:客户机可以主动释放自己的IP地址请求,也可以不释放,但也不续租,等待租期过期而释放占用的IP地址资源。

2、DHCP中继

由于DHCP依赖于广播信息,因此一般的情况下,客户机和服务器应该位于同一个网络之内。然而可以设置网络中的路由器为可以转发BootP广播包,使得服务器和客户机可以位于两个不同的网络中。然而配置转发广播信息,不是一个很好的解决办法,更好的办法为使用DHCP中继。DHCP中继既可以是一台计算机,也可以是一台路由器。对我们来说,是用一台路由器来实现DHCP中继。DHCP中继路由器和DHCP客户机位于同一个网络中,来回应客户机的租用请求,然而它不维护DHCP数据和拥有IP地址资源,它只是将请求通过TCP/IP转发给位于另一个网络上的DHCP服务器,进行实际的IP地址分配和确认。

3、DHCP客户代理

如果你想拔号上网,那么将由你连接到的这台路由器为你动态分配一个IP地址。这个动态分配的任务可能不是DHCP的职责,而是PPP本身的责任。它实现的功能是,一旦客户拔号上网,就代理客户向DHCP服务器申请IP地址的请求,然后由服务器分配一个IP地址以及其他的TCP/IP设置信息。最后通过PPP地址协商,使客户机获得动态地址,方便客户上网。当然,这对拔号上网的客户来说是透明的,他无需关心分配得IP地址是由路由器的地址池分配得,或是代理客户向DHCP服务器申请获得的,或是静态地址分配的。

三、 命令

1、命令

1.1、 ip address-pool [dhcp-proxy-client | local]

no ip address-pool

函数原型:int ip_address_pool(void *pio)

参数描述:pio——与显示有关的数据结构

返回值 : 成功或失败

工作模式:全局配置模式

功能描述:使能地址池机制或dhcp客户代理。

1.2、 ip dhcp-server ip-address

no ip dhcp-server [ip-address]

函数原型:int ip_dhcp_server (void *pio)

参数描述:pio——与显示有关的数据结构

返回值 : 成功或失败

工作模式: 全局配置模式

功能描述:设置dhcp服务器IP地址。

1.3、peer default ip address {ip-address | dhcp | pool [pool-name]}

no peer default ip address

函数原型:int peer_ip_address(void *pio)

参数描述:pio——与显示有关的数据结构

返回值 :成功或失败

工作模式:接口配置模式

功能描述:设置对等方的IP地址。此IP地址或来源于静态地址、

或来源于地址池、或来源于DHCP

1.4、ip local pool pool-name low-ip-address high-ip-address

no ip local pool { pool-name}

函数原型:int ip_local_pool(void *pio)

参数描述:pio——与显示有关的数据结构

返回值 :成功或失败

工作模式:全局配置模式

功能描述:为点对点连接的对等方提供IP地址,而设制本地IP地址池。地址池是为

了拔号上网的客户而设计的,它是在路由器中设置的,在这里,地址池

最大可以写10组,每组的IP地址都是不同的。如需要使用地址池,必须

绑定到需要的异步口中才有效。当客户拔号上网到INTERNET时 ,由路

由器从地址池中分配一个IP地址给客户。客户用这个合法的IP地址

就可以访问INTERNET网络。发布信息,搜索有用的信息。或收发电

子邮件等等。

四、 实现DHCP的命令

1、DHCP中继

在全局配置模式下,用ip dhcp-server 命令配置DHCP服务器的IP地址,便可以实现DHCP中继了。

2、DHCP客户代理

在全局配置模式下,用ip dhcp-server 命令配置DHCP服务器的IP地址;用ip

address-pool 设置为DHCP客户代理方式。如果要DHCP客户代理起作用,必须应用到接口中。在接口配置模式下,用peer default ip address命令使客户代理起作用。详细格式见上面或相关说明资料。

五、 程序设计

整个程序放在work下的dhcp目录中,共有2个C程序,分别为dhcmenu.c,和dhcrelay.c。

命令解析位于dhcmenu.c中,功能的实现位于dhcrelay.c 中。

1、命令解析

在glb_mode.c中增加了DHCP客户代理机制命令的菜单和解析函数ip_address_pool();增加了设置DHCP服务器IP地址的命令的菜单和解析函数ip_dhcp_server()。在int_mode.c中增加了设置对等方的IP地址的命令的菜单和解析函数peer_ip_address()。主要功能是根据命令设置结构的各成员变量值和全局变量。

2、DHCP中继实现

当接收到DHCP申请包,调用dhcr_relay (PACKET p,unsigned int fport)函数,根据

DHCP服务器IP地址存在否,决定是否转发。如果有DHCP服务器IP地址,则转发到DHCP

服务器;否则抛弃DHCP申请包。或接收DHCP服务器的包,转发到DHCP申请的主机。参数

p为 DHCP包,fport 为目的端口。

3、DHCP客户代理

在PPP进行地址协商时,调用dhcr_proxy(iface)函数。DHCP客户代理启动IP地址租用

申请,再启动状态机,调用tk_yield,最长等待30秒钟,如果在这段时间内,获得IP地

址,则成功,否则失败。失败原因有多种,一是DHCP服务器没有启动。二是网线不通,三

是ETHERNET 0 的IP地址设置不对,四是MAC地址有冲突等等。由于在异步口上绑定的是

PPP协议,而DHCP客户代理位于PPP的LCP之后,PPP的NCP之前,当PPP的LCP协商成

功后,如果有认证(无论是PAP,还是CHAP),先认证,当认证通过后,进行PPP的NCP协

商,主要是IP地址协商。PPP的协商过程是双向的,双方的协商都确认后,才认为是协商

成功。参数iface 为接口的索引号。

六 需要配置的参数

1、DHCP服务器的IP地址

#ip dhcp-server dhcpsvr

2、 异步接口的IP地址

#ip address addr mask

3、 异步接口对等方的DHCP代理

#peer default ip address dhcp

4、 设置DHCP代理

#ip address-pool dhcp

本文标签: IP地址客户服务器客户机设置