一种路由器防火墙下网络访问方法及路由器与流程

文档序号:13763411阅读:553来源:国知局
一种路由器防火墙下网络访问方法及路由器与流程

本发明涉及互联网领域,尤其涉及一种路由器防火墙下网络访问方法及路由器。



背景技术:

Linux netfilter防火墙是Linux内核的一项重要的模块组件,其任务为执行数据包的过滤动作,包含INPUT,OUTPUT和FORWARD链,用于处理输入,输出和转发包。利用此框架,也可以编写自己的内核数据包处理流程,提供了注册钩子函数的机制,如在FORWARD链下注册钩子函数,则所有经过FORWARD链的数据包都会经过自定义的这个钩子函数里面,就可以对数据包进行一些定制化的解析处理和改造。

在自定义的FORWARD钩子函数中,自定义防火墙规则、解析包,并对包进行过滤。定义白名单IP列表,白名单URL列表,所有访问IP为在白名单IP列表中的,所有DNS和DHCP的报文,允许通过。以及所有访问Http get请求中的HOST字段在白名单URL中的报文允许通过,因为http get请求HOST字段为白名单的URL,是定义的portal认证页面和广告页面,这些页面是允许通过。除此之外,所有其他业务的报文在未portal成功前都是不允许访问的,防火墙规则会DROP掉这些报文。

而在某些特定情况下,比如微信公众号关注并认证,在进行微信关注的时候需要进行网络访问,而portal的路由器带有防火墙功能,用户未认证成功之前是不能访问任何网络,而微信APP有时候会访问其已经存储的微信域名对应的IP地址,这种情况下,用户通过微信进行关注时直接访问IP地址,则无法访问到网络。



技术实现要素:

为解决上述技术问题,本发明提供一种路由器防火墙下网络访问方法及路由器,在未完成portal认证的情况下实现网络访问。

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

本发明公开了一种路由器防火墙下网络访问方法,包括步骤:S100、截获智能终端发送的连接请求报文,并根据所述连接请求报文获取目标服务器的目的IP地址;S200、判断所述目的IP地址是否在预存的白名单IP列表内;S300、当所述目的IP地址不在预存白名单IP列表内时,根据所述连接请求报文伪装成目标服务器,与智能终端建立TCP连接;S400、截获智能终端向目标服务器发送的http post请求报文,并匹配所述http post请求报文的特征码是否在预存的白名单URL列表内;所述特征码为目标服务器的域名;S500、当所述特征码在预存白名单URL列表内时,将所述http post请求报文发送至目标服务器;S600、接收目标服务器返回的http post应答报文并将所述http post应答报文发送至智能终端,完成网络访问。

进一步优选的,所述步骤S100之前还包括步骤:S000、预先配置白名单IP列表和白名单URL列表,并将目标服务器的域名添加到所述白名单URL列表。

进一步优选的,所述步骤S100和所述步骤S000之间还包括步骤:S051、拦截目标服务器返回给智能终端的域名解析回复报文;S052、根据所述域名解析回复报文获取对应目标服务器的IP地址;S053、将目标服务器的IP地址加入到所述白名单IP列表内。

进一步优选的,所述步骤S300进一步包括步骤:S301、根据所述连接请求报文获得目标服务器的目的IP地址和目的MAC地址;S302、根据所述目的IP地址和目的MAC地址生成连接应答报文;S303、发送所述连接应答报文至智能终端,与智能终端建立TCP连接。

进一步优选的,所述步骤S500之后还包括步骤:S600、解析所述http post请求报文获得目的IP地址,将所述目的IP地址加入到预存的所述白名单IP列表内。

本发明还公开一种路由器,用于在防火墙下实现智能终端访问目标服务器,包括:报文截获模块,用于截获智能终端发送的连接请求报文和http post请求报文;IP地址获取模块,用于根据所述连接请求报文获取目标服务器的目的IP地址;IP地址判断模块,用于判断所述目的IP地址是否在预存的白名单IP列表内;TCP连接模块,用于当所述目的IP地址不在预存白名单IP列表内时,根据所述连接请求报文伪装成目标服务器,与智能终端建立TCP连接;特征码匹配模块,用于匹配所述http post请求报文的特征码是否在预存的白名单URL列表内;转发模块,用于当所述特征码在预存白名单URL列表内时,将所述http post请求报文发送至目标服务器;以及还用于将目标服务器返回的http post应答报文发送至智能终端,完成网络访问。

进一步优选的,还包括:配置模块,用于预先配置白名单IP列表和白名单URL列表,并将目标服务器的域名添加到所述白名单URL列表。

进一步优选的,所述报文拦截模块还用于拦截目标服务器返回给智能终端的地址解析回复报文;所述IP地址获取模块还用于根据所述域名解析回复报文获取对应目标服务器的IP地址;所述配置模块还用于将目标服务器的IP地址加入到所述白名单IP列表内。

进一步优选的,所述TCP连接模块进一步包括:连接应答报文生成模块,用于根据所述连接请求报文获得目标服务器的目的IP地址和目的MAC地址,并根据所述目的IP地址和目的MAC地址生成连接应答报文;所述转发模块还用于发送所述连接应答报文至智能终端。

进一步优选的,解析模块,用于解析所述http post请求报文获得目的IP地址;所述配置模块还用于将所述目的IP地址加入到预存的所述白名单IP列表内。

本发明提供了一种在portal路由器防火墙下网络访问方法,即使在未通过portal认证的情况下,智能终端也能通过路由器进行目标服务器的访问,本发明既保留了防火墙的安全功能,又能够实现让目标服务器在特定情况下正常被访问,相比于现有技术,具有更优的技术效果。

附图说明

下面将以明确易懂的方式,结合附图说明优选实施方式,对本发明予以进一步说明。

图1为本发明一种路由器防火墙下网络访问方法的主要步骤示意图;

图2为本发明一种路由器防火墙下网络访问方法的完整步骤示意图;

图3为本发明一种路由器的主要组成示意图;

图4为本发明一种路由器的完整组成示意图。

附图标号说明:

1、报文截获模块,2、IP地址获取模块,3、IP地址判断模块,4、TCP连接模块,41、连接应答报文生成模块,5、特征码匹配模块,6、转发模块,7、配置模块,8、解析模块。

具体实施方式

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

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

图1为本发明一种路由器防火墙下网络访问方法的主要步骤示意图,作为本发明的一个具体实施例,如图1所示,一种路由器防火墙下网络访问方法,包括步骤:S100、截获智能终端发送的连接请求报文,并根据所述连接请求报文获取目标服务器的目的IP地址;S200、判断所述目的IP地址是否在预存的白名单IP列表内;S300、当所述目的IP地址不在预存白名单IP列表内时,根据所述连接请求报文伪装成目标服务器,与智能终端建立TCP连接;S400、截获智能终端向目标服务器发送的http post请求报文,并匹配所述http post请求报文的特征码是否在预存的白名单URL列表内;所述特征码为目标服务器的域名;S500、当所述特征码在预存白名单URL列表内时,将所述http post请求报文发送至目标服务器;S600、接收目标服务器返回的http post应答报文并将所述http post应答报文发送至智能终端,完成网络访问。

具体的,本发明中网络访问以通过微信APP关注公众号为例,详细阐述本发明内容。

目前一些定制的路由器都带有portal的功能,用户未认证成功前访问网页都会弹出广告页面,需要用户输入用户信息进行验证通过才能完全上网。用户未认证前不能访问任何网络业务。但目前都有微信认证,用微信关注公众号,然后点击一键认证进行认证。Portal的路由器都是带有防火墙功能的,在没有认证成功前大部分网络业务是不能用的,因为把微信业务配置在了白名单里面,所以打开微信是可以的。这里白名单的原理是配置IP或者配置URL,配置URL是路由器跟踪了智能终端的地址解析请求,如果发现智能终端的地址解析请求和配置的URL相同的,则把解析到的IP地址下发到白名单IP列表里面。

但微信关注会有个特例,因为微信APP有些时候已经存储了微信域名对应的IP,所以连上路由器后,它不需要经过地址解析请求就访问微信服务器的IP地址。在portal未认证的情况下,这种访问业务是不通的。因为这个IP不在路由器的白名单IP列表中,因此路由器会drop掉这种数据包的。然而,在这种情况下,用户也就无法成功关注微信公众号从而完成一键认证。

目前解决上述问题有两种方法,但都有一些弊端,具体如下:

1.防火墙功能做的弱一点,在未认证的情况下,防火墙只去检查http报文中的get报文,如果http get报文中的host字段带的URL不在白名单URL列表里面,则弹出portal url认证页面。这种情况下,只是对浏览网页的业务进行了劫持,其他APP等非浏览网页的业务在非认证的情况下还是能够使用的。这样做的一个弊端就是未认证成功时,除了浏览网页的上网业务被禁掉后,其他APP应用还都可以使用,这和产品的设计,未认证成功前,所有的网络业务都不能使用时有点出入的。

2.因为微信APP有些微信域名的IP在连上无线路由器前已经记住,所以不会发送DNS域名解析请求,导致无线路由器解析不到这些IP。一种方法就是把这些域名对应的IP预先就解析出来,预先下发在路由器的白名单IP列表中,这样微信APP的关注请求就能够通过。这种方法的弊端是预先解析出来的微信IP如果存在遗漏或微信域名对应的IP若产生变化,微信关注业务就不能正常使用。

本发明基于上述问题,提供了一种在有portal防火墙的情况下,在未认证的前提下,去实现网络访问比如完成微信关注的一种解决方法,通过截获智能终端发送的用于TCP连接的连接请求报文,并根据连接请求报文中的目的IP和目的MAC地址伪装成需要访问的目标服务器,生成用于TCP连接的连接应答报文发送至智能终端,与智能终端建立假的TCP连接。假三次握手建立好后,智能终端发送http 80端口的Http post请求报文,该包的特征是POST/cgi-bin/micromsg-bin/verifyuser HTTP/1.0,host的字段为被访问目标服务器的域名。路由器在包过滤阶段捕获到这个包的特征码,即该包的host字段,判断该特征码与预先配置的白名单URL列表匹配,则对这个包做放行通过处理。

图2为本发明一种路由器防火墙下网络访问方法的完整步骤示意图。优选的,如图2所示,所述步骤S100之前还包括步骤:S000、预先配置白名单IP列表和白名单URL列表,并将目标服务器的域名添加到所述白名单URL列表。

具体的,定义一张白名单IP列表,在防火墙规则中所有源IP或者目的IP在此白名单IP列表中的数据包都允许通过。预配置白名单IP列表和白名单URL列表,下发到内核模块数据表项中。下发目标服务器比如微信的域名到白名单URL列表中,如:*.weixin.qq.com。通过域名请求学习到的IP都会加入到白名单IP列表中。

优选的,所述步骤S100和所述步骤S000之间还包括步骤:S051、拦截目标服务器返回给智能终端的域名解析回复报文;S052、根据所述域名解析回复报文获取对应目标服务器的IP地址;S053、将目标服务器的IP地址加入到所述白名单IP列表内。

优选的,所述步骤S300进一步包括步骤:S301、根据所述连接请求报文获得目标服务器的目的IP地址和目的MAC地址;S302、根据所述目的IP地址和目的MAC地址生成连接应答报文;S303、发送所述连接应答报文至智能终端,与智能终端建立TCP连接。

具体的,所述连接请求报文(synchronous)是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。

本实施例中智能终端与路由器建立的TCP连接,非真正意义上的TCP连接,是路由器通过拦截智能终端发送的连接请求报文,使用假三次握手协议,伪装成目标服务器与智能终端建立的TCP连接。

优选的,所述步骤S500之后还包括步骤:S600、解析所述http post请求报文获得目的IP地址,将所述目的IP地址加入到预存的所述白名单IP列表内。

下面以网络访问为关注微信公众号为例,详细介绍本发明的流程,具体如下:

1.在linux内核bridge模块的FORWARD链中定义一个模块,所有通过桥模块转发的数据包都会进入该模块。

2.定义一张白名单IP列表,在防火墙规则中所有源IP地址或者目的IP地址在此白名单IP列表中的数据包都允许通过。

3.预配置白名单IP的列表和白名单URL的列表,下发到内核模块数据表项中。下发微信的域名到白名单URL列表中,如:*.weixin.qq.com,这样通过DNS域名请求学习到的IP,都会加入到白名单IP列表中。

4.截获DNS的数据报文,解析地址解析回复报文,如果地址解析回复报文中的域名在定义的白名单URL列表中,则把此URL解析出来的IP都下发到白名单IP列表中。

5.在未认证成功前,对连接请求报文即tcp syn包进行假三次握手。因为微信关注请求的IP地址还不在白名单IP列表里面,所以对于这个IP的tcp三次握手连接由于防火墙的原因,微信服务器是收不到的,此时,路由器伪装成微信服务器与微信APP进行TCP三次握手连接。

6.假三次握手建立好后,微信APP会发一个http 80端口的POST请求包,包的特征是POST/cgi-bin/micromsg-bin/verifyuser HTTP/1.0,HOST的字段为short.weixin.qq.com。路由器在包过滤阶段捕获到这个请求包的特征码,特征码short.weixin.qq.com与白名单URL列表匹配,路由器对这个请求包做放行通过处理。这个请求包发送至微信服务器,路由器同时解析出这个请求包里的目的IP地址,把这个目的IP地址加入到白名单IP列表中。

7.微信服务器收到这个POST请求包后,会回复一个200OK的应答包给微信APP。由于路由器已经把微信服务器的IP地址加入到了白名单IP列表中,所以防火墙规则会允许这个应答包通过。微信APP接收到这个应答包,则微信的关注流程正常,微信APP显示关注微信公众号成功。

图3为本发明一种路由器的主要组成示意图,作为本发明的一个具体实施例,如图3所示,一种路由器,用于在防火墙下实现智能终端访问目标服务器,包括:报文截获模块1,用于截获智能终端发送的连接请求报文和http post请求报文;IP地址获取模块2,用于根据所述连接请求报文获取目标服务器的目的IP地址;IP地址判断模块3,用于判断所述目的IP地址是否在预存的白名单IP列表内;TCP连接模块4,用于当所述目的IP地址不在预存白名单IP列表内时,根据所述连接请求报文伪装成目标服务器,与智能终端建立TCP连接;特征码匹配模块5,用于匹配所述http post请求报文的特征码是否在预存的白名单URL列表内;转发模块6,用于当所述特征码在预存白名单URL列表内时,将所述http post请求报文发送至目标服务器;以及还用于将目标服务器返回的http post应答报文发送至智能终端,完成网络访问。

图4为本发明一种路由器的完整组成示意图。优选的,如图4所示,路由器还包括:配置模块7,用于预先配置白名单IP列表和白名单URL列表,并将目标服务器的域名添加到所述白名单URL列表。

优选的,所述报文拦截模块1还用于拦截目标服务器返回给智能终端的域名解析回复报文;所述IP地址获取模块2还用于根据所述域名解析回复报文获取对应目标服务器的IP地址;所述配置模块7还用于将目标服务器的IP地址加入到所述白名单IP列表内。

优选的,所述TCP连接模块4进一步包括:连接应答报文生成模块41,用于根据所述连接请求报文获得目标服务器的目的IP地址和目的MAC地址,并根据所述目的IP地址和目的MAC地址生成连接应答报文;所述转发模块6还用于发送所述连接应答报文至智能终端。

优选的,解析模块8,用于解析所述http post请求报文获得目的IP地址;所述配置模块7还用于将所述目的IP地址加入到预存的所述白名单IP列表内。

需要说明的是,本系统中各模块之间的信息交互、执行过程等内容与上述方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

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

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