Linux系统中网络协议栈管理方法及系统的制作方法【
技术领域:
】[0001]本发明涉及Linux系统
技术领域:
,特别是涉及Linux系统中网络协议栈管理方法及系统。【
背景技术:
】[0002]基于Linux操作系统平台的网络协议栈的处理流中注册有多个钩子节点(Hook),用于对网络数据报文进行相应的处理操作,这些实现的基础是通过使用现有netfilter/iptables系统提供的特殊命令iptables,建立这些规则,并将规则加到内核空间内特定信息包的过滤表内的链上,例如,$iptables[~ttable]command[match][target],命令格式由表、命令、匹配和目标组成。[0003]Netfilter中共定义有IINPUT,PREROUTING,FORWARD,OUTPUT,P0STR0UTING五个钩子节点(Η00Κ),当物理网络上有数据到来时,ip_rcV()函数会接收到,该函数在最后调用NFJTO0K将控制权交给netfilter在PRER0UTING点的处理规则处理。如果该网络数据是发给本地的,就会调用ip_local_deliverO函数,由netfilter的INPUT处理规则处理,INPUT处理完以后交给传输层,传给应用层中的用户进程。如果此数据是转发,会调用ip_rcv_finish()函数,查询路由表,调用ip_route_inputO函数将控制权交给ip_forwardO,由netfilter的FORWARD处理规则处理,ip_send()函数将数据发送,在发出此数据之前会通过NFJTO0K函数宏,由netfilter的P0STR0UTING处理规则处理。如果本地机器要发送网络数据时,netfilter会在将数据交给规则P0STR0UTING处理之前,由处理规则OUTPUT先进行处理;而这些规则都是通过iptables命令行配置下发,对于不熟悉这些规则的人员来说很复杂。[0004]现有的用于对Linux网络协议栈各钩子注册点规则的用户操作都是以命令行的方式,在需要向网络协议栈的钩子节点处添加或删除规则等操作时,需要对网络协议栈对数据包的处理流程有清晰的了解,并且需要对用户层的操作方式有清晰的了解,掌握各种参数以及操作方式,这使得对网络协议栈钩子节点处的规则注册、去注册过程变得困难。[0005]因此,需要提供一种简易有效地的操作方式,从而快速实现相关功能,提高产品开发的进度及质量。【
发明内容】[0006]鉴于以上所述现有技术的缺点,本发明的目的在于提供Linux系统中网络协议栈管理方法及系统,将网络协议栈内规则处理数据包的信息通过可视化的交互界面显示,使信息监控更加简单直观,且更便于对钩子节点即规则的操作。[0007]为实现上述目标及其他相关目标,本发明提供一种Linux系统中网络协议栈管理方法,包括:建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控各钩子节点的网络数据流情况;将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示,并根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。[0008]可选的,所述通信通道是通过:在内核空间创建socket通信结构体并在用户空间使用对应的socket接口来建立的。[0009]可选的,所述socket通信结构体是通过netlink_kernel_createO函数创建的。[0010]可选的,所述交互界面通过curses库构建。[0011]可选的,所述钩子节点包括:网络协议栈内netfilter结构中的IINPUT、PREROUTING,FORWARD、OUTPUT及POSTROUTING。[0012]为实现上述目标及其他相关目标,本发明提供一种Linux系统中网络协议栈管理系统,包括:交互模块,用于建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控模块,用于监控各钩子节点的网络数据流情况;显示模块,用于将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示;操作模块,用于根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。[0013]可选的,所述通信通道是通过:在内核空间创建socket通信结构体并在用户空间使用对应的socket接口来建立的。[0014]可选的,所述socket通信结构体是通过netlink_kernel_createO函数创建的。[0015]可选的,所述交互界面通过curses库构建。[0016]可选的,所述钩子节点包括:网络协议栈内netfiIter结构中的IINPUT、PREROUTING,FORWARD、OUTPUT及POSTROUTING。[0017]如上所述,本发明提供Linux系统中网络协议栈管理方法及系统,建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控各钩子节点的网络数据流情况;将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示;根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输;本发明实现数据报文在Linux网络协议栈中流经过程的可视化显示,可以清楚的了解数据包流过协议栈时的处理过程,通过可视化的操作方式在网络协议栈的某些节点上添加、删除或编辑规则,以达到过滤数据包的目的。【附图说明】[0018]图1显示为本发明一实施例中的Linux系统中网络协议栈管理方法的流程示意图。[0019]图2显示为本发明一实施例中的Linux系统中网络协议栈管理方法具体实现的软件架构示意图。[0020]图3显示为本发明一实施例中的Linux系统中网络协议栈管理系统的结构示意图。[0021]元件标号说明[0022]I网络协议栈管理系统[0023]11交互模块[0024]12监控模块[0025]13显示模块[0026]14操作模块[0027]SI?S3方法步骤【具体实施方式】[0028]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。[0029]如图1所示,本发明提供一种Linux系统中网络协议栈管理方法,包括:[0030]步骤S1:建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;[0031]步骤S2:监控各钩子节点的网络数据流情况;[0032]步骤S3:将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示,并且根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。[0033]具体的,用户在linux/netlink.h定义所述建立的通信通道所对应的新的协议类型,内核空间使用structsock*netlink_kernel_createO创建socket通信结构体,相对应的,用户空间使用通用的socketAPIsGiD)来建立与内核空间的通信通道,这个通道将用于监控各个钩子节点的网络数据情况以及下发由用户配置的操作信息。[0034]进而,整个软件架构可例如图2所示,Linux网络协议栈中会有netfilter防火墙功能框架,其构成就是在整个网络流程的若干位置放置了一些检测点(Η00Κ,钩子节点),而在每个检测点上登记了一些处理函数进当前第1页1 2