发明内容
本发明提供一种地址的分配方法和设备,以合理分配IP地址。
为了达到上述目的,本发明提供一种地址的分配方法,应用于包括DHCP客户端和DHCP服务器的系统中,该方法包括以下步骤:
在所述DHCP服务器为所述DHCP客户端分配IP地址时,所述DHCP服务器为所述DHCP客户端分配第一临时租约时间,并将所述第一临时租约时间的信息通知给所述DHCP客户端;
在所述DHCP客户端基于所述第一临时租约时间获知到达更新租约的时间时,所述DHCP服务器接收所述DHCP客户端以单播方式发送的更新租约的第一请求报文;
所述DHCP服务器为所述DHCP客户端分配用于使用所述IP地址的实际租约时间,并将所述实际租约时间的信息通知给所述DHCP客户端;所述第一临时租约时间小于所述实际租约时间。
所述DHCP服务器接收所述DHCP客户端以单播方式发送的更新租约的第一请求报文、所述DHCP服务器为所述DHCP客户端分配用于使用所述IP地址的实际租约时间,之间还包括:
所述DHCP服务器为所述DHCP客户端分配第二临时租约时间,并将所述第二临时租约时间的信息通知给所述DHCP客户端,所述第二临时租约时间小于所述实际租约时间;
在所述DHCP客户端基于所述第二临时租约时间获知到达更新租约的时 间时,所述DHCP服务器接收所述DHCP客户端以单播方式发送的更新租约的第二请求报文。
所述DHCP服务器为所述DHCP客户端分配第二临时租约时间,之前还包括:
所述DHCP服务器通过所述第一请求报文中携带的MAC地址、Transaction ID确定所述DHCP客户端合法;
所述DHCP服务器为所述DHCP客户端分配用于使用所述IP地址的实际租约时间,之前还包括:
所述DHCP服务器通过所述第二请求报文中携带的MAC地址、Transaction ID确定所述DHCP客户端合法。
所述DHCP服务器为所述DHCP客户端分配用于使用所述IP地址的实际租约时间,之前还包括:
所述DHCP服务器通过所述第一请求报文中携带的MAC地址、Transaction ID确定所述DHCP客户端合法。
所述DHCP服务器将所述第一临时租约时间的信息通知给所述DHCP客户端,之后还包括:
在到达所述第一临时租约时间后,如果所述DHCP服务器没有接收到所述DHCP客户端以单播方式发送的更新租约的第一请求报文,所述DHCP服务器回收为所述DHCP客户端分配的所述IP地址。
一种DHCP服务器,应用于包括DHCP客户端和所述DHCP服务器的系统中,该DHCP服务器包括:
第一分配模块,用于在为所述DHCP客户端分配IP地址时,为所述DHCP客户端分配第一临时租约时间;
第一发送模块,用于将所述第一临时租约时间的信息通知给所述DHCP客户端;
第一接收模块,用于在所述DHCP客户端基于所述第一临时租约时间获知到达更新租约的时间时,接收所述DHCP客户端以单播方式发送的更新租约的第一请求报文;
第二分配模块,用于为所述DHCP客户端分配用于使用所述IP地址的实际租约时间;
第二发送模块,用于将所述实际租约时间的信息通知给所述DHCP客户端;所述第一临时租约时间小于所述实际租约时间。
DHCP服务器还包括:
第三分配模块,用于为所述DHCP客户端分配第二临时租约时间;
第三发送模块,用于将所述第二临时租约时间的信息通知给所述DHCP客户端,所述第二临时租约时间小于所述实际租约时间;
第二接收模块,用于在所述DHCP客户端基于所述第二临时租约时间获知到达更新租约的时间时,接收所述DHCP客户端以单播方式发送的更新租约的第二请求报文。
DHCP服务器还包括:
第一确定模块,用于通过所述第一请求报文中携带的MAC地址、Transaction ID确定所述DHCP客户端合法,并通过所述第二请求报文中携带的MAC地址、Transaction ID确定所述DHCP客户端合法。
DHCP服务器还包括:
第二确定模块,用于通过所述第一请求报文中携带的MAC地址、Transaction ID确定所述DHCP客户端合法。
DHCP服务器还包括:
回收模块,用于在到达所述第一临时租约时间后,如果没有接收到所述DHCP客户端以单播方式发送的更新租约的第一请求报文,则回收为所述DHCP客户端分配的所述IP地址。
与现有技术相比,本发明至少具有以下优点:
在DHCP服务器分配IP地址后,通过为DHCP客户端分配很小的临时租约时间,以使DHCP客户端尽快发送针对更新租约的请求报文,继而可以获知DHCP客户端是否为攻击者,如果是攻击者,则回收为DHCP客户端分配的IP地址,否则,允许DHCP客户端继续使用分配的IP地址;从而能够有效识别伪造的DHCP客户端,防止其冒领IP地址,避免DHCP服务器上IP地址的耗尽,同时不影响合法DHCP客户端的IP地址的申请和使用。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
本发明提出一种地址的分配方法,该方法应用于包括DHCP客户端和DHCP服务器的系统中,实际应用中,在DHCP客户端和DHCP服务器之间还可以有DHCP中继或接入设备等设备,基于不同的组网方式,处理过程类似,DHCP客户端和DHCP服务器之间的设备用于对相关报文进行转发,为了方便描述,本发明中以DHCP客户端和DHCP服务器的交互为例进行说明。
如图4所示,该地址的分配方法包括以下步骤:
步骤401,在DHCP服务器为DHCP客户端分配IP地址时,DHCP服务 器为DHCP客户端分配第一临时租约时间。
步骤402,DHCP服务器将第一临时租约时间的信息通知给DHCP客户端。
针对IPV4地址的分配过程,可采用图2所示的地址分配流程,包括:(1)发现阶段,DHCP客户端通过DHCP-DISCOVER报文寻找DHCP服务器的阶段;(2)提供阶段,DHCP服务器通过DHCP-OFFER报文提供IP地址的阶段;(3)选择阶段,DHCP客户端通过DHCP-REQUEST报文选择某台DHCP服务器提供的IP地址的阶段;(4)确认阶段,DHCP服务器通过DHCP-ACK报文确认所提供的IP地址的阶段。针对IPV6地址的分配过程,处理流程与IPV4地址的类似,在此不再赘述。
需要注意的是,上述各阶段的报文是以广播方式进行发送的,且在地址的分配过程中,DHCP服务器分配给DHCP客户端的IP地址有一个租借期限,在期满后DHCP服务器会收回分配的IP地址,如果DHCP客户端要延长其IP租约,则必须更新其IP租约。
基于上述情况,本发明中,在为DHCP客户端分配IP地址时,首先为DHCP客户端分配第一临时租约时间,该第一临时租约时间可很短(如1~2秒),以使DHCP客户端尽快发送更新其IP租约的请求报文。
步骤403,在DHCP客户端基于第一临时租约时间获知到达更新租约的时间(如到达第一临时租约时间的1/2)时,DHCP客户端以单播方式向DHCP服务器发送更新租约的第一请求报文(例如,针对IPV4地址分配过程的DHCP-REQUEST报文或针对IPV6地址分配过程的Renew(更新)报文)。
步骤404,DHCP服务器接收DHCP客户端以单播方式发送的更新租约的第一请求报文。
步骤405,DHCP服务器为DHCP客户端分配用于使用该IP地址的实际租约时间(即实际应用中应该为DHCP客户端分配的租约时间,如24小时或更长的时间)。
具体的,当接收到第一请求报文后,如果通过第一请求报文中携带的MAC地址、Transaction ID(交易标识)确定该DHCP客户端合法,则DHCP服务器为该DHCP客户端分配实际租约时间,否则,不再为该DHCP客户端分配实际租约时间。
在接收到第一请求报文后,DHCP服务器还可以通知DHCP客户端自身已接收到第一请求报文,优选的,该通知方式可以为DHCP服务器为DHCP客户端分配第二临时租约时间(该第二临时租约时间可很短,如1~2秒),并将第二临时租约时间的信息通知给DHCP客户端;在DHCP客户端基于第二临时租约时间获知到达更新租约的时间(如到达第二临时租约时间的1/2)时,DHCP客户端以单播方式向DHCP服务器发送更新租约的第二请求报文(例如,DHCP-REQUEST报文或Renew报文)。
之后,DHCP服务器接收DHCP客户端以单播方式发送的更新租约的第二请求报文,并为DHCP客户端分配用于使用该IP地址的实际租约时间。
具体的,当接收到第一请求报文后,如果通过第一请求报文中携带的MAC地址、Transaction ID确定该DHCP客户端合法,则为DHCP客户端分配第二临时租约时间;否则,不再为该DHCP客户端分配实际租约时间。当接收到第二请求报文后,如果通过第二请求报文中携带的MAC地址、Transaction ID确定该DHCP客户端合法,则DHCP服务器为该DHCP客户端分配实际租约时间,否则,不再为该DHCP客户端分配实际租约时间。
需要注意的是,本发明中,第一临时租约时间和第二临时租约时间均为很短的时间,二者没有大小关系;而且第一临时租约时间、第二临时租约时间小于实际租约时间。
步骤406,DHCP服务器将实际租约时间的信息通知给DHCP客户端。
本发明中,DHCP服务器在将第一临时租约时间的信息通知给DHCP客户端之后,在到达第一临时租约时间后,如果DHCP服务器没有接收到DHCP 客户端以单播方式发送的更新租约的第一请求报文,则DHCP服务器回收为DHCP客户端分配的IP地址。
本发明中,针对攻击的原理和现状,在DHCP服务器分配IP地址时,增加临时租约时间的分配和交互的过程,根据续约的结果判断DHCP客户端的合法性,从而可以及时回收不合法DHCP客户端的IP地址。
(1)在合法DHCP客户端申请地址时:DHCP服务器和DHCP客户端在进行IP地址的分配过程中,DHCP服务器只分配给DHCP客户端一个极短的临时租约(如1~2秒),等待DHCP客户端执行续约操作,此时地址租约进入的状态是新增的探测状态Probe#1(不是Committed),如图5所示的合法DHCP客户端申请地址与续约的状态迁移示意图。
进入Probe#1状态后,合法的DHCP客户端将在二分之一的临时租约时间进入续约状态,向DHCP服务器发送单播的续约请求报文,且符合单播、Transaction ID一致、MAC地址一致的条件,此时DHCP服务器认为此DHCP客户端合法,并再次分配很短的临时租约时间,单播回复ACK报文,进入Probe#2状态。
进入Probe#2状态后,合法的DHCP客户端将在二分之一的临时租约时间进入续约状态,向DHCP服务器发送单播的续约请求报文,且符合单播、Transaction ID一致、MAC地址一致的条件,此时DHCP服务器认为此DHCP客户端合法,并为DHCP客户端分配正常的租约时间(通常为24小时或更长的时间),并且租约进入Committed状态。
需要说明的是,上述采用两次续约的方法,其目的在于利用两次续约中的4个报文的交互,使得DHCP服务器可以利用第二次续约的动作,来证明其在第一次续约中回复的单播ACK报文,确实能被DHCP客户端收到,进一步的证明DHCP客户端所用于申请IP地址的MAC地址是真实有效的。
(2)在不合法DHCP客户端(攻击者)申请地址时:攻击者伪造多对 DISCOVER报文和REQUEST报文,以不同的MAC地址发送给DHCP服务器,DHCP服务器在回复的ACK报文中,分配1~2秒的临时租约,而分配的地址租约进入Probe#1状态,如图6所示攻击者申请地址的状态迁移示意图。
由于攻击者申请了多个地址,且攻击者并非真正的DHCP客户端,无法为每个地址设立续约定时器,即无法进行正确的续约动作。DHCP服务器在临时租约到期后,如果仍未收到正确的租约报文,则可认为DHCP客户端为非法用户,直接删除租约,回收相应的IP地址。
综上所述,合法的DHCP客户端并不需要感知DHCP服务器上的租约状态变化,只用根据获取的租约自动续约即可,且只是在初次申请地址时多做两次续约操作,对正常地址使用和性能影响不大。对于DHCP服务器,只需在租约状态机中增加探测状态,在初次地址申请时增加两次续约操作和判断,其增加消耗的内存和CPU等资源非常有限,对DHCP服务器性能影响不大。
如果攻击者做DoS攻击,不间断的进行地址申请,DHCP服务器可以利用更短的临时租约,尽快的回收地址,从而增加为合法用户分配地址的成功概率;通过在DHCP服务器上进行报文限速,避免处理过多的DHCP报文而耗尽CPU资源,从而保证DHCP服务器的正常运行。
基于与上述方法同样的发明构思,本发明还提出了一种DHCP服务器,应用于包括DHCP客户端和所述DHCP服务器的系统中,如图7所示,该DHCP服务器包括:
第一分配模块11,用于在为所述DHCP客户端分配IP地址时,为所述DHCP客户端分配第一临时租约时间;
第一发送模块12,用于将所述第一临时租约时间的信息通知给所述DHCP客户端;
第一接收模块13,用于在所述DHCP客户端基于所述第一临时租约时间获知到达更新租约的时间时,接收所述DHCP客户端以单播方式发送的更新 租约的第一请求报文;
第二分配模块14,用于为所述DHCP客户端分配用于使用所述IP地址的实际租约时间;
第二发送模块15,用于将所述实际租约时间的信息通知给所述DHCP客户端;所述第一临时租约时间小于所述实际租约时间。
该DHCP服务器还包括:
第三分配模块16,用于为所述DHCP客户端分配第二临时租约时间;
第三发送模块17,用于将所述第二临时租约时间的信息通知给所述DHCP客户端,所述第二临时租约时间小于所述实际租约时间;
第二接收模块18,用于在所述DHCP客户端基于所述第二临时租约时间获知到达更新租约的时间时,接收所述DHCP客户端以单播方式发送的更新租约的第二请求报文。
该DHCP服务器还包括:
第一确定模块19,用于通过所述第一请求报文中携带的MAC地址、Transaction ID确定所述DHCP客户端合法,并通过所述第二请求报文中携带的MAC地址、Transaction ID确定所述DHCP客户端合法。
该DHCP服务器还包括:
第二确定模块20,用于通过所述第一请求报文中携带的MAC地址、Transaction ID确定所述DHCP客户端合法。
该DHCP服务器还包括:
回收模块21,用于在到达所述第一临时租约时间后,如果没有接收到所述DHCP客户端以单播方式发送的更新租约的第一请求报文,则回收为所述DHCP客户端分配的所述IP地址。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。