一种跨NAT环境下客户端接入方法和系统
技术领域
本发明属于互联网领域,涉及一种跨NAT环境下客户端接入方法和系统。
背景技术
旁路准入为目前市面上准入产品中使用最广泛且最稳定的准入实现方式,它不影响客户的网络环境,仅仅需要在客户网络环境的总出口交换机上配置好端口镜像,将网络数据镜像到服务器上进行相应的判断处理即可实现准入的效果。
当服务器收到镜像到的数据包后,会根据自身规则判断数据包的合法性,如果数据包合法,则对数据不进行任何处理,如果数据非法,则通过发送RST或者数据重定向包的方式来实现对客户端访问网络数据的阻断功能。
旁路准入方式虽然可以在不影响客户网络环境的情况下实现准入效果,但它存在一个问题就是,客户端如果跨了NAT的话,IP在经过地址转换后仅仅能获取到转换后的IP,无法获取到NAT下哪些客户端是合法,哪些是非法。
发明内容
本发明所要解决的技术问题是在不影响客户网络环境的情况下实现准入效果,且可以适用于客户端跨NAT环境下。
本发明解决上述技术问题所采取的技术方案如下:
一种跨NAT环境下客户端接入方法,包括:
步骤1)客户端登录后,业务服务器判断客户端是否跨NAT的用户,如果用户为跨NAT用户,则判断数据包的合法性,并向合法的客户端发送修改生存时间TTL值的命令,告知修改TTL值;
步骤2)客户端收到业务服务器修改TTL值的命令后,会将外发的数据包的TTL值修改为业务服务器指定的TTL值;
步骤3)业务服务器收到交换机镜像过来的数据包后,判断TTL值是否合法,如果TTL值合法,则认定此数据包为合法客户端发送的数据包;
否则继续判断数据包的合法性,并向非法的客户端发送RST包或数据重定向包。
进一步地,优选的是,步骤1中,业务服务器判断客户端是否跨NAT的用户,具体包括:
业务服务器获取客户端登录后发送的本机IP地址;通过客户端连接业务服务器的socket接口获取到对端的IP地址,如果获取到的对端IP和对端提交的本机IP不在一个网段,则判定客户端为跨NAT。
进一步地,优选的是,步骤3中,判断TTL值是否合法,具体包括:
提取数据包中的IP头的数据;
判断IP头的TTL值是否在指定的TTL合法范围内,如果合法,则此数据包直接放行,不进行处理;如果不在指定的TTL合法范围内,则继续按照已有的处理流程判断数据包的合法性。
进一步地,优选的是,步骤3中,向非法的客户端发送RST包或数据重定向包,具体包括:
如果数据包非法,则判断业务服务器与客户端之间是否有指定通讯的http端口,如果有,则发送重定向数据包,其它则发送RST数据包。
进一步地,优选的是,判断数据包的合法性,是基于现有的预设既有策略。
一种跨NAT环境下客户端接入系统,包括:
业务服务器和交换机,且业务服务器镜像旁路连接于交换机上,
所述业务服务器,用于在客户端登录后,判断客户端是否跨NAT的用户,如果用户为跨NAT用户,则判断数据包的合法性,并向合法的客户端发送修改生存时间TTL值的命令,告知修改TTL值;
所述客户端,在收到业务服务器修改TTL值的命令后,会将外发的数据包的TTL值修改为服务器指定的TTL值;
交换机,用于向业务服务器镜像客户端发送的数据包;
业务服务器,进一步在收到交换机镜像过来的数据包后,判断TTL值是否合法,如果TTL值合法,则认定此数据包为合法客户端发送的数据包;
否则继续判断数据包的合法性,并向非法的客户端发送RST包或数据重定向包。
进一步地,优选的是,业务服务器判断客户端是否跨NAT的用户,具体包括:
业务服务器获取客户端登录后发送的本机IP地址;通过客户端连接服务器的socket接口获取到对端的IP地址,如果获取到的对端IP和对端提交的本机IP不在一个网段,则判定客户端为跨NAT。
进一步地,优选的是,业务服务器,判断TTL值是否合法,具体包括:
提取数据包中的IP头的数据;
判断IP头的TTL值是否在指定的TTL合法范围内,如果合法,则此数据包直接放行,不进行处理;如果不在指定的TTL合法范围内,则继续按照已有的处理流程判断数据包的合法性。
进一步地,优选的是,业务服务器,向非法的客户端发送RST包或数据重定向包,具体包括:
如果数据包非法,则判断业务服务器与客户端之间是否有指定通讯的http端口,如果有,则发送重定向数据包,其它则发送RST数据包。
进一步地,优选的是,业务服务器,判断数据包的合法性,是基于现有的预设既有策略。
本发明采取了上述方案以后,在确保不改变客户网络环境的情况下,可以通过分析数据包中的TTL值来判断客户端的数据包是否合法,来实现网络准入的效果。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
下面结合附图对本发明进行详细的描述,以使得本发明的上述优点更加明确。其中,
图1是本发明跨NAT环境下客户端接入系统的示意图;
图2是本发明跨NAT环境下客户端接入方法的示意图;
图3是本发明跨NAT环境下客户端接入方法的示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
TTL:Time To Live,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量,是IPv4包头的一个8bit字段,位于IPv4包的第9个字节。
NAT:Network Address Translation,网络地址转换。
实施例一:
一种跨NAT环境下客户端接入方法,其特征在于,包括:
步骤1)客户端登录后,业务服务器判断客户端是否跨NAT的用户,如果用户为跨NAT用户,则判断数据包的合法性,并向合法的客户端发送修改生存时间TTL值的命令,告知修改TTL值;
步骤2)客户端收到业务服务器修改TTL值的命令后,会将外发的数据包的TTL值修改为业务服务器指定的TTL值;
步骤3)业务服务器收到交换机镜像过来的数据包后,判断TTL值是否合法,如果TTL值合法,则认定此数据包为合法客户端发送的数据包;
否则继续判断数据包的合法性,并向非法的客户端发送RST包或数据重定向包。
本实施例采取了上述方案以后,在确保不改变客户网络环境的情况下,可以通过分析数据包中的TTL值来判断客户端的数据包是否合法,来实现网络准入的效果。
实施例二:
继续对以上实施例进行详细说明,其中,更具体地,步骤1中,业务服务器判断客户端是否跨NAT的用户,具体包括:
业务服务器获取客户端登录后发送的本机IP地址;通过客户端连接业务服务器的socket接口获取到对端的IP地址,如果两个IP不相同,则判定客户端为跨NAT。
步骤3中,判断TTL值是否合法,具体包括:
提取数据包中的IP头的数据;
判断IP头的TTL值是否在指定的TTL合法范围内,如果合法,则此数据包直接放行,不进行处理;如果不在指定的TTL合法范围内,则继续按照已有的处理流程判断数据包的合法性。
向非法的客户端发送RST包或数据重定向包,具体包括:
如果数据包非法,则判断业务服务器与客户端之间是否有指定通讯的http端口,如果有,则发送重定向数据包,其它则发送RST数据包。
实施例三:
结合具体例子进行说明。其中,在该实施例中,其关键点在于服务器会在客户端上线和既有策略更新的情况下,通知跨NAT的客户端插件,告知客户端目前的状态是合法还是非法。跨NAT的客户端会在合法的情况下将往外发送的数据包的TTL值修改为用户指定的TTL值,默认是90-100。工作示意图如如图3所示,具体来说,其具体步骤包括:
1.客户端登录后,业务服务器判断客户端是否跨NAT的用户,如果用户为跨NAT用户,则判断客户端的合法性,并向合法的客户端发送修改TTL值的命令,告知修改TTL的数值。
2.已登陆的跨NAT客户端当状态由非法变为合法后,服务器也会发送相应的修改TTL值的命令。
3.客户端收到服务器修改TTL值的命令后,会将外发的数据包的TTL值修改为服务器指定的TTL值。
4.服务器收到交换机镜像过来的数据包后,内核首先判断TTL值是否是配置的合法TTL值范围内,如果TTL值合法,则认定此数据包为合法客户端发送的数据包,则不予处理,否则继续使用已有的处理策略判断数据包的合法性,向非法的客户端发送RST包或数据重定向包。
更具体地,本方案在技术实现上有如下几个关键点:
判断客户端是否跨NAT用户
1.客户端登录后会发送本机的IP到服务器上,服务器收到IP后,通过客户端连接服务器的socket也可以获取到一个对端的IP地址,如果两个IP不相同,则判定客户端为跨NAT。
客户端修改TTL实现,调用API SetIpTTL设置终端发包默认TTL值。
服务器内核判断TTL合法性
1.收到硬件层发送来的以太网包后,提取IP头的数据。IP头在内核中的结构为structiphdr。
2.判断IP头的TTL值是否在指定的TTL合法范围内,如果合法,则此数据包直接放行,不进行处理;如果不在指定的TTL合法范围内,则继续按照已有的处理流程判断数据包的合法性。
如何判断数据包是发送RST还是重定向
1.控制台会有一个http端口配置项,可以添加指定的http端口,默认只存在80端口,用户可以根据自身需求添加其它的http端口。
2.内核在处理完数据包后,如果数据包非法,则判断端口是否指定的http端口,如果为http端口,则发送重定向数据包,其它则发送RST数据包。
下面以一个实际应用场景为例说下该专利能达到的效果:
某公司的一个办公室的所有人员都通过一个TP-LINK路由器连接到公司的交换机上,交换机做了端口镜像到了金盾的服务器上。当开启准入后,该办公室内未安装金盾客户端的用户都无法访问外部连接。当安装好金盾的客户端后,服务器会根据用户配置的策略判断登陆用户的合法性,合法的用户则拥有访问外部网络的权限,而非法用户虽然已经安装了客户端,但网络还是受限制的,只有变为合法后才会拥有访问网络的权限。
本方案的关键点在于将合法的跨NAT用户的数据包的TTL值进行修改,以达到可以通过镜像数据判断跨NAT用户的合法性。目前的准入产品在旁路情况下都是不处理跨NAT数据的,本方案欲保护此修改网络数据包TTL值实现旁路准入的设计思路。
该方案除了拥有旁路准入的效果外,更实现了对跨NAT环境下客户端的准入,保留了旁路准入不修改用户网路环境的优势,仅仅需要跨NAT用户安装客户端插件即可支持跨NAT准入管理的效果,可以应对客户更加复杂的网络环境。
实施例四:
一种跨NAT环境下客户端接入系统,包括:
业务服务器和交换机,且业务服务器镜像旁路连接于交换机上,
所述业务服务器,用于在客户端登录后,判断客户端是否跨NAT的用户,如果用户为跨NAT用户,则判断数据包的合法性,并向合法的客户端发送修改生存时间TTL值的命令,告知修改TTL值;
所述客户端,在收到业务服务器修改TTL值的命令后,会将外发的数据包的TTL值修改为服务器指定的TTL值;
交换机,用于向业务服务器镜像客户端发送的数据包;
业务服务器,进一步在收到交换机镜像过来的数据包后,判断TTL值是否合法,如果TTL值合法,则认定此数据包为合法客户端发送的数据包;
否则继续判断数据包的合法性,并向非法的客户端发送RST包或数据重定向包。
进一步地,优选的是,业务服务器判断客户端是否跨NAT的用户,具体包括:
业务服务器获取客户端登录后发送的本机IP地址;通过客户端连接服务器的socket接口获取到对端的IP地址,如果获取到的对端IP和对端提交的本机IP不在一个网段,则判定客户端为跨NAT。
进一步地,优选的是,业务服务器,判断TTL值是否合法,具体包括:
提取数据包中的IP头的数据;
判断IP头的TTL值是否在指定的TTL合法范围内,如果合法,则此数据包直接放行,不进行处理;如果不在指定的TTL合法范围内,则继续按照已有的处理流程判断数据包的合法性。
进一步地,优选的是,业务服务器,向非法的客户端发送RST包或数据重定向包,具体包括:
如果数据包非法,则判断业务服务器与客户端之间是否有指定通讯的http端口,如果有,则发送重定向数据包,其它则发送RST数据包。
进一步地,优选的是,业务服务器,判断数据包的合法性,是基于现有的预设既有策略。
本发明采取了上述方案以后,在确保不改变客户网络环境的情况下,可以通过分析数据包中的TTL值来判断客户端的数据包是否合法,来实现网络准入的效果。
需要说明的是,对于上述方法实施例而言,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。