具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下通过具体实施例并参见附图,对本发明进行详细说明。
本申请中,路由转发设备接收到来自IPv6私网节点的报文,当所述报文的源IP地址为私网地址、且目的IP地址为公网地址时,从所述路由转发设备对应接口上配置的公网IPv6地址中选择一个IPv6地址并将其地址前缀作为所述私网节点访问公网时使用的地址前缀;所述地址前缀不同于所述私网节点前一次访问公网时使用的地址前缀;
所述路由转发设备发送包含有所述地址前缀及其有效时间的路由器公告RA给所述私网节点;所述RA用于触发所述私网节点利用RA中的地址前缀,通过无状态自动地址配置,生成EUI-64格式的可聚合全球单播地址,所述可聚合全球单播地址用于所述私网节点与公网节点之间进行数据交互。
通过上述内容可知,本申请方案在实现IPv6私网节点与公网节点之间通信的过程中,有效地隐藏了IPv6私网节点的IP地址。
即,对于该私网节点的本地站点地址,通过使用地址前缀,根据无状态自动地址配置,生成可聚合全球单播地址,有效隐藏了该私网节点的本地站点IP地址;对于该私网节点对外的公网IP地址(即可聚合全球单播地址),通过公网IP地址中地址前缀的动态变化,有效地隐藏了该私网节点当前的公网IP地址。这样使得公网的攻击者既无法确定所述私网节点的本地站点地址,也无法确定所述私网节点使用的公网地址,从而无法对所述私网节点发起有效的攻击。
本申请实施例的方法流程如图1所示,一种实现IPv6私网节点与公网节点之间通信的方法,参照图2的IPv6私网保护组网拓扑结构示意图来对本申请实施例进行说明。如图2所示,IPv6私网内的节点,利用本地站点地址(前缀为FEC0:1:1:1::/64)与私网内的其它节点进行数据交换。路由转发设备Router A负责私网内部N(N为自然数)个节点的对外交换工作,其对应接口上配置多个公网IPv6地址。该方法包括以下步骤:
步骤101:路由转发设备接收到来自IPv6私网节点的报文。
当私网节点(如PC1)因为业务需要,需要与外部IPv6公网的节点node A进行通信的时候,PC1会将发送给node A的报文先转发至路由转发设备Router A。
步骤102:当所述报文的源IP地址为私网地址、且目的IP地址为公网地址时,从所述路由转发设备对应接口上配置的公网IPv6地址中选择一个IPv6地址并将其地址前缀作为所述私网节点访问公网时使用的地址前缀;所述地址前缀不同于所述私网节点前一次访问公网时使用的地址前缀。
为了便于对私网节点进行管理,比如,私网节点是否可以对公网进行访问,路由转发设备上也可以进行如下配置:选择对哪些私网节点分配地址前缀,使其具有访问公网的能力。
因此,当所述报文的源IP地址为私网地址、且目的IP地址为公网地址时,可以先判断所述源IP地址是否具有与公网通信的权限,通过地址解析协议ARP表就可以容易地设置上述权限。
判断结果如果为否,直接拒绝所述报文;
判断结果如果为是,从所述路由转发设备对应接口上配置的公网IPv6地址中选择一个IPv6地址并将其地址前缀作为所述私网节点访问公网时使用的地址前缀;所述具有与公网通信权限的源IP地址为预先设置。
本申请实施例中,从路由转发设备对应接口上配置的公网IPv6地址中选择一个IPv6地址,并将其该IPv6地址的地址前缀作为所述私网节点访问公网时使用的地址前缀。
如图2所示,路由转发设备A接收到来自于PC1的、以2001:1:1:1::1为目的IP地址,以FEC0:1:1:1:0250:4EFF:FEEC:1234为源IP地址的报文时,路由转发设备A发现其源IP地址是私网的本地站点地址,此类地址只适用于私网本地站点范围,不能进行公网转发。本申请实施例中,为了实现私网节点访问公网的同时,还可以隐藏该私网节点的本地站点地址,从路由转发设备A对应接口上配置的公网IPv6地址中为私网节点选择一个地址前缀,比如为2001:1:2:3::/64,用于生成可聚合全球单播地址2001:1:2:3:0250:4EFF:FEEC:1234,与公网节点进行数据交互。
当为了保证所述私网节点利用可聚合全球单播地址与公网通信时,不至于受到外部网络的攻击,可以对所述私网节点的可聚合全球单播地址进行隐藏,本申请实施例中,采用的方法是:选择与前一次不同的地址前缀,如此可以保证该私网节点在访问公网时,其可聚合全球单播地址呈动态变化,使攻击者无法发起对所述私网节点的攻击,以实现对所述私网节点的保护。
本申请实施例中,地址前缀使用路由转发设备对应接口上配置的公网IPv6地址,如图2所示,这些公网IPv6地址可能有多个,由网络管理员预先配置。由于EUI-64格式的地址对MAC地址的应用,同一地址前缀,可以分配给多个私网节点,不会形成地址重复。私网节点在需要的时候可以获取到地址前缀,根据EUI-64格式生成唯一可聚合全球单播地址,此地址不会与私网内任何其它节点的公网地址重复。即一个地址前缀可以同时分配给多个私网节点使用,但是它们的公网地址不会相同。
由于每次分配给同一私网节点的IPv6地址前缀不会与前一次相同,地址前缀根据选择策略呈动态变化,其公网IP地址(可聚合全球单播地址)也是动态变化,增加了外部网络对私网节点的公网IP地址猜测的难度。
可以通过预先设定的选择策略,如随机选择、顺序选择等,选择不同于前一次的IPv6地址前缀,选择策略可自定义,只要保证选择的地址前缀与前一次不同即可。根据路由转发设备对应接口配置的多个公网IPv6地址,进行地址前缀的不重复选择及分配,形成动态的IPv6公网地址,使私网节点当前所使用的公网IP地址呈动态变化,免受外部网络的攻击。
当所述私网节点是初次访问公网时,可以根据预先设定的选择策略,从所述路由转发设备对应接口上配置的公网IPv6地址中选择一个IPv6地址并将其地址前缀作为所述私网节点访问公网时使用的地址前缀,此时,选择的任一IPv6地址前缀都是可行的。
当所述私网节点不是初次访问公网时,可以根据预先设定的选择策略,从所述路由转发设备对应接口上配置的公网IPv6地址中选择一个IPv6地址并将其地址前缀作为所述私网节点访问公网时使用的地址前缀,此时,选择的IPv6地址的地址前缀需要与该私网节点前一次访问公网时使用的地址前缀进行对比,若相同就需要根据选择策略重新选择下一个IPv6地址的地址前缀。
步骤103:所述路由转发设备发送包含有所述地址前缀及其有效时间的路由器公告RA给所述私网节点;所述RA用于触发所述私网节点利用RA中的地址前缀,通过无状态自动地址配置,生成可聚合全球单播地址,所述可聚合全球单播地址用于所述私网节点与外公网节点之间进行数据交互。
本申请实施例利用路由器公告RA机制发送地址前缀信息,根据RA机制,必然带有地址前缀的有效时间,这里地址前缀的有效时间可用于对私网节点当前访问外网时使用的地址前缀设置保活或失效,如此,当路由转发设备出现故障后,仍可由私网节点自行失效其当前使用的可聚合全球单播地址,避免该私网节点长时间持有所述可聚合全球单播地址。
所述私网节点接收到RA,利用其中的地址前缀,根据无状态自动地址配置,生成可聚合全球单播地址,从而具备与公网节点进行数据交互的能力。生成可聚合全球单播地址后,私网节点仍可以使用其本地站点地址与私网内部的其它节点进行数据交互。
所述路由转发设备可以以单播的形式发送包含有所述地址前缀及其有效时间的RA给所述私网节点,然后,建立老化表项,根据私网节点和公网之间交互的数据报文对老化表项进行刷新。老化表项用于对接收到的报文进行表项匹配、并对地址前缀设置保活或失效。老化表项的元素包括:私网节点本地站点地址、地址前缀、可聚合全球单播地址、地址前缀有效时间、老化时间;其中:
所述地址前缀即为步骤102中选择的地址前缀,私网节点本地站点地址即为步骤102中的源IP地址,所述地址前缀有效时间与老化时间根据实际需要设置,同时启动老化时间计时器。
根据老化表项,发送RA通知私网节点,可以设置地址前缀及其对应的可聚合全球单播地址失效或保活。具体过程如下:
若老化时间内,所述路由转发设备接收到源IP地址为所述老化表项中可聚合全球单播地址的报文,则允许所述报文通过,并更新所述老化表项的老化时间;
若老化时间内,所述路由转发设备没有接收到源IP地址为所述老化表项中可聚合全球单播地址的报文,则删除所述老化表项,发送第二RA给所述私网节点,记录地址前缀与所述私网节点本地站点地址的对应信息,以供下次进行地址前缀分配的时候进行比较选择;第二RA中包含有所述地址前缀及其有效时间、且所述有效时间设置为0;第二RA用于触发所述私网节点根据第二RA中的所述地址前缀有效时间为0的信息,失效所述地址前缀对应的可聚合全球单播地址。所述私网节点如想继续与公网进行数据交流,则需要重新获取新的IPv6地址前缀。
所述路由转发设备的老化表项和私网节点中的地址前缀及其有效时间是相同的,所述路由转发设备和私网节点可以同时对地址前缀有效时间进行监控,所述路由转发设备发现地址前缀有效时间将先于老化时间超时时,此时所述私网节点可能仍有流量与公网交流,所述路由转发设备发送第三RA对地址前缀进行保活;所述私网节点中的地址前缀有效时间到达时,地址前缀失效,当路由转发设备出现故障时,可以失效地址前缀及其对应的可聚合全球单播地,具体过程如下:
所述路由转发设备建立老化表项之后,若监控到所述老化表项中的地址前缀有效时间将先于老化时间超时时,则按照预先设定的时间提前发送第三RA给所述私网节点,更新所述老化表项的地址前缀有效时间;第三RA包含有:所述地址前缀及其有效时间;第三RA用于触发所述私网节点更新所述地址前缀的有效时间;所述地址前缀的有效时间到达时,所述地址前缀失效。这样可以防止路由转发设备出现故障时地址前缀永远有效而导致私网节点的公网IP地址被外部网络获知。
下面参照图2对本申请的较佳实施例进行进一步举例说明:
如图2所示,私网节点PC1在正常情况下只拥有本地站点地址:FEC0:1:1:1:0250:4EFF:FEEC:1234,通过它与私网内的其他节点进行通信。因业务需要,要和公网节点Node A(公网IPv6地址:2001:1:1:1::1)进行数据交互,发送源IP地址是FEC0:1:1:1:0250:4EFF:FEEC:1234,目的IP地址是2001:1:1:1::1的报文给默认路由转发设备Router A;
Router A收到来自PC1的报文后,对目的IP地址和源IP地址进行判断,发现所述报文的目的IP地址是公网地址,但是源IP地址是内网地址,则判断所述源IP地址为FEC0:1:1:1:0250:4EFF:FEEC:1234的私网节点是否具有与公网通信的权限:
如果没有权限,直接拒绝该报文;
如果有权限,根据Router A对应接口上配置的公网IPv6地址,查询PC1与公网前一次通信所使用的地址前缀记录,按照预先设定的选择策略,从Router A对应接口上配置的公网IPv6地址中选择与前一次地址前缀不同的IPv6地址的地址前缀作为上述私网节点访问公网时使用的地址前缀,如2001:1:2:3::/64,以单播的形式发送包含有地址前缀2001:1:2:3::/64的RA给PC1,并设置其有效时间。
PC1收到RA公告后,通过无状态自动地址配置,生成EUI-64格式的可聚合全球单播地址2001:1:2:3:0250:4EFF:FEEC:1234/64,利用这个地址与公网节点NodeA进行通信。这个地址很好地隐藏了PC1的本地站点地址,使PC1免受外部网络的攻击。
上述Router A发送RA给PC1后,建立老化表项,示例如下表1:
表1
建立老化表项的同时,启动老化时间计时器,并对老化时间进行监控。
由于Router A负责私网内部多个节点的对外交换工作,可能会对应建立多个老化表项。源IP为公网的报文到达Router A后进行表项匹配,如果源地址能够匹配上任一老化表项的可聚合全球单播地址,则允许通过,并更新该老化表项的老化计时器;如果不能匹配上所有老化表项中的可聚合全球单播地址,则拒绝所述报文。
针对表1所示的这一老化表项,在老化时间内,若Router A接收到源IP地址为2001:1:2:3:0250:4EFF:FEEC:1234的报文,则允许该报文通过,并更新所述老化表项的老化时间;
若老化时间内,Router A没有接收到源IP地址为2001:1:2:3:0250:4EFF:FEEC:1234的报文,则删除所述老化表项,发送第二RA给PC1,记录地址前缀2001:1:2:3::与本地站点地址FEC0:1:1:1:0250:4EFF:FEEC:1234的对应信息,用于后续选择地址前缀时进行对比;第二RA中包含有地址前缀2001:1:2:3::及其有效时间、且所述有效时间设置为0;PC1接收到第二RA后,失效可聚合全球单播地址2001:1:2:3:0250:4EFF:FEEC:1234。如果下一次还需访问公网,则必须重新申请地址前缀。通过地址前缀的动态变化,生成不同的可聚合全球单播地址,实现了对PC1的公网地址的隐藏,使PC1免受外部网络的攻击。
此外,如果设置的地址前缀有效时间将先于老化时间超时时(意味着PC1端的公网地址将失效),但是PC1继续有流量与公网交流,为避免流量中断,RouterA按预先设定的时间提前向PC1发送第三RA报文,第三RA包含有:地址前缀2001:1:2:3::及其有效时间;第三RA用于触发PC1更新2001:1:2:3::的有效时间。同时,Router A也更新表1所示的老化表项中的地址前缀有效时间。
Router A和所述老化表项中的地址前缀有效时间是相同的,即Router A和PC1同时对地址前缀有效时间进行监控,当PC1有流量与公网交流时,Router A可以发送RA对地址前缀进行保活,当Router A出现故障无法发送RA时,在地址前缀有效时间到后,PC1自动失效其公网地址。
由本申请实施例方案可知,私网节点即便获取到地址前缀也不是长期拥有,其老化超时后,地址前缀即失效。即使在路由转发设备出现故障的情况下,私网节点本地也会对地址前缀有效时间进行计时,在地址前缀有效时间到后,其公网IP地址(即可聚合全球单播地址)设置为失效,就是说其可聚合全球单播地址是临时的。
本申请实施例的路由转发设备功能结构示意图如图3所示,一种路由转发设备,包括:报文接收模块、地址前缀处理模块和路由器公告RA发送模块,其中:
报文接收模块,用于接收来自IPv6私网节点的报文;
地址前缀处理模块,用于当所述报文的源IP地址为私网地址、且目的IP地址为公网地址时,从本路由转发设备对应接口上配置的公网IPv6地址中选择一个IPv6地址并将其地址前缀作为所述私网节点访问公网时使用的地址前缀;所述地址前缀不同于所述私网节点前一次访问公网时使用的地址前缀;
RA发送模块,用于发送包含有所述地址前缀及其有效时间的RA给所述私网节点;所述RA用于触发所述私网节点利用RA中的地址前缀,通过无状态自动地址配置,生成可聚合全球单播地址,所述可聚合全球单播地址用于所述私网节点与公网节点之间进行数据交互。
较佳地,所述路由转发设备还包括:
老化表项处理模块,用于在RA发送模块发送包含有所述地址前缀及其有效时间的RA给所述私网节点之后,建立老化表项,包括:私网节点本地站点地址、地址前缀、可聚合全球单播地址、地址前缀有效时间、老化时间;所述可聚合全球单播地址由所述地址前缀与所述私网节点本地站点地址的后64位结合而生成,所述地址前缀有效时间与老化时间根据实际需要设置,同时启动老化时间计时器。
较佳地,所述老化表项处理模块,还用于:
若老化时间内,本路由转发设备接收到源IP地址为所述老化表项中可聚合全球单播地址的报文,则允许所述报文通过,并更新所述老化表项的老化时间;
若老化时间内,本路由转发设备没有接收到源IP地址为所述老化表项中可聚合全球单播地址的报文,则删除所述老化表项,记录地址前缀与所述私网节点本地站点地址的对应信息;
所述RA发送模块,还用于在老化表项处理模块删除所述老化表项时,发送第二RA给所述私网节点;第二RA中包含有所述地址前缀及其有效时间、且所述有效时间设置为0;第二RA用于触发所述私网节点根据第二RA中的所述地址前缀有效时间为0的信息,失效所述地址前缀对应的可聚合全球单播地址。
较佳地,所述RA发送模块,还用于
当本路由转发设备监控到所述老化表项中的地址前缀有效时间将先于老化时间超时时,按照预先设定的时间提前发送第三RA给所述私网节点;第三RA包含有:所述地址前缀及其有效时间;第三RA用于触发所述私网节点更新所述地址前缀的有效时间;
所述老化表项处理模块,还用于在RA发送模块发送第三RA给所述私网节点时,更新所述老化表项的地址前缀有效时间。
较佳地,所述地址前缀处理模块,还用于
在从本路由转发设备对应接口上配置的公网IPv6地址中选择一个IPv6地址之前,判断所述源IP地址是否具有与公网通信的权限,如果否,直接拒绝所述报文,如果是,从本路由转发设备对应接口上配置的公网IPv6地址中选择一个IPv6地址并将其地址前缀作为所述私网节点访问公网时使用的地址前缀。
本申请实施例中,私网节点用于与公网通信的公网地址是唯一可聚合全球单播地址,中间不再经过任何的地址转换或者变动,不会像NAT地址转换一样对IPv6端到端安全性产生影响。
而且,本申请方案应用了IPv6的路由器公告RA机制,不需对内网终端做任何修改,天然支持。
本申请方案解决了私网节点公网地址(即可聚合全球单播地址)的动态获取及释放,可以达到隐藏私网节点的IP地址以保护私网节点免受外部网络攻击的目的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。