匹配网口数据的方法、装置、路由器和可读存储介质与流程

文档序号:24495865发布日期:2021-03-30 21:23阅读:183来源:国知局
本发明涉及通信
技术领域
:,尤其涉及一种匹配网口数据的方法、装置、路由器和可读存储介质。
背景技术
::netfilter是linux内核空间的一个数据包处理模块。netfilter、iptables以及ebtables组成linux平台下的包过滤防火墙。iptables负责网络层数据包的过滤规则的定制,ebtables负责数据链路层数据包的过滤规则的定制。在linux中,如果要过滤指定物理接口(lan接口,如ethx,wlx等),需要使用ebtables定制过滤规则,而不能够在iptables上定制过滤规则。先用ebtables将某个网口的数据包进行处理,然后再用iptables进行处理,至少需要两步动作,复杂度较高。技术实现要素:鉴于上述问题,本发明提出一种匹配网口数据的方法、装置、路由器和可读存储介质。本发明的一个实施例提出一种匹配网口数据的方法,该方法包括:获取iptables的接口匹配规则;在解析所述接口匹配规则后,将所述接口匹配规则的解析结果保存在预先定义的规则结构体中;将所述规则结构体发送至linux内核空间的netfilter模块;在所述netfilter模块中根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据。本发明实施例所述的匹配网口数据的方法,所述接口匹配规则包括数据传输方向和网口类型;所述数据传输方向包括数据输入至网口的输入方向和数据从网口输出的输出方向中的一种;所述网口类型包括wan类型接口、lan类型接口、wan/lan类型接口和指定lan类型接口中的一种。本发明实施例所述的匹配网口数据的方法,预先定义的规则结构体包括用于表示所述网口类型的第一编号、用于表示所述数据传输方向的第二编号、用于表示所述网口类型是否取非的标识和用于保存所述指定lan类型接口的指定接口名称。本发明实施例所述的匹配网口数据的方法,根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据,包括:在所述规则结构体中保存的网口类型是wan类型接口或lan类型接口,所述标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为空时,若所述规则结构体中保存的网口类型与所述数据包结构体中保存的网口类型相同,则根据所述规则结构体中保存的数据传输方向匹配所述数据包结构体中保存的网口类型的数据。进一步的,本发明实施例所述的匹配网口数据的方法,根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据,包括:在所述规则结构体中保存的网口类型是wan/lan类型接口,所述标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为空时,根据所述规则结构体中保存的数据传输方向匹配所述数据包结构体中保存的网口类型的数据。本发明实施例所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据,包括:在所述规则结构体中保存的指定接口名称不为空,所述标识为网口类型不取非,且所述数据包结构体中保存的网口类型为lan类型接口时,若所述规则结构体中保存的指定接口名称与所述数据包结构体中保存的预设接口名称相同,则根据所述规则结构体中保存的数据传输方向匹配指定接口的数据。进一步的,本发明实施例所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据,包括:在所述标识为网口类型取非时,所述规则结构体中保存的网口类型不参与匹配网口数据。本发明另一个实施例提出的一种匹配网口数据的装置,该装置包括:匹配规则获取模块,用于获取iptables的接口匹配规则;规则结构体确定模块,用于在解析所述接口匹配规则后,将所述接口匹配规则的解析结果保存在预先定义的规则结构体中;规则结构体发送模块,用于将所述规则结构体发送至linux内核空间的netfilter模块;匹配网口数据模块,用于在所述netfilter模块中根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据。本发明实施例涉及一种路由器,包括存储器和处理器所述存储器用于存储计算机程序,所述计算机程序在所述处理器上运行时本发明实施例所述的匹配网口数据的方法。本发明实施例涉及一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行本发明实施例所述的匹配网口数据的方法。本发明公开的匹配网口数据的方法包括:获取iptables的接口匹配规则;在解析所述接口匹配规则后,将所述接口匹配规则的解析结果保存在预先定义的规则结构体中;将所述规则结构体发送至linux内核空间的netfilter模块;在所述netfilter模块中根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据。本发明的技术方案实现在linux中,如果要过滤指定物理接口(lan接口,如ethx,wlx等),不需要使用ebtables定制过滤规则,通过在iptables上定制过滤规则降低网口数据匹配的复杂度。附图说明为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。图1示出了本发明实施例提供的一种匹配网口数据的方法的流程示意图;图2示出了本发明实施例提供的一种路由器数据传输过程示意图;图3示出了本发明实施例提供的一种匹配网口数据装置的结构示意图。主要元件符号说明:1-匹配网口数据的装置;10-匹配规则获取模块;20-规则结构体确定模块;30-规则结构体发送模块;40-匹配网口数据模块。具体实施方式下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关
技术领域
:中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。为了能够在网络层的iptables上定制过滤规则去匹配指定物理接口,并且能够在iptabels上定制过滤规则去匹配所有wan接口和lan接口,本文发明一种在iptables上匹配lan/wan接口数据的方法。本发明的原理是:如图2所示,lan接口的数据先经过bridge网桥,在协议栈中使用iptables规则是不能够处理lan接口的数据的,在协议栈中只过滤网桥接口过来或者发往网桥接口的数据包。在linux内核中config_bridge_netfilter选项,其目的在于控制数据链路层的数据能够发送到网络层,这样就能够让netfilter模块处理由iptables下发的过滤指定物理接口规则的数据包。另外,在iptables工具中添加接口匹配规则,将所述接口匹配规则的保存在预先定义的规则结构体中;将所述规则结构体发送至linux内核空间的netfilter模块,在所述netfilter模块中根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据,进而实现在iptabels上定制过滤规则去匹配所有wan类型接口或lan类型接口。实施例1本实施例,参见图1,示出了一种匹配网口数据的方法包括以下步骤:s10:获取iptables的接口匹配规则。iptables组件是一种工具,位于用户空间,它使插入、修改和除去信息包过滤表中的规则变得容易。iptables是按照规则来办事的,通过获取iptables的接口匹配规则,可以实现根据接口匹配规则在iptabels上定制过滤规则去匹配所有wan类型接口和/或lan类型接口和/或指定lan类型接口。进一步的,接口匹配规则包括数据传输方向和网口类型;所述数据传输方向包括数据输入至网口的输入方向和数据从网口输出的输出方向中的一种;所述网口类型包括wan类型接口、lan类型接口、wan/lan类型接口和指定lan类型接口中的一种。示范性的,数据传输方向和网口类型如下所示。in|outwan|lan|wan/lan|specific_lan,其中in、out是数据传输方向,in为输入方向,out为输出方向。网口类型包括:wan代表所有wan类型接口,如ppp接口等。lan代表所有lan类型接口,如eth0,ethx,wl0,wlx接口等。wan/lan代表所有接口。specific_lan为指定某个lan类型接口,如ethx,wlx等lan类型接口。s20:在解析所述接口匹配规则后,将所述接口匹配规则的解析结果保存在预先定义的规则结构体中。结构体(struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,可以由int、char、float等基本类型组成的。结构体是一种聚合类型。在实际开发中,可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。例如,在校学生有姓名、年龄、身高、成绩等属性,使用结构体后,不需要再定义多个变量了,将它们都放到结构体中即可。结构体有利于数据的定义和管理。将数据传输方向和网口类型接口匹配规则中解析出来后,可以将所述接口匹配规则的解析结果保存在预先定义的规则结构体中。预先定义的规则结构体包括用于表示所述网口类型的第一编号、用于表示所述数据传输方向的第二编号、用于表示所述网口类型是否取非的标识和用于保存所述指定lan类型接口的指定接口名称。示范性的,可以定义名称为xt_interfaces_info的结构体,该结构体用于保存从接口匹配规则中解析出来的结果。该结构体参数如下:__u8interfaces;__u8direction;__u8invert;charname[30];interfaces:用于表示所述网口类型的第一编号,第一编号的值可以是1、2、3和4中的一种,1代表wan_interfaces,表示所有wan类型接口,2代表lan_interfaces,表示所有lan类型接口,3代表wan_lan,表示所有wan和lan类型接口,4代表specific_lan,表示指定lan类型接口。direction:用于表示所述数据传输方向的第二编号,第二编号的值可以是1或2,1代表in_dir(输入方向),2代表out_dir(输出方向)。invert:用于表示所述网口类型是否取非的标识,在所述标识为网口类型取非时,所述规则结构体中保存的网口类型不参与匹配网口数据。name:用于保存所述指定lan类型接口的指定接口名称。当网口类型(interface)为specific_lan时,即第一编号值为4,name参数才会保存指定lan类型接口的名字。s30:将所述规则结构体发送至linux内核空间的netfilter模块。netfilter是防火墙真正的安全框架(framework),netfilter位于linux内核空间。将所述规则结构体发送至linux内核空间的netfilter模块。s40:在所述netfilter模块中根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据。在所述netfilter模块中,将规则结构体中的数据与linux的数据包结构体中的数据进行匹配比较,根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据。本实施例公开的匹配网口数据的方法包括:获取iptables的接口匹配规则;在解析所述接口匹配规则后,将所述接口匹配规则的解析结果保存在预先定义的规则结构体中;将所述规则结构体发送至linux内核空间的netfilter模块;在所述netfilter模块中根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据。本实施例的技术方案实现在linux中,如果要过滤指定物理接口(lan接口,如ethx,wlx等),不需要使用ebtables定制过滤规则,通过在iptables上定制过滤规则降低网口数据匹配的复杂度。实施例2本发明实施例公开了根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据的过程。在规则结构体中保存的网口类型是wan类型接口或lan类型接口,所述标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为空时,若所述规则结构体中保存的网口类型与所述数据包结构体中保存的网口类型相同,则根据所述规则结构体中保存的数据传输方向匹配所述数据包结构体中保存的网口类型的数据。示范性的,在规则结构体如下所示时:__u81;__u81;__u80;charnull;上述规则结构体表示网口类型是wan类型接口,数据传输方向为输入方向,标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为空,若linux的数据包结构体中保存的网口类型也为wan类型接口,则匹配进入所有wan接口的数据。示范性的,在规则结构体如下所示时:__u81;__u82;__u80;charnull;上述规则结构体表示网口类型是wan类型接口,数据传输方向为输出方向,标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为空,若linux的数据包结构体中保存的网口类型也为wan类型接口,则匹配从所有wan接口输出的数据。示范性的,在规则结构体如下所示时:__u82;__u81;__u80;charnull;上述规则结构体表示网口类型是lan类型接口,数据传输方向为输入方向,标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为空,若linux的数据包结构体中保存的网口类型也为lan类型接口,则匹配进入所有lan接口的数据。示范性的,在规则结构体如下所示时:__u82;__u82;__u80;charnull;上述规则结构体表示网口类型是lan类型接口,数据传输方向为输出方向,标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为空,若linux的数据包结构体中保存的网口类型也为lan类型接口,则匹配从所有lan接口输出的数据。进一步的,在所述规则结构体中保存的网口类型是wan/lan类型接口,所述标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为空时,根据所述规则结构体中保存的数据传输方向匹配所述数据包结构体中保存的网口类型的数据。示范性的,在规则结构体如下所示时:__u83;__u81;__u80;charnull;上述规则结构体表示网口类型是wan/lan类型接口,数据传输方向为输入方向,标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为空,若linux的数据包结构体中保存的网口类型也为wan类型接口,则匹配进入所有wan接口的数据;若linux的数据包结构体中保存的网口类型也为lan类型接口,则匹配进入所有lan接口的数据。示范性的,在规则结构体如下所示时:__u83;__u82;__u80;charnull;上述规则结构体表示网口类型是wan/lan类型接口,数据传输方向为输出方向,标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为空,若linux的数据包结构体中保存的网口类型也为lan类型接口,则匹配从所有lan接口输出的数据;若linux的数据包结构体中保存的网口类型也为wan类型接口,则匹配从所有wan接口输出的数据。进一步的,在所述规则结构体中保存的指定接口名称不为空,所述标识为网口类型不取非,且所述数据包结构体中保存的网口类型为lan类型接口时,若所述规则结构体中保存的指定接口名称与所述数据包结构体中保存的预设接口名称相同,则根据所述规则结构体中保存的数据传输方向匹配指定接口的数据。示范性的,在规则结构体如下所示时:__u84;__u81;__u80;chareth0;上述规则结构体表示网口类型是指定lan类型接口,数据传输方向为输入方向,标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为eth0,若linux的数据包结构体中保存的网口类型为lan类型接口,且数据包结构体中保存的预设接口名称也为eth0,则匹配进入eth0接口的数据。示范性的,在规则结构体如下所示时:__u84;__u82;__u80;chareth0;上述规则结构体表示网口类型是指定lan类型接口,数据传输方向为输出方向,标识为网口类型不取非,且所述规则结构体中保存的指定接口名称为eth0,若linux的数据包结构体中保存的网口类型为lan类型接口,且数据包结构体中保存的预设接口名称也为eth0,则匹配从eth0接口输出的数据。进一步的,在所述标识为网口类型取非时,所述规则结构体中保存的网口类型不参与匹配网口数据。示范性的,在规则结构体如下所示时:__u84;__u82;__u81;chareth0;上述规则结构体表示网口类型取非,网口类型是指定lan类型接口eth0,数据传输方向为输出方向,即表示不匹配从eth0接口输出的数据。示范性的,在规则结构体如下所示时:__u81;__u82;__u81;chareth0;上述规则结构体表示网口类型取非,网口类型是指定wan类型接口,数据传输方向为输出方向,即表示不匹配从所有wan接口输出的数据。示范性的,在规则结构体如下所示时:__u82;__u81;__u81;chareth0;上述规则结构体表示网口类型取非,网口类型是指定lan类型接口,数据传输方向为输入方向,即表示不匹配进入所有lan接口的数据。可以理解,根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据的过程可以按照上述逻辑过程依次进行规则匹配,也可以按照任意顺序进行规则匹配,还可以对规则匹配进一步扩展,以使规则匹配全面覆盖所有匹配网口数据的情况。另外,应当理解,在预设的规则匹配不能全面覆盖所有匹配网口数据的情况时,为涉及的情况可以在ebtables匹配网口数据。实施例3本实施例,参见图3,示出了一种匹配网口数据的装置1包括:匹配规则获取模块10、规则结构体确定模块20、规则结构体发送模块30和匹配网口数据模块40。匹配规则获取模块10,用于获取iptables的接口匹配规则;规则结构体确定模块20,用于在解析所述接口匹配规则后,将所述接口匹配规则的解析结果保存在预先定义的规则结构体中;规则结构体发送模块30,用于将所述规则结构体发送至linux内核空间的netfilter模块;匹配网口数据模块40,用于在所述netfilter模块中根据所述规则结构体与linux的数据包结构体的匹配情况匹配网口数据。本实施例公开的匹配网口数据的装置1通过匹配规则获取模块10、规则结构体确定模块20、规则结构体发送模块30和匹配网口数据模块40的配合使用,用于执行上述实施例所述的匹配网口数据的方法,上述实施例所涉及的实施方案以及有益效果在本实施例中同样适用,在此不再赘述。可以理解,本发明实施例涉及一种路由器,包括存储器和处理器所述存储器用于存储计算机程序,所述计算机程序在所述处理器上运行时本发明实施例所述的匹配网口数据的方法。可以理解,本发明实施例涉及一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行本发明实施例所述的匹配网口数据的方法。在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1