一种adsl无线路由器及使用该路由器在桥接模式下实现强制门户的方法和系统的制作方法_2

文档序号:9276834阅读:来源:国知局
0]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0071]实施例一:
[0072]Linux Netfilter (防火墙)是Linux内核的一项重要的模块组件,其任务为执行数据包的过滤动作,包含INPUT (输入),OUTPUT (输出)和FORWARD (转发)链,用于处理输入、输出和转发包。利用此框架,也可以自定义内核数据包处理流程,提供注册钩子函数机制,如在FORWARD链下注册钩子函数,则所有经过FORWARD链的数据包都会经过自定义的钩子函数,实现对数据包进行定制化的解析处理和改造。
[0073]为解决现有ADSL无线路由器在桥接模式下是没有DHCP服务和域名代理,无法通过域名代理欺骗方式实现强制门户认证的问题,如图1所示,本发明提供一种ADSL无线路由器,在所述路由器Linux内核防火墙中,设有一强制门户单元,所述强制门户单元包括:
[0074]存储模块,用于存储强制门户网络地址;
[0075]截获模块,用于截获客户端所发出的数据报文;
[0076]判断模块,用于判断所述数据报文是否为Http报文中的Get请求报文;
[0077]处理模块,对于Get请求报文,根据存储模块所存储的门户网络地址生成包含重定向网络地址的回复报文;
[0078]回复模块,用于将所述回复报文回传给客户端浏览器。
[0079]强制门户单元注册在Netfilter (防火墙)的NF_INET_PRE_ROUTING (Linux防火墙中钩子函数注册位置)中,通过这种方式,所有转发经过桥的数据报文都会被这个模块截获。
[0080]在路由器系统初始化时,配置路由器信息,其中包括强制门户网络地址(URL),存储模块存储强制门户网络地址(门户URL),设置路由器方式可以是,在云服务器中预存储有路由器配置信息,系统初始化的时候,云服务器下发配置信息给路由器。
[0081]数据报文以SK_BUFF(Linux在其协议栈里传送的结构体,也就是所谓的“包”)形式传入路由器,判断数据报文进入端口是否为Tcp 80端口,Tcp 80端口是为Http (超文本传输协议)开放的,从Tcp 80端口进入的数据报文报文表示是Http协议的报文,Http协议的请求方法有 GET、POST、HEAD、PUT、DELETE、OPT1NS、TRACE、CONNECT,当客户端要从服务器中请求资源读取文档时,使用GET方法,解析过滤Http协议里的GET报文。
[0082]对于GET报文,进入Redirect函数模块,从SK_BUFF中获取这个包的源MAC地址,也就是客户端MAC地址,和Host字段内容(表示请求访问的网络地址),结合初始化的门户网络地址(门户URL)生成一下新的重定向网络地址(Redirect URL),加入客户端MAC地址方便服务器抓取用户信息,进行大数据分析。Redirect函数模块重构一个Tcp回复报文,在这个Tcp报文中加入302重定向标志,如:HTTP/1.1302Moved Permanently,带上重定向网络地址,并重新计算校验码等,这个302Tcp重定向报文会通过无线接口传回给用户客户端浏览器,则浏览器会发起一个新的请求去请求新的302重定向的网络地址,这样就达到了强制门户的功能。
[0083]如图4所示,本实施例还提供一种使用如上所述的路由器实现强制门户的方法,
[0084]该方法具体步骤为:
[0085]SI截获客户端所发出的经过所述路由器的数据报文;
[0086]S2判断数据报文是否为Http报文中的Get请求报文,如果是,则进入下一步骤,如果不是,则放过数据报文;
[0087]S3根据预存的门户网络地址生成包含重定向网络地址的回复报文;
[0088]S4将所述回复报文回传给客户端浏览器。
[0089]路由器截获客户端所发出的数据报文,判断数据报文是否为Http报文中的Get请求报文,如果是,路由器根据预存的门户网络地址生成重定向网络地址回复报文并回传给客户端浏览器,如果不是Http报文中的Get请求报文,则放过数据报文。
[0090]本实施例还提供一种使用如上所述的路由器实现强制门户的系统,包含:
[0091]客户端,包括:
[0092]发送模块:用于发出数据报文;
[0093]接收模块:用于接收回复报文;
[0094]ADSL无线路由器,所述路由器包括强制门户单元,所述强制门户单元包括:
[0095]存储模块,用于存储门户网络地址;
[0096]截获模块,用于截获客户端所发出的数据报文;
[0097]判断模块,用于判断所述数据报文是否为为Http报文中的Get请求报文;
[0098]处理模块,对于Get请求报文,根据预先设置的门户网络地址生成包含重定向网络地址的回复报文;
[0099]回复模块,用于将所述回复报文回传给客户端浏览器。
[0100]客户端发送模块发送数据报文,路由器的截获模块,截获客户端所发出的数据报文,路由器的判断模块,判断所述数据报文是否为Http报文中的Get请求报文,对于Get请求报文,路由器的处理模块,根据预先设置的门户网络地址生成重定向网络地址回复报文,路由器的回复模块将回复报文回传给客户端浏览器。
[0101]实施例二:
[0102]在实现强制门户认证时,还存在一些特殊情况,不需要强制认证即可连接自己需要的网络,特殊情况存在以下几种:
[0103]一、部分网络地址不需要强制网络门户认证,路由器所有者商户的网站等;
[0104]二、部分客户端不需要强制网络门户认证,例如路由器所有者的客户端;
[0105]三、部分子网络不需要强制网络门户认证,路由器可以存在多个子网络,部分子网络用于提供公共网络服务,这部分子网络需要强制网络门户认证;另一部分子网络用于提供路由器所有者内部使用,这部分子网络不需要强制网络门户认证。
[0106]为了实现特殊情况不需要强制网络门户认证,如图2所示,本实施例所提供的ADSL无线路由器与实施一所提供的ADSL无线路由器基本构成相同,区别在于:
[0107]所述存储模块,还存储有数据报文不需要进行强制门户认证的特权信息,所述特权信息包括:特权网络地址信息、特权客户端MAC地址、特权子网络信息中的至少一种;
[0108]所述判断模块还包括:
[0109]特权判断子模块,用于将数据报文与所述存储模块所存储的特权信息进行比对,判断是否属于特权数据报文,放过特权数据报文。
[0110]在路由器系统初始化时,路由器配置信息还包括:特权网络地址信息、特权客户端MAC地址、特权子网络信息,将数据报文与所述存储模块所存储的特权信息进行比对。当数据报文中的请求访问网络地址属于特权网络地址,或者当客户端MAC地址属于特权客户端MAC地址,或者当数据报文来源子网络属于特权子网络时,数据报文称为特权数据报文,放过特权数据报文,无需强制网络门户认证。
[0111]为了实现特殊情况不需要强制网络门户认证,本实施例还提供路由器实现强制门户的方法,与实施例一所提供的路由器实现强制门户的方法基本步骤相同。
[0112]如图5所示,对于部分网络地址不需要强制网络门户认证,
[0113]在步骤S2之后,步骤S3之前还包括步骤:
[0114]S21解析出所述Get请求报文中的请求访问网络地址;
[0115]S22判断所述请求访问网络地址是否为特权网络地址,如果是则放过数据报文,如果不是则进入下一步骤。
[0116]通过以上方法,可以实现访问特权网络地址,例如路由器所有者自己的网站,不需要强制网络门户认证。
[0117]部分客户端不需要强制网络门户认证,
[0118]在步骤SI之后,步骤S3之前还步骤:
[0119]SA2判断所述数据报文来源客户端MAC地址是否为特权客户端MAC地址,如果是,则放过数据报文,如果不是则进入下一步骤。
[0120]对于特权客户端MAC地址,可以在SI步骤之后、S3步骤之前的任意位置进行验证,从SK_BUFF中获取这个包的源MAC地址,也就是客户端MAC地址,为了减少运算步骤,可以将特权客户端MAC地址验证步骤设在S2步骤之前。
[0121]如图6所示,对于部分子网络不需要强制网络门户认证,
[0122]在步骤SI之后,步骤S3之前还步骤:
[0123]SAl判断所述数据报文来源子网络是否为需要强制网络门户认证的子网络,如果是则进入下一步骤,如果不是则放过数据报文。
[0124]在初始化路由器时,无线子网络接口如果不需要强制网络门户认证,则为无线子网络接口打上标志(Mark)为2,表示这个无线接口强制网络门户认证。
[0125]对于数据报文判断进入无线子网络标志(mark)是否为2,为2则表示这个无线子网络接口是不需要强制网络门户认证的,对于这个数据报文做放过处理,不为2则表示是需要强制网络门户认证,进入下一个判断。
[0126]对于子网络是否为需要强制网络门户认证的判断,同样可以在SI步骤之后、S3步骤之前的任意位置进行验证,为了减少运算步骤,可以将特权客户端MAC地址验证步骤设在S2步骤之前。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1