防火墙多出口智能选路方法

文档序号:7928251阅读:1375来源:国知局
专利名称:防火墙多出口智能选路方法
技术领域
本发明涉及网络安全技术领域,尤其涉及一种防火墙多出口智能选路方法。
背景技术
选路策略是防火墙最基本、最重要、也是最核心的部分。 常见的防火墙选路过程一般采用搜索路由表的方法并决定向哪个网络接口发送
数据包。 一个防火墙的的路由表可能包含几十条或者更多条目,但由于路由条目之间存在
某种关联关系,所以选路必须按照某种规则进行查找,以达到最精确的结果。 目前防火墙采用二叉树加最长掩码匹配的路由查找方法,但是在多线路的情况
下,选路可能会找到好几条同样匹配的路由。为了合理的分配带宽,这时防火墙就采用负载
均衡的方法,轮询的返回其中一条路由作为选路结果,这样源IP地址和目的IP地址相同的
数据包就可能经过不同的路径进行转发。 在多出口的情况下,实现负载均衡就有可能不能正常通信,因为当数据包通过链 路上的路由器时,路由器会记录下数据包的源、目的地址和端口信息,然后再通过防火墙到 达目的地址,等到该数据包的回包再通过防火墙时,由于是多出口 ,防火墙会做负载均衡而 使回包不一定会走来的那条路,等到这个回包再到达路由器时,路由器因为状态检测机制 会检查回包的地址、端口信息,当发现回包信息和与其记录的信息不一致,就认为回包不合 法,于是将丢弃回包,从而可能会造成通信中断。 如图1所示,图1是一个多线路的VPN环境,图中VPN设备就是防火墙,在这个拓 扑中,防火墙实现VPN功能搭建隧道。120. 0. 0. 0/24子网和180. 0. 0. 0/24子网的通信有两 条线路 (1)A线路是经过路由器C-VPN1-路由器A-路由器B-VPN2,其中指定从VPN1的 ethO到VPN2的ethO 口建立一条动态隧道。 (2)B线路是是经过路由器C-VPN3-防火墙_路由器B-VPN2,是NAT方式,其中从 VPN3的ethO到VPN2的eth3 口建立一条动态隧道。 (3)路由器C指定到180.0.0. 0/24子网的有2条默认路由,下一跳分别是VPN1和 VPN3。 (4)VPN2指定到120. 0. 0. 0/24子网的报文有2条隧道进行加密,出接口分别为 ethO禾口 ethl。 (5)路由器B指定到120.0.0.0/24子网的策略路由有2条,其中源地址为 40. 0. 0. 0/24子网的下一跳是路由器A,而源地址为50. 0. 0. 0/24子网的下一跳是防火墙。
A线路的保护子网与B线路的保护子网是 一 致的, 120. 0. 0. 0/24〈一>180. 0. 0. 0/24,两条隧道是同时活跃的。 现有技术中,当120. 0. 0. 0/24子网的主机主动跟180. 0. 0. 0/24子网的主机通信 时,比如应用FTP、TFTP、HTTP或者ICMP时,数据包到达路由器C时,查询路由表后找到两条 路由,进行负载均衡,可能选择从A线路走,也有可能从B线路走,同时路由器C会记录数据
3包的地址端口信息,作为状态检测的记录。假如数据包是从走A线路到达180. 0. 0. 0/24网 段,而180. 0. 0. 0/24子网回的数据包到达VPN2选路时也会找到两条隧道进行加密,分别是 ethO对应的线路A和ethl对应的线路B。此时也进行负载均衡,回包的路径就在这两个路 径中轮询的选择,假如数据包从B线路回到路由器C,路由器C会发现回包的信息和以前记 录的不一致,于是丢弃了回包,这样通信就中断了,也就是说,120. 0. 0. 0/24子网的主机跟 180. 0. 0. 0/24子网的主机不能通信,它们之间不能互相访问,任何应用都不能进行。
所以只有当数据包实现源去源回,也就是说,从A线路来的数据包再从A线路回, 这样才能根本解决这个问题。

发明内容
鉴于上述的分析,本发明目的在于提供一种防火墙多出口智能选路方法,用以解
决现有技术中防火墙选路过程中,由于负载均衡可能造成通信中断的问题。 本发明的目的主要是通过以下技术方案实现的 本发明提供了一种保存数据包入接口,在回包查询路由表时,以保存的入接口作
为出接口为查询条件的方法,来实现源去源回的功能。 本发明有益效果如下 本发明的其他特征和优点将在随后的说明书中阐述,并且,部分的从说明书中变 得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明 书、权利要求书、以及附图中所特别指出的结构来实现和获得。


图1为为现有技术中某一网络拓扑结构示意图; 图2为本发明所述方法的流程示意图; 图3为本发明所述方法中举例的网络拓扑结构示意图。
具体实施例方式
本发明的核心思想是,首包经过防火墙时记录入接口,首包的回包、或者反方向的 数据包、或者和父连接反方向的子连接的数据包选路时,以首包的入接口作为出接口查询路由。 下面结合附图来具体描述本发明的优先实施例,其中,附图构成本申请一部分,并 与本发明的实施例一起用于阐释本发明的原理。 为了实现智能选路,需要在数据包查询路由表时用条件限制查找结果。数据包选 路时一般是用目的IP地址匹配防火墙路由表的目的网段,我们在回包选路时用目的IP地 址和接口同时匹配路由表,其中的接口为首包的入接口,目的IP地址就是回包的IP地址。
步骤201 :数据包查询防火墙路由表之前,会先查找对应连接有没有私有数据。如 果有,执行步骤203,如果没有,执行步骤202。 步骤202 :没有私有数据,防火墙会记录数据包的源IP地址、目的IP地址、源端 口、目的端口、协议号和入接口信息,并把信息保存在对应连接的私有数据中(同一连接的 数据流的所有数据包的源IP地址、目的IP地址、源端口、目的端口、协议号相同,但是入接口可能因为链路备份等改变)。比如通信过程中,首包到达防火墙(属于同一连接的数据流 中的第一个数据包),查路由前发现连接中没有私有数据,于是把地址端口信息和入接口存 到对应连接的私有数据里。 如果建立子连接,则根据子连接和父连接的方向存放对应的源IP地址、目的IP地 址、源端口、目的端口、协议号,并把父连接私有数据里的入接口 (也即首包的IP地址)存 到子连接的私有数据里。 步骤203 :根据私有数据中存的地址端口信息中的相关源信息(源IP地址、目的 端口 )和当前数据包的地址端口信息中的相关目的信息(目的IP地址、目的端口 )进行判 断,如果私有数据中存的相关源信息是当前数据包的相关目的信息,说明当前数据包是该 连接且相反方向的数据包,执行步骤204,否则执行步骤205 ; 步骤204 :将数据包的出接口替换为私有数据中存的入接口,以出接口为查询条 件查找路由。 步骤205 :匹配私有数据的地址端口信息和当前数据包的地址端口信息是否一
致,如果一致,执行步骤207,否则执行206。 步骤206 :正常选路,即以现有的轮询方式查找路由。 步骤207 :匹配私有数据的入接口和当前数据包的入接口是否一致,如果一致,则 直接执行步骤206 ;如果不一致,更新私有数据的入接口信息,将私有数据中存的入接口替 换为当前数据包中的入接口后,再执行步骤206 。 比如首包、同方向的数据包、和父连接同方向的子连接的数据包选路时,私有数据
中存的源IP地址、目的IP地址、源端口、目的端口、协议号和这些数据包中的信息肯定是
相同的;而首包的回包、或者反方向的数据包、或者和父连接反方向的子连接的数据包选路
时,私有数据存的源IP地址、目的IP地址信息肯定和当前数据包的源IP地址、目的地址是
相反的,这时就用私有数据的入接口作为出接口来选路。 当连接清除时,私有数据要进行释放,否则就会内存泄漏。 同样的,如果同时有多条线路跟防火墙本身通信,比如telnet防火墙等操作,这 种称作是到本机(因为目的地址是防火墙的接口 IP地址,而不是大部分的转发报文)的连 接,我们也会记录访问防火墙的入接口,回包的时候确保选择的路由是进来的那条路径,这 样,到本机的连接也能实现智能选路。 比如图3所示,用户通过网通、电信两条链路做负载均衡,防火墙上配了 3条默认 路由,下一跳分别是网通服务器、电信服务器和内网服务器。如果从内网上telnet墙,由于 有3条默认路由,可能回包会发给网通服务器或者电信服务器,这样telnet就失败了。但 是源去源回功能就可以保证通信成功,因为我们记录了报文的入接口 ethO,回包找到的下 一跳只能是内网服务器。 为了便于理解本发明,下面还结合附图1举例对本发明实施例所述方法进行举例 说明。 当首包查询防火墙路由表之前,将其首包的源IP地址、目的IP地址、源端口、 目的端口、入接口和协议号存到对应连接的私有数据里。例如,对于图l所述情况, 120. 0. 0. 0/24子网主机120. 0. 0. 10 ping 180. 0. 0. 0/24子网主机180. 0. 0. 10时,首包到
达路由器C选路后的下一跳是VPN1,那么数据就走A线路。当数据包到达VPN2时,五元组信息为源IP地址是120. 0. 0. 10,目的IP地址是180. 0. 0. IO,源端口是1024,目的端口是 8,协议类型为0800,入接口为ethO。于是VPN2就在对应连接中记录五元组信息和入接口 信息。接着,VPN2把数据包发给目的主机180. 0. 0. 10。 当主机180. 0. 0. 10给主机120. 0. 0. 10回数据包时,当回包到达VPN2,首先查询对 应连接的私有数据信息,由于首包经过VPN2时已经保存了五元组和入接口信息所以对应 连接中有私有数据信息。接下来就要进行数据包当前方向和首包方向是否一致的判断,这 个判断是通过比较数据包报文首部的源和目的IP地址、端口和对应连接私有数据中保存 的五元组信息源和目的信息是否相反,协议类型是否一致得出的。比如回包的源IP地址是 180. 0. 0. 10,目的IP地址是120. 0. 0. 10,源端口是8,目的端口是1024,协议类型为0800, 而私有数据中的五元组信息的源IP地址是当前数据包的目的IP地址,目的IP地址是当前 数据包的源IP地址,协议类型也是0800,说明该数据包和首包的方向是相反的。当然,如果 数据包的五元组信息和连接私有数据的五元组相同的话,就说明是同向的。接下来就该查 路由了 ,这时确定数据包是反方向的同连接的包,就用私有数据中记录的入接口 ethO作为 出接口去查询路由,从而VPN2找到的是ethO那条隧道进行加密,而不是在ethO和ethl之 间做负载均衡。这样,在ethO和ethl两个出口的情况下,就保证了从A线路来的数据包的 回包还是走A线路。 综上所述,本发明提供了一种防火墙多出口智能选路方法,通过以首包的入接口 作为出接口查询路由,可以做到数据包的源去源回,保证了多出口环境下的正常通信,从而 更好的支持负载均衡。 以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换, 都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范 围为准。
权利要求
一种防火墙多出口智能选路方法,其特征在于,所述方法包括步骤A数据包查询防火墙路由前,查找对应连接是否有私有数据,如果有,执行步骤B,如果没有,将数据包的地址端口信息和入接口存到对应连接的私有数据里;所述地址端口信息至少包括源IP地址、目的IP地址、源端口、目的端口、协议号;步骤B根据私有数据中存的地址端口信息和当前数据包的地址端口信息进行判断,当两者方向不同时,将私有数据中存的入接口作为出接口来选路;当两者方向相同时,如果入接口不同,则更新入接口,同时正常选路。
2. 根据权利要求1所述的方法,其特征在于,当建立子连接时,所述步骤A还包括根 据子连接和父连接的方向存放对应的地址端口信息,并把父连接私有数据里的入接口存到 子连接的私有数据里。
3. 根据权利要求1所述的方法,其特征在于,所述步骤B具体包括步骤Bl :判断私有数据里的相关源信息和当前数据包的相关目的信息是否一致,如果不一致,执行步骤B2,否则执行步骤B3 ;步骤B2 :判断私有数据里的入接口和当前数据包的入接口是否一致,如果一致,就正 常选路;否则需要再判断私有数据的地址端口信息和当前数据包的地址端口信息是否一 致,如果一致,则正常选路,否则先更新私有数据后再正常选路;步骤B3 :将当前数据包中的出接口赋值为私有数据中存的入接口,以出接口为查询条 件选路。
4. 根据权利要求1到3中任意一项所述的方法,其特征在于,所述方法还包括当清除 对应连接时,释放私有数据。
全文摘要
本发明公开了一种防火墙多出口智能选路方法,包括步骤A数据包查询防火墙路由前,查找对应连接是否有私有数据,如果有,执行步骤B,如果没有,将数据包的地址端口信息和入接口存到对应连接的私有数据里;所述地址端口信息至少包括源IP地址、目的IP地址、源端口、目的端口、协议号;步骤B根据私有数据中存的地址端口信息和当前数据包的地址端口信息进行判断,当两者方向不同时,将私有数据中存的入接口作为出接口来选路;当两者方向相同时,如果入接口不同,则更新入接口,同时正常选路;本发明通过以首包的入接口作为出接口查询路由,可以做到数据包的源去源回,保证了多出口环境下的正常通信,从而更好的支持负载均衡。
文档编号H04L29/06GK101753426SQ200810227968
公开日2010年6月23日 申请日期2008年12月3日 优先权日2008年12月3日
发明者赵萍 申请人:北京天融信网络安全技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1