发明内容
有鉴于此,需要提供一种网关,以减少网关受攻击进而提高通信的服务质量。
还需要提供一种避免网关受攻击的方法,以提高通信的服务质量。
本发明实施方式的网关,与局域网内的多个客户端相连,所述网关用于将所述局域网内的多个客户端接入因特网,所述网关包括存储媒介、分配模块、查询模块、记录模块、发送模块及确认模块。存储媒介用于存储地址列表,所述地址列表记录有多个可分配给所述局域网内的多个客户端使用的因特网协议地址。分配模块接收其中一个客户端的请求封包并根据所述请求封包为所述客户端分配所述地址列表中存储的所述因特网协议地址。查询模块发送第一地址解析协议请求封包至所述局域网内的其他的客户端,以询问在当前状态下所述其他的客户端是否有使用所述因特网协议地址。记录模块在当前状态下其他的客户端没有使用所述因特网协议地址时,记录所述客户端的介质访问控制地址以及分配给所述客户端的所述因特网协议地址于一对应关系表中,并启动一计时器开始计时。发送模块在预设的计时时间结束时,向所述客户端发送第二地址解析协议请求封包,并判断是否从所述客户端接收到地址解析协议响应封包。确认模块在没有从所述客户端接收到所述地址解析协议响应封包时,确认所述客户端为攻击者,并停止分配因特网协议地址给所述客户端以避免所述网关受攻击。
优选的,所述确认模块还用于在从所述客户端接收到所述地址解析协议响应封包时,判断所述地址解析协议响应封包中所包括的所述客户端的介质访问控制地址是否存在于所述对应关系表中。
优选的,所述确认模块还用于在所述地址解析协议响应封包中所包括的所述客户端的介质访问控制地址存在于所述对应关系表中时,确认所述客户端不是攻击者。
优选的,所述确认模块还用于在所述地址解析协议响应封包中所包括的所述客户端的介质访问控制地址不存在于所述对应关系表中时,确认所述客户端为攻击者,并停止分配因特网协议地址给所述客户端以避免所述网关受攻击。
本发明实施方式的避免网关攻击的方法,其中所述网关与局域网内的多个客户端相连,用于将所述局域网内的多个客户端接入因特网,所述方法包括以下步骤:提供一个地址列表,其中所述地址列表记录有多个可分配给所述局域网内的多个客户端使用的因特网协议地址;接收其中一个客户端的请求封包并根据所述请求封包为所述客户端分配所述因特网协议地址;发送第一地址解析协议请求封包至所述局域网内的其他的客户端,以询问在当前状态下所述其他的客户端是否有使用所述因特网协议地址;在当前状态下所述其他的客户端没有使用所述因特网协议地址时,记录所述客户端的介质访问控制地址以及分配给所述客户端的所述因特网协议地址于一对应关系表中,并启动一计时器开始计时;在预设的计时时间结束时,向所述客户端发送第二地址解析协议请求封包,并判断是否从所述客户端接收到地址解析协议响应封包;及在没有从所述客户端接收到所述地址解析协议响应封包时,确认所述客户端为攻击者,并停止分配因特网协议地址给所述客户端以避免所述网关受攻击。
优选的,所述方法还包括在从所述客户端接收到所述地址解析协议响应封包时,判断所述地址解析协议响应封包中所包括的所述客户端的介质访问控制地址是否存在于所述对应关系表中。
优选的,所述方法还包括在所述地址解析协议响应封包中所包括的所述客户端的介质访问控制地址存在于所述对应关系表中时,确认所述客户端不是攻击者。
优选的,所述方法还包括在所述地址解析协议响应封包中所包括的所述客户端的介质访问控制地址不存在于所述对应关系表中时,确认所述客户端为攻击者,并停止分配因特网协议地址给所述客户端以避免所述网关受攻击。
本发明实施方式所提供的网关及其避免网关攻击的方法,根据网关主动发送第二地址解析协议请求封包至客户端,并通过判断是否从客户端接收到地址解析协议响应封包来确定客户端是否为攻击者,同时在确定其为攻击者时停止分配因特网协议地址地址给该客户端,以减少网关受攻击,进而提高通信的服务质量。
具体实施方式
请参阅图1,所示为本发明一实施方式中网关20的应用环境示意图。在本实施方式中,局域网(Local Area Network,LAN)10包括多个客户端,如第一客户端101、第二客户端103、第三客户端105等,通过网关(Gateway)20将多个客户端接入因特网(Internet)30。在本实施方式中,每一个客户端既可以是动态主机设置协议(Dynamic Host Configuration Protocol,DHCP)客户端,也可以是其他的客户端,如个人计算机(Personal Computer,PC)、掌上电脑(PersonalDigital Assistant,PDA)、移动电话(Mobile Phone)等用户终端设备,而且局域网10内的客户端与网关20之间的通信,以及网关20与因特网30之间的通信既可以是有线通信也可以是无线通信。
请参阅图2,所示为本发明一实施方式中网关20的结构示意图。在本实施方式中,网关20包括分配模块201、查询模块202、记录模块203、发送模块204、确认模块205、存储媒介206、处理器207及计时器208,其中存储媒介206存储有地址列表2062及对应关系表2064,模块201~205为存储于存储媒介206中的可执行程序,处理器207执行这些可执行程序,以实现其各自功能。
地址列表2062记录有多个可供分配给多个客户端使用的因特网协议(Internet Protocol,IP)地址。在本实施方式中,由于每一个客户端只有分配到相应的IP地址才能实现访问因特网,因此以第一客户端101向网关20请求分配IP地址为例进行说明。
当第一客户端101第一次登录网络的时候,由于本身没有IP地址,因此第一客户端101首先向网络广播动态主机设置协议发现(Dynamic HostConfiguration Protocol Discover,DHCP Discover)封包,用于在网络上寻找能分配IP地址的网络设备,其中DHCP Discover封包包括有第一客户端101的介质访问控制(Medium Access Control,MAC)地址。在本实施方式中,由于DHCP Discover封包是以广播的方式在网络中传输,因此包括网关20在内的其他有能力分配IP地址的网络设备均能接收到DHCP Discover封包。
分配模块201根据接收到的第一客户端101的请求封包为第一客户端101分配IP地址。在本实施方式中,分配模块201可以是能分配IP地址的动态主机设置协议(Dynamic Host Configuration Protocol,DHCP)模块,也可以是其他具备分配IP地址功能的模块。在本实施方式中,分配模块201从第一客户端101接收DHCP Discover封包,并判断在当前状态下地址列表2062中是否还有未分配出去的IP地址。若有未分配出去的IP地址,则分配模块201发送动态主机设置协议提供(Dynamic Host Configuration Protocol Offer,DHCPOffer)封包至第一客户端101,其中DHCP Offer封包包括网关20的MAC地址以及分配给第一客户端101使用的IP地址。
在本实施方式中,由于在实际的网络中不是只仅仅存在一个网络设备有能力分配IP地址给第一客户端101,因此,当有能力分配IP地址的其他网络设备在接收到第一客户端101所广播出去的DHCP Discover封包后亦会回复DHCP Offer封包至第一客户端101。这样一来,第一客户端101势必将接收到多个不同的DHCP Offer封包,通常第一客户端101只挑选其中的一个DHCPOffer封包,即选择最先就收到的DHCP Offer封包。在本实施方式中,为了方便说明,假设第一客户端101最先从网关20接收到DHCP Offer封包。
在本实施方式中,第一客户端101在最先从网关20接收到DHCP Offer封包后,将向网络广播动态主机设置协议请求(Dynamic Host ConfigurationProtocol Request,DHCP Request)封包。其中DHCP Request封包用于告诉网络中的所有有能力分配IP地址的网络设备(包括网关20)第一客户端101将指定接受哪台网络设备所分配的IP地址,在本实施方式中即指定接受网关20所分配的IP地址。
分配模块201从第一客户端101接收DHCP Request封包后,表明第一客户端101接受网关20分配给它使用的IP地址。此时,查询模块202则向局域网10中的其他每一个客户端发送第一地址解析协议请求(Address ResolutionProtocol Request,ARP Request)封包,用于询问在当前状态下其他的客户端,如第二客户端103、第三客户端105等,是否有使用分配给第一客户端101的IP地址。若其他的客户端在当前状态下没有使用分配给第一客户端101的IP地址,则查询模块202根据第一客户端101的MAC地址向第一客户端101发送动态主机设置协议确认(Dynamic Host Configuration Protocol Ack,DHCPAck)封包,用于确认已经向第一客户端101分配了IP地址。同时,记录模块203记录第一客户端101的MAC地址以及分配其使用的IP地址于一对应关系表2064中,如图3所示。
请参阅图3,所示为图2中的对应关系表2064的示意图。在本实施方式中,对应关系表2064包括客户端的MAC地址以及分配其使用的IP地址,且为一一对应的关系,记录模块203在完成记录后将该对应关系表2064存储于存储媒介206中。
请继续参阅图2,记录模块203在完成记录后除了将对应关系表2064存储于存储媒介206之外,还向第一客户端101发送DHCP Ack封包,并启动计时器208开始计时,其中预设的计时时间为第一计时时间T1。
第一客户端101在接收到网关20发出的DHCP Ack封包后亦开始计时,并在预设的第二计时时间T2结束时向网络中广播免费地址解析协议(Gratuitous ARP)封包,用于探测网络中是否有其他网路设备使用其刚从网关20分配到的IP地址,若在预设的第三计时时间T3结束时没有从网络中接收到其他网路设备对Gratuitous ARP的响应封包,则表明在当前状态下没有其他的网路设备使用其刚从网关20分配到的IP地址。
在本实施方式中,第二计时时间T2从第一客户端101接收到网关20发出的DHCP Ack封包时开始计时,第三计时时间T3从第一客户端101发出Gratuitous ARP封包时开始计时。在本实施方式中,第二计时时间T2与第三计时时间T3均通过Gratuitous ARP封包告知第一客户端101,并将第一计时时间T1设置为第二计时时间T2和第三计时时间T3中的最大值与一经验值之和。在本实施方式中,该经验值可取50ms。在其他实施方式中,可以根据需要将该经验值调整为其他的值。
在第一计时时间T1的计时结束时,发送模块204则向第一客户端101发送第二地址解析协议请求(Address Resolution Protocol Request,ARP Request)封包,并判断是否从第一客户端101接收到地址解析协议响应(AddressResolution Protocol Reply,ARP Reply)封包。在本实施方式中,第二ARPRequest封包的目的MAC地址是第一客户端101的MAC地址。
在本实施方式中,由于攻击者是通过特定程序不停修改客户端的MAC地址,并将每次修改后的MAC地址设置于请求封包中以发送至有能力分配IP地址的网络设备,以此来获取大量的IP地址从而达到攻击的目的。鉴于攻击者的这个特征,在本实施方式中,由于第二ARP Request封包的目的MAC地址是第一客户端101的MAC地址,若没有从第一客户端101接收到ARP Reply封包,则表明第一客户端101的MAC地址被改变了,这符合攻击者的特性。因此,当没有从第一客户端101接收到ARP Reply封包,则确认模块205确认第一客户端101为攻击者,此时网关20将停止分配IP地址给第一客户端101。
若从第一客户端101接收到ARP Reply封包,则确认模块205判断ARPReply封包中所包括的第一客户端101的MAC地址是否存在于对应关系表2064中。
在本实施方式中,若ARP Reply封包中所包括的第一客户端101的MAC地址存在于对应关系表2064中,则确认模块205确认第一客户端101不是攻击者。若ARP Reply封包中所包括的第一客户端101MAC地址不存在于对应关系表2064中,则表明第一客户端101是攻击者,此时网关20将停止分配IP地址给第一客户端101。
请参阅图4,所示为本发明一实施方式中网关20避免受攻击的方法流程图。在本实施方式中,该方法通过图2所示的各个模块来实现。
在步骤S400中,地址列表2062记录有多个可供分配给多个客户端使用的IP地址。在本实施方式中,每一个客户端只有分配到相应的IP地址才能实现访问因特网30。
在步骤S402中,分配模块201根据接收到的第一客户端101的请求封包为第一客户端101分配IP地址。在本实施方式中,分配模块201从第一客户端101接收DHCP Discover封包,并判断在当前状态下地址列表2062中是否还有未分配出去的IP地址。
若在当前状态下地址列表2062中还有未分配出去的IP地址,则分配模块201发送DHCP Offer封包至第一客户端101,其中DHCP Offer封包包括网关20的MAC地址以及分配给第一客户端101使用的IP地址。
在本实施方式中,由于在实际的网络中不是只仅仅存在一个网络设备有能力分配IP地址给第一客户端101,因此,当有能力分配IP地址的其他网络设备在接收到第一客户端101所广播出去的DHCP Discover封包后亦会回复DHCP Offer封包至第一客户端101。这样一来,第一客户端101势必将接收到多个不同的DHCP Offer封包,通常第一客户端101只挑选其中的一个DHCPOffer封包,即选择最先就收到的DHCP Offer封包。在本实施方式中,为了方便说明,假设第一客户端101最先从网关20接收到DHCP Offer封包。
在本实施方式中,第一客户端101在最先从网关20接收到DHCP Offer封包后,将向网络广播DHCP Request封包,其中DHCP Request封包用于告诉网络中的所有有能力分配IP地址的网络设备(包括网关20)第一客户端101将指定接受哪台网络设备所分配的IP地址,在本实施方式中即指定接受网关20所分配的IP地址。例如,若分配模块201从第一客户端101接收DHCPRequest封包,则表明第一客户端101接受网关20分配给它使用的IP地址。
在步骤S404中,查询模块202向局域网10中的其他每一个客户端发送第一ARP Request封包,用于询问在当前状态下其他的客户端,如第二客户端103、第三客户端105等,是否有使用分配给第一客户端101的IP地址。
若其他的客户端没有使用分配给第一客户端101的IP地址,查询模块202则根据第一客户端101的MAC地址向第一客户端101发送DHCP Ack封包,用于确认已经向第一客户端101分配了IP地址。
在步骤S406中,记录模块203记录第一客户端101的MAC地址以及分配其使用的IP地址于一对应关系表2064中。
在本实施方式中,在查询模块202向第一客户端101发送DHCP Ack封包后,计时器208开始计时,其中预设的计时时间为第一计时时间T1。
第一客户端101在接收到网关20发出的DHCP Ack封包后亦开始计时,并在预设的第二计时时间T2结束时向网络中广播Gratuitous ARP封包,用于探测网络中是否有其他网路设备使用其刚从网关20分配到的IP地址,若在预设的第三计时时间T3结束时没有从网络中接收到其他网路设备对GratuitousARP的响应封包,则表明在当前状态下没有其他的网路设备使用其刚从网关20分配到的IP地址。
在本实施方式中,第二计时时间T2从第一客户端101接收到网关20发出的DHCP Ack封包时开始计时,第三计时时间T3从第一客户端101发出Gratuitous ARP封包时开始计时。在本实施方式中,第二计时时间T2与第三计时时间T3均通过Gratuitous ARP封包告知第一客户端101,并将第一计时时间T1设置为第二计时时间T2和第三计时时间T3中的最大值与一经验值之和。在本实施方式中,该经验值可取50ms。在其他实施方式中,可以根据需要将该经验值调整为其他的值。
在步骤S408中,在第一计时时间T1的计时结束时,发送模块204向第一客户端101发送第二ARP Request封包。
在步骤S410中,发送模块204在向第一客户端101发送第二ARP Request封包后,判断是否从第一客户端101接收到ARP Reply封包。在本实施方式中,第二ARP Request封包的目的MAC地址是第一客户端101的MAC地址。
若没有从第一客户端101接收到ARP Reply封包,则在步骤S412中,确认模块205确认第一客户端101为攻击者。
在本实施方式中,由于攻击者是通过特定程序不停修改客户端的MAC地址,并将每次修改后的MAC地址设置于请求封包中以发送至有能力分配IP地址的网络设备,以此来获取大量的IP地址从而达到攻击的目的。鉴于攻击者的这个特征,在本实施方式中,由于第二ARP Request封包的目的MAC地址是第一客户端101的MAC地址,若没有从第一客户端101接收到ARP Reply封包,则表明第一客户端101的MAC地址被改变了,这符合攻击者的特性。因此,当没有从第一客户端101接收到ARP Reply封包,则确认模块205确认第一客户端101为攻击者,此时网关20将停止分配IP地址给第一客户端101。
若从第一客户端101接收到ARP Reply封包,则在步骤S414中,确认模块205判断ARP Reply封包中所包括的第一客户端101的MAC地址是否存在于对应关系表2064中。
在本实施方式中,若ARP Reply封包中所包括的第一客户端101的MAC地址存在于对应关系表2064中,则在步骤S416中,确认模块205确认第一客户端101不是攻击者。
若ARP Reply封包中所包括的第一客户端101的MAC地址不存在于对应关系表2064中,则在步骤S412中,确认模块205确认第一客户端101是攻击者,此时网关20将停止分配IP地址给第一客户端101。
本发明实施方式所提供的网关20及其避免受攻击的方法,根据网关20主动发送第二ARP Request封包至第一客户端101,并通过判定是否接收到第一客户端101回应的ARP Reply封包来确定第一客户端101是否为攻击者,同时在确定其为攻击者时停止分配IP地址给第一客户端101,以减少网关20受攻击,进而提高通信的服务质量。