一种Portal认证方法和系统与流程

文档序号:12492999阅读:834来源:国知局
一种Portal认证方法和系统与流程

本发明涉及网络认证安全领域,特别是涉及一种Portal认证方法和系统。



背景技术:

商业环境中,存在着这样的一种wifi网络,无线终端接入此wifi网络后,并不能直接连接internet网络进行上网,而是在浏览器弹出一张特定的网页,让用户输入身份验证信息,然后提交到后台服务器,服务器验证用户身份信息无误后,方可让用户访问internet网络,这种认证方式即“入口认证”,又名“Portal认证”。无线AP设备:无线接入点(Access Point),相当于无线交换机,它是无线终端使用有线网络的接入点,主要用于家庭宽带、企业内部网络部署和商业环境中网络部署等。Portal认证,也称为“web入口认证”,当用户的无线终端接入网络,未认证用户需要上网时候,首先强制用户登录到一个特定的认证网站,然后用户填写相关登录信息,并发送到认证服务器,等到服务器后台验证成功后,放行该用户,此时该用户可以使用互联网资源。

Portal认证是无线网络接入认证的流行技术之一,当用户接入某一无线网络时,会自动弹出Portal页面,提示用户输入账户信息,完成接入认证。无线网络运营者有时为了方便用户接入网络,会临时记住用户STA的MAC地址,即其物理地址、硬件地址,下次再次认证时不需要用户输入账户,直接免认证通过。也有的无线网络运营者的为了提高用户的使用体验和广告投发效率,用户接入无线时,强制推送广告,用户点击或看完广告页面就可直接上网,这些优化的认证方式确实提高了接入效率和用户的实际体验,但也产生了安全风险。现有的Portal认证过程先由STA接入无线AP设备的某一个SSID,无线AP设备要求STA进行Portal认证,并劫持用户的第一个HTTP Request上网请求。无线AP设备响应用户的HTTP Request报文,通过HTTP 302重定向到Portal服务器URL地址,并带上STA原有报文中STA的MAC,然后STA获得无线AP设备重定向的URL地址和STA的MAC,以此URL和MAC再次向Portal服务器发起HTTP Request请求。当前方案是用户在浏览器输入域名(如HTTP://www.sina.com.cn/或者“www.sina.com.cn”),浏览器会发DNS查询包到DNS服务器查询此域名对应的IP地址,获取到后浏览器与此IP地址进行TCP三次连接,连接完成后,浏览器再发送HTTP数据包到此IP地址请求该网站的主页信息。

现有技术的缺点很明显,当用户直接在浏览器输入一个IP地址,而按照HTTP请求协议,不会发送DNS查询报文,而是直接与该IP地址建立TCP连接。而如果该IP地址没有被分配给某台内网或者外网任何一台主机,或者分配了但该主机处于关机状态,那么此时TCP连接就会失败,而TCP连接失败,后续的HTTP请求就不会再进行,更不用说Portal认证。



技术实现要素:

本发明的提供了一种Portal认证方法和系统,其目的在于解决用户在浏览器输入IP地址后也能重定向到Portal认证页进行Portal认证的问题。

本发明提供的技术方案如下:

一种Portal认证方法,包括步骤:

S100无线终端判断在Portal认证页地址栏是否输入IP地址;若是执行步骤S200;否则,执行步骤S400;

S200无线AP设备判断所述IP地址是否为认证服务器对应的IP地址;若是执行步骤S400;否则,执行步骤S300;

S300所述无线AP设备拦截转发给所述认证服务器的TCP连接数据包,使无线AP设备与无线终端进行TCP连接;

S400所述无线终端重定向请求Portal认证页,完成Portal认证。

无线终端设备打开网页或其它应用程序时,会触发发送上网请求报文,大多时候,用户都是通过网址导航主页直接进入,然而若用户在浏览器IP地址,如果该IP地址没有被分配给某台内网或者外网任何一台主机,或者分配了但该主机处于关机状态,那么此时TCP连接就会失败,而TCP连接失败,后续的HTTP请求就不会再进行,从而导致无线终端认证结果失败,无线终端无法通过认证,从而无法获得上网权限。这里,通过判断在Portal认证页地址栏是否输入IP地址,并进一步判断输入的IP地址是否为认证服务器对应的IP地址,如果输入的是IP地址且不是认证服务器对应的IP地址,那么无线AP设备拦截转发给认证服务器的TCP连接数据包,使无线AP设备与无线终端进行TCP连接,然后在重定向请求Portal认证页,完成Portal认证。如果输入的不是IP地址,也就是说输入的是域名,那么认证服务器获取到该无线终端的上网请求后,便从所述请求报文中解析出该无线终端的MAC地址,然后响应无线终端的上网请求,返回给无线终端重定向报文,报文携带了重定向的地址和解析出的该无线终端的MAC地址,无线终端根据此重定向报文,打开Portal认证界面,根据重定向的地址发送认证请求报文,完成Portal认证。如果输入的是IP地址,但该地址是Portal URL对应的IP地址,那么无线AP设备对无线终端发送到Portal URL对应的IP地址不拦截,而是直接放行转发出去,让无线终端直接和Portal认证服务器建立TCP连接。可以避免用户输入网络不可达的IP地址导致不能Portal认证问题,同时对用户输入域名的情况也不产生任何负面影响。在内网与外部网络拥堵或者网速很慢的情况下,用户可以根据预先知道的URL对应的IP地址,直接输入该IP地址进行Portal认证连接,可以大大加速Portal认证过程。

进一步的,所述步骤S300包括步骤:

S310所述无线AP设备拦截所述无线终端发送的SYN握手数据包,并构造SYN ACK握手数据包;

S320所述无线AP设备发送所述SYN ACK握手数据包至所述无线终端;并丢弃所述SYN握手数据包;

S330所述无线终端接收所述SYN ACK握手数据包;并发送ACK握手数据包至所述无线AP设备;

S340所述无线终端发送HTTP数据包至所述无线AP设备。

本发明中,无线AP设备工作于桥模式下,在无线AP设备的嵌入式linux内核中注册钩子函数(又名HOOK函数)直接拦截无线终端发来的TCP的SYN数据包,即TCP第一次握手数据包,然后在钩子函数中,直接构造TCP第二次握手的报文,即SYN ACK报文,并通过内核发送函数直接发送到无线终端,然后将第一次握手的数据报文丢弃,此时第一次握手报文不会通过无线AP设备转发出去,第二次握手完成后,无线终端收到SYN ACK报文后,会发送ACK数据包进行第三次握手。TCP连接是在无线终端和无线AP设备之间完成,用时很短,大大提高了连接速率。

进一步的,所述步骤S310包括步骤:

S311所述无线终端发送所述TCP连接请求数据包至所述无线AP设备;

S312所述无线AP设备获取所述无线终端发送的第一次数据包;

S313所述无线AP设备对所述第一次数据包进行解析,得到数据报文和字段参数;

S314所述无线AP设备根据所述数据报文,判断标识位是否符合预设判断条件;若是执行步骤S314;

S315获取的所述第一次数据包是所述SYN握手数据包;

S316所述无线AP设备根据预设的拦截指令,拦截所述无线无线AP设备转发所述SYN握手数据包至认证服务器;

S317所述无线AP设备根据所述字段参数构造SYN ACK握手数据包。

本发明中,在内核注册一个钩子函数,因为无线AP设备工作在桥模式下,是对无线AP设备转发的数据包进行拦截(对发到无线AP设备本身的数据包不作任何处理),所以HOOK点放在NF_IP_FORWARD,因为TCP第一次连接,TCP报文头的标志位SYN为1,解析从内核勾出来的skb_buf数据报文,当解析出TCP报文头时候进行判断,当标志位满足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”条件时候,说明此数据包为TCP连接第一次握手的数据包。将此数据包必要的字段解析出来,如源MAC地址、目的MAC地址、源IP地址、目的IP地址等,这次重要的字段参数为后续的构造SYN ACK包作数据准备,然后根据这些解析出来的参数构造SYN ACK数据包,在内核中构造SYN ACK数据包很容易,这里不一一描述如何构造SYN ACK包,这里假设已经构造好了该数据包,根据TCP协议,SYN ACK包是TCP连接第二次握手的数据包,所以构造好后直接从无线AP设备内核发送到无线终端,发送完毕后直接将第一次握手的SYN包在无线AP设备内部丢弃(内核代码NF_DROP),不发送到无线AP设备IP地址主机。当无线终端收到无线AP设备发来的SYN ACK数据包,确认无误后,回复第三次握手的ACK包,然后发送HTTP包到无线AP设备,接下来的流程就和常规Portal流程一样,不再描述,但是需要注意的是,Portal URL对应的IP地址应当假装白名单,也就是说无线终端发送到Portal URL对应的IP地址不拦截,而是直接放行转发出去,让无线终端直接和Portal服务器建立TCP连接。

进一步的,所述字段参数包括:源MAC地址、目的MAC地址、源IP地址、目的IP地址;所述预设判断条件为标识位满足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”。

进一步的,所述无线AP设备工作模式为桥接模式;所述无线AP设备内核设有预设的拦截指令。

本发明中,在无线AP设备的嵌入式linux内核中注册钩子函数或回调函数,只要能够实现拦截指令即可,对无线AP设备拦截无线终端发来的TCP的SYN数据包的方式不限定。

本发明还提供一种Portal认证系统,包括:

无线终端,所述无线终端与无线AP设备通讯连接;所述无线终端判断在Portal认证页地址栏是否输入IP地址;

无线AP设备,所述无线AP设备与认证服务器通讯连接;所述无线AP设备判断所述IP地址是否为所述认证服务器对应的IP地址;

当在Portal认证页地址栏输入IP地址,并且所述IP地址不是所述认证服务器对应的IP地址拦;所述无线AP设备拦截转发给认证服务器的TCP连接数据包;无线AP设备与无线终端进行TCP连接;

当所述无线终端在Portal认证页地址栏不输入IP地址;或者,

当所述无线终端在Portal认证页地址栏输入IP地址,所述IP地址是所述认证服务器对应的IP地址拦,所述无线终端重定向请求Portal认证页,完成Portal认证。

本发明中,无线终端判断在Portal认证页地址栏是否输入IP地址,并无线AP设备判断所述IP地址是否为所述认证服务器对应的IP地址。如果输入的是IP地址且不是认证服务器对应的IP地址,那么无线AP设备拦截转发给认证服务器的TCP连接数据包,使无线AP设备与无线终端进行TCP连接,然后在重定向请求Portal认证页,完成Portal认证。如果输入的不是IP地址,也就是说输入的是域名,那么认证服务器与无线终端进行TCP连接,完成Portal认证。如果输入的是IP地址,但该地址是Portal URL对应的IP地址,那么无线AP设备对无线终端发送到Portal URL对应的IP地址不拦截,而是直接放行转发出去,让无线终端直接和Portal认证服务器建立TCP连接。可以避免用户输入网络不可达的IP地址导致不能Portal认证问题,同时对用户输入域名的情况也不产生任何负面影响。在内网与外部网络拥堵或者网速很慢的情况下,用户可以根据预先知道的URL对应的IP地址,直接输入该IP地址进行Portal认证连接,可以大大加速Portal认证过程。

进一步的,所述无线AP设备包括:

判断模块,所述判断模块与拦截模块通讯连接;判断所述IP地址是否为所述认证服务器对应的IP地址;

控制模块,所述无线AP设备拦截所述无线终端发送的SYN握手数据包;构造SYN ACK握手数据包;发送所述SYN ACK握手数据包至所述无线终端;并丢弃所述SYN握手数据包;

所述无线终端包括:

发送模块,所述发送模块与接收模块通讯连接;发送所述TCP连接请求数据包至所述无线AP设备;发送ACK握手数据包至所述无线AP设备;发送HTTP数据包至所述无线AP设备;

接收模块,接收所述SYN ACK握手数据包。

无线AP设备工作于桥模式下,在无线AP设备的嵌入式linux内核中注册钩子函数(又名HOOK函数)直接拦截无线终端发来的TCP的SYN数据包,即TCP第一次握手数据包,然后在钩子函数中,直接构造TCP第二次握手的报文,即SYN ACK报文,并通过内核发送函数直接发送到无线终端,然后将第一次握手的数据报文丢弃,此时第一次握手报文不会通过无线AP设备转发出去,第二次握手完成后,无线终端收到SYN ACK报文后,会发送ACK数据包进行第三次握手。TCP连接是在无线终端和无线AP设备之间完成,用时很短,大大提高了连接速率。

进一步的,所述控制模块包括:

获取子模块,所述获取子模块与解析子模块通讯连接;获取所述无线终端发送的第一次数据包;

解析子模块,所述解析子模块与判断子模块通讯连接;对所述第一次数据包进行解析,得到数据报文和字段参数;

判断子模块,所述判断子模块与输出子模块通讯连接;根据所述数据报文,判断标识位是否符合预设判断条件;

输出子模块,所述输出子模块与拦截子模块通讯连接;输出获取的所述第一次数据包是所述TCP SYN握手数据包;

拦截子模块,所述拦截子模块与构造子模块通讯连接;根据预设的拦截指令,拦截所述无线无线AP设备转发所述TCP SYN握手数据包至认证服务器;

构造子模块,根据所述字段参数构造TCP SYN ACK握手数据包。

在内核注册一个钩子函数,因为无线AP设备工作在桥模式下,是对无线AP设备转发的数据包进行拦截(对发到无线AP设备本身的数据包不作任何处理),所以HOOK点放在NF_IP_FORWARD,因为TCP第一次连接,TCP报文头的标志位SYN为1,解析从内核勾出来的skb_buf数据报文,当解析出TCP报文头时候进行判断,当标志位满足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”条件时候,说明此数据包为TCP连接第一次握手的数据包。将此数据包必要的字段解析出来,如源MAC地址、目的MAC地址、源IP地址、目的IP地址等,这次重要的字段参数为后续的构造SYN ACK包作数据准备,然后根据这些解析出来的参数构造SYN ACK数据包,在内核中构造SYN ACK数据包很容易,这里不一一描述如何构造SYN ACK包,这里假设已经构造好了该数据包,根据TCP协议,SYN ACK包是TCP连接第二次握手的数据包,所以构造好后直接从无线AP设备内核发送到无线终端,发送完毕后直接将第一次握手的SYN包在无线AP设备内部丢弃(内核代码NF_DROP),不发送到无线AP设备IP地址主机。当无线终端收到无线AP设备发来的SYN ACK数据包,确认无误后,回复第三次握手的ACK包,然后发送HTTP包到无线AP设备,接下来的流程就和常规Portal流程一样,不再描述,但是需要注意的是,Portal URL对应的IP地址应当假装白名单,也就是说无线终端发送到Portal URL对应的IP地址不拦截,而是直接放行转发出去,让无线终端直接和Portal服务器建立TCP连接。

进一步的,所述字段参数包括:源MAC地址、目的MAC地址、源IP地址、目的IP地址;所述预设判断条件为标识位满足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”。

进一步的,所述无线AP设备工作模式为桥接模式;所述无线AP设备内核设有预设的拦截指令。

本发明中,在无线AP设备的嵌入式linux内核中注册钩子函数或回调函数,只要能够实现拦截指令即可,对无线AP设备拦截无线终端发来的TCP的SYN数据包的方式不限定。

与现有技术相比,本发明提供一种Portal认证方法和系统,至少带来以下一种技术效果:

1、可以避免用户输入网络不可达的IP地址导致不能Portal认证问题,同时对用户输入域名的情况也不产生任何负面影响。

2、在内网与外部网络拥堵或者网速很慢的情况下,根据预先知道的URL对应的IP地址,直接输入该IP地址进行Portal认证连接,可以大大加速Portal认证过程。

附图说明

下面将以明确易懂的方式,结合附图说明优选实施方式,对一种Portal认证方法和系统的特性、技术特征、优点及其实现方式予以进一步说明。

图1是本发明一种Portal认证方法一个实施例的流程图;

图2是本发明一种Portal认证方法另一个实施例的流程图;

图3是本发明一种Portal认证方法另一个实施例的过程图;

图4是本发明一种Portal认证系统一个实施例的结构示意图;

图5是本发明一种Portal认证系统另一个实施例的结构示意图。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。

为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。

参照图1所示,本发明提供了一种Portal认证方法的一个实施例,包括步骤:

S100无线终端判断在Portal认证页地址栏是否输入IP地址;若是执行步骤S200;否则,执行步骤S400;

S200无线AP设备判断所述IP地址是否为认证服务器对应的IP地址;若是执行步骤S400;否则,执行步骤S300;

S300所述无线AP设备拦截转发给所述认证服务器的TCP连接数据包,使无线AP设备与无线终端进行TCP连接;

S400所述无线终端重定向请求Portal认证页,完成Portal认证。

无线终端设备打开网页或其它应用程序时,会触发发送上网请求报文,大多时候,用户都是通过网址导航主页直接进入,然而若用户在浏览器IP地址,如果该IP地址没有被分配给某台内网或者外网任何一台主机,或者分配了但该主机处于关机状态,那么此时TCP连接就会失败,而TCP连接失败,后续的HTTP请求就不会再进行,从而导致无线终端认证结果失败,无线终端无法通过认证,从而无法获得上网权限。这里,通过判断在Portal认证页地址栏是否输入IP地址,并进一步判断输入的IP地址是否为认证服务器对应的IP地址,如果输入的是IP地址且不是认证服务器对应的IP地址,那么无线AP设备拦截转发给认证服务器的TCP连接数据包,使无线AP设备与无线终端进行TCP连接,然后在重定向请求Portal认证页,完成Portal认证。如果输入的不是IP地址,也就是说输入的是域名,那么认证服务器获取到该无线终端的上网请求后,便从所述请求报文中解析出该无线终端的MAC地址,然后响应无线终端的上网请求,返回给无线终端重定向报文,报文携带了重定向的地址和解析出的该无线终端的MAC地址,无线终端根据此重定向报文,打开Portal认证界面,根据重定向的地址发送认证请求报文,完成Portal认证。如果输入的是IP地址,但该地址是Portal URL对应的IP地址,那么无线AP设备对无线终端发送到Portal URL对应的IP地址不拦截,而是直接放行转发出去,让无线终端直接和Portal认证服务器建立TCP连接。可以避免用户输入网络不可达的IP地址导致不能Portal认证问题,同时对用户输入域名的情况也不产生任何负面影响。在内网与外部网络拥堵或者网速很慢的情况下,用户可以根据预先知道的URL对应的IP地址,直接输入该IP地址进行Portal认证连接,可以大大加速Portal认证过程。

参照图2所示,相同的部分不再赘述。本发明提供一种Portal认证方法的另一个实施例,包括步骤:

S311所述无线终端发送所述TCP连接请求数据包至所述无线AP设备;

S312所述无线AP设备获取所述无线终端发送的第一次数据包;

S313所述无线AP设备对所述第一次数据包进行解析,得到数据报文和字段参数;

S314所述无线AP设备根据所述数据报文,判断标识位是否符合预设判断条件;若是执行步骤S314;

S315获取的所述第一次数据包是所述SYN握手数据包;

S316所述无线AP设备根据预设的拦截指令,拦截所述无线无线AP设备转发所述SYN握手数据包至认证服务器;

S317所述无线AP设备根据所述字段参数构造SYN ACK握手数据包;

S320所述无线AP设备发送所述SYN ACK握手数据包至所述无线终端;并丢弃所述SYN握手数据包;

S330所述无线终端接收所述SYN ACK握手数据包;并发送ACK握手数据包至所述无线AP设备;

S340所述无线终端发送HTTP数据包至所述无线AP设备。

本发明实施例中,无线AP设备工作于桥模式下,在无线AP设备的嵌入式linux内核中注册钩子函数(又名HOOK函数)直接拦截无线终端发来的TCP的SYN数据包,即TCP第一次握手数据包,然后在钩子函数中,直接构造TCP第二次握手的报文,即SYN ACK报文,并通过内核发送函数直接发送到无线终端,然后将第一次握手的数据报文丢弃,此时第一次握手报文不会通过无线AP设备转发出去,第二次握手完成后,无线终端收到SYN ACK报文后,会发送ACK数据包进行第三次握手。TCP连接是在无线终端和无线AP设备之间完成,用时很短,大大提高了连接速率。本发明实施例中,在内核注册一个钩子函数,因为无线AP设备工作在桥模式下,是对无线AP设备转发的数据包进行拦截(对发到无线AP设备本身的数据包不作任何处理),所以HOOK点放在NF_IP_FORWARD,因为TCP第一次连接,TCP报文头的标志位SYN为1,解析从内核勾出来的skb_buf数据报文,当解析出TCP报文头时候进行判断,当标志位满足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”条件时候,说明此数据包为TCP连接第一次握手的数据包。将此数据包必要的字段解析出来,如源MAC地址、目的MAC地址、源IP地址、目的IP地址等,这次重要的字段参数为后续的构造SYN ACK包作数据准备,然后根据这些解析出来的参数构造SYN ACK数据包,在内核中构造SYN ACK数据包很容易,这里不一一描述如何构造SYN ACK包,这里假设已经构造好了该数据包,根据TCP协议,SYN ACK包是TCP连接第二次握手的数据包,所以构造好后直接从无线AP设备内核发送到无线终端,发送完毕后直接将第一次握手的SYN包在无线AP设备内部丢弃(内核代码NF_DROP),不发送到无线AP设备IP地址主机。当无线终端收到无线AP设备发来的SYN ACK数据包,确认无误后,回复第三次握手的ACK包,然后发送HTTP包到无线AP设备,接下来的流程就和常规Portal流程一样,不再描述,但是需要注意的是,Portal URL对应的IP地址应当假装白名单,也就是说无线终端发送到Portal URL对应的IP地址不拦截,而是直接放行转发出去,让无线终端直接和Portal服务器建立TCP连接。所述无线AP设备工作模式为桥接模式;所述无线AP设备内核设有预设的拦截指令。本发明实施例中,在无线AP设备的嵌入式linux内核中注册钩子函数或回调函数,只要能够实现拦截指令即可,对无线AP设备拦截无线终端发来的TCP的SYN数据包的方式不限定。如图2所示,首先无线终端用户在浏览器直接输入源IP地址+目的IP地址(该目的IP地址并未对任何主机分配),如果按照常规Portal方案,那么此时无线AP设备将SYN数据包转发出去,由于不存在该主机,所以不会有SYN ACK数据包返回,多次尝试后,连接超时结束,此时浏览器便不再有任何响应,在本方案中无线AP设备构造SYN ACK数据包(源IP地址是用户使用的无线终端IP地址,而不是无线AP设备的IP地址;目的IP地址不是认证服务器的IP地址,而是用户想要访问的网址对应的主机IP地址)发送给无线终端,无线终端再发送ACK包给无线AP设备,然后再次和常规Portal方案一致进行HTTP请求,重定向请求Portal认证页,认证等步骤(Portal.com为Portal认证页地址)。

参照图3所示,本发明提供一种Portal认证系统的一个实施例,Portal认证系统1000包括:

无线终端100,所述无线终端100与无线AP设备200通讯连接;所述无线终端100判断在Portal认证页地址栏是否输入IP地址;

无线AP设备200,所述无线AP设备200与认证服务器300通讯连接;所述无线AP设备200判断所述IP地址是否为所述认证服务器300对应的IP地址;

当在Portal认证页地址栏输入IP地址,并且所述IP地址不是所述认证服务器300对应的IP地址拦;所述无线AP设备200拦截转发给认证服务器300的TCP连接数据包;无线AP设备200与无线终端100进行TCP连接;

当所述无线终端100在Portal认证页地址栏不输入IP地址;或者,

当所述无线终端100在Portal认证页地址栏输入IP地址,所述IP地址是所述认证服务器300对应的IP地址拦,所述无线终端100重定向请求Portal认证页,完成Portal认证。

本发明实施例中,无线终端100判断在Portal认证页地址栏是否输入IP地址,并无线AP设备200判断所述IP地址是否为所述认证服务器300对应的IP地址。如果输入的是IP地址且不是认证服务器300对应的IP地址,那么无线AP设备200拦截转发给认证服务器300的TCP连接数据包,使无线AP设备200与无线终端100进行TCP连接,然后在重定向请求Portal认证页,完成Portal认证。如果输入的不是IP地址,也就是说输入的是域名,那么认证服务器300与无线终端100进行TCP连接,完成Portal认证。如果输入的是IP地址,但该地址是Portal URL对应的IP地址,那么无线AP设备200对无线终端100发送到Portal URL对应的IP地址不拦截,而是直接放行转发出去,让无线终端100直接和Portal认证服务器300建立TCP连接。可以避免用户输入网络不可达的IP地址导致不能Portal认证问题,同时对用户输入域名的情况也不产生任何负面影响。在内网与外部网络拥堵或者网速很慢的情况下,用户可以根据预先知道的URL对应的IP地址,直接输入该IP地址进行Portal认证连接,可以大大加速Portal认证过程。

参照图4所示,相同的部分不再赘述。本发明提供一种Portal认证系统的另一个实施例,所述无线AP设备200包括:

判断模块210,所述判断模块210与拦截模块通讯连接;判断所述IP地址是否为所述认证服务器300对应的IP地址;

控制模块220,所述无线AP设备200拦截所述无线终端100发送的SYN握手数据包;构造SYN ACK握手数据包;发送所述SYN ACK握手数据包至所述无线终端100;并丢弃所述SYN握手数据包;

进一步的,所述控制模块220包括:

获取子模块221,所述获取子模块221与解析子模块222通讯连接;获取所述无线终端100发送的第一次数据包;

解析子模块222,所述解析子模块222与判断子模块223通讯连接;对所述第一次数据包进行解析,得到数据报文和字段参数;

判断子模块223,所述判断子模块223与输出子模块224通讯连接;根据所述数据报文,判断标识位是否符合预设判断条件;

输出子模块224,所述输出子模块224与拦截子模块225通讯连接;输出获取的所述第一次数据包是所述TCP SYN握手数据包;

拦截子模块225,所述拦截子模块225与构造子模块226通讯连接;根据预设的拦截指令,拦截所述无线无线AP设备200转发所述TCP SYN握手数据包至认证服务器300;

构造子模块226,根据所述字段参数构造TCP SYN ACK握手数据包。

所述无线终端100包括:

发送模块110,所述发送模块110与接收模块120通讯连接;发送所述TCP连接请求数据包至所述无线AP设备200;发送ACK握手数据包至所述无线AP设备200;发送HTTP数据包至所述无线AP设备200;

接收模块120,接收所述SYN ACK握手数据包。

无线AP设备200工作于桥模式下,在无线AP设备200的嵌入式linux内核中注册钩子函数(又名HOOK函数)直接拦截无线终端100发来的TCP的SYN数据包,即TCP第一次握手数据包,然后在钩子函数中,直接构造TCP第二次握手的报文,即SYN ACK报文,并通过内核发送函数直接发送到无线终端100,然后将第一次握手的数据报文丢弃,此时第一次握手报文不会通过无线AP设备200转发出去,第二次握手完成后,无线终端100收到SYN ACK报文后,会发送ACK数据包进行第三次握手。TCP连接是在无线终端100和无线AP设备200之间完成,用时很短,大大提高了连接速率。

在内核注册一个钩子函数,因为无线AP设备200工作在桥模式下,是对无线AP设备200转发的数据包进行拦截(对发到无线AP设备200本身的数据包不作任何处理),所以HOOK点放在NF_IP_FORWARD,因为TCP第一次连接,TCP报文头的标志位SYN为1,解析从内核勾出来的skb_buf数据报文,当解析出TCP报文头时候进行判断,当标志位满足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”条件时候,说明此数据包为TCP连接第一次握手的数据包。将此数据包必要的字段解析出来,如源MAC地址、目的MAC地址、源IP地址、目的IP地址等,这次重要的字段参数为后续的构造SYN ACK包作数据准备,然后根据这些解析出来的参数构造SYN ACK数据包,在内核中构造SYN ACK数据包很容易,这里不一一描述如何构造SYN ACK包,这里假设已经构造好了该数据包,根据TCP协议,SYN ACK包是TCP连接第二次握手的数据包,所以构造好后直接从无线AP设备200内核发送到无线终端100,发送完毕后直接将第一次握手的SYN包在无线AP设备200内部丢弃(内核代码NF_DROP),不发送到无线AP设备200IP地址主机。当无线终端100收到无线AP设备200发来的SYN ACK数据包,确认无误后,回复第三次握手的ACK包,然后发送HTTP包到无线AP设备200,接下来的流程就和常规Portal流程一样,不再描述,但是需要注意的是,Portal URL对应的IP地址应当假装白名单,也就是说无线终端100发送到Portal URL对应的IP地址不拦截,而是直接放行转发出去,让无线终端100直接和Portal服务器建立TCP连接。

所述无线AP设备200工作模式为桥接模式;所述无线AP设备200内核设有预设的拦截指令。本发明实施例中,在无线AP设备200的嵌入式linux内核中注册钩子函数或回调函数,只要能够实现拦截指令即可,对无线AP设备200拦截无线终端100发来的TCP的SYN数据包的方式不限定。

应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1