一种基于Linux的Nat日志记录方法与装置制造方法及图纸

技术编号:9671569 阅读:298 留言:0更新日期:2014-02-14 18:55
本发明专利技术涉及日志系统技术领域,尤其涉及一种基于Linux的Nat日志记录方法与装置,所述方法包括:A.数据报文到达网卡,并进入内核防火墙;B.数据报文到达第一检测点,判断是否需要做DNat记录,是则对所述数据报文做DNat记录,并通过传输接口记录后执行步骤C,否则直接执行步骤C;C.数据报文进入第二检测点,判断是否需要做SNat记录,是则对所述数据报文做SNat记录,并通过传输接口记录后执行步骤D,否则直接执行步骤D;D.内核防火墙将数据报文通过Netlink发送到用户层。本发明专利技术减少了数据的拷贝,以及系统调用的次数,提高了日志系统性能,使系统更加快速、准确,足够处理大流量的Nat环境需求。

【技术实现步骤摘要】
一种基于Linux的Nat日志记录方法与装置
本专利技术涉及日志系统
,尤其涉及一种基于Linux的Nat日志记录方法与装置。
技术介绍
基于Linux的Nat服务器,一般使用Netfilter来实现其Nat功能,根据Netfilter的五个钩子和三个表的工作模式,在Nat服务器下要记录日志,一般会记录一个数据报文经过Netfilter的Nat模块作地址转换前后的信息,并输出到用户层以使应用程序能接收并作特定用途。Nat日志系统的数据流如下:1.数据报文到达网卡;2.数据报文进入Netfilter;3.进行Nat前记录一次信息;4.进行Nat后记录一次信息;4.数据报文离开Netfilter;5.应用程序接收两次信息并处理。现有的基于Linux的Nat日志系统,一般使用iptables规则配合printk把数据包信息输出到用户层的应用程序。如图1所示,工作流程如下(以SNat为例):1)在Netfilter的FORWARD钩子的mangle表处设置一个规则,修改数据包的TOS属性;2)在Netfilter的FORWARD钩子的filter表处设置一个规则,记录经过的数据包信息并输出到用户层;3)插入一个Netfilter处理模块在POSTROUTING最后位置,判断数据包的TOS属性,如符合则记录此数据包信息并输出到用户层;4)用户层程序接收到一前一后的数据包信息,处理并发送到远端syslog日志服务器。现有的Nat日志系统是使用printk输出信息到用户层的,printk由于效率低下,性能欠佳,所以此系统会占用过多的CPU,处理不了大流量的Nat环境。
技术实现思路
本专利技术实施例提供一种基于Linux的Nat日志记录,旨在解决现有技术中日志记录数据拷贝多,数据流经路程长,系统占用过多CPU的问题。本专利技术实施例是这样实现的,一种基于Linux的Nat日志记录方法,所述方法包括:A.数据报文到达网卡,并进入内核防火墙;B.数据报文到达第一检测点,判断是否需要做DNat记录,是则对所述数据报文做DNat记录,并通过传输接口记录后执行步骤C,否则直接执行步骤C;C.数据报文进入第二检测点,判断是否需要做SNat记录,是则对所述数据报文做SNat记录,并通过传输接口记录后执行步骤D,否则直接执行步骤D;D.内核防火墙将数据报文通过Netlink发送到用户层。本专利技术实施例还提供一种基于Linux的Nat日志记录装置,所述装置包括:数据报文入口单元,用于数据报文到达网卡,并进入内核防火墙;DNat记录判断单元,用于数据报文到达第一检测点,判断是否需要做DNat记录,是则对所述数据报文做DNat记录,并通过传输接口记录后发送执行指令到SNat记录判断单元,否则直接发送执行指令到SNat记录判断单元;SNat记录判断单元,用于数据报文进入第二检测点,判断是否需要做SNat记录,是则对所述数据报文做SNat记录,并通过传输接口记录后发送执行指令到数据报文发送单元,否则直接发送执行指令到数据报文发送单元;数据报文发送单元,用于内核防火墙将数据报文通过Netlink发送到用户层。本专利技术在数据报文进入防火墙后,分别进行DNat记录和SNat记录,通过传输接口记录数据报文,使用Netlink传输信息到用户层,减少了数据的拷贝,以及系统调用的次数,缩短了数据流经的路程,提高了日志系统性能,使系统更加快速、准确,足够处理大流量的Nat环境需求。附图说明图1表示本专利技术实施例提供的现有技术工作原理图;图2表示本专利技术实施例提供的一种基于Linux的Nat日志记录方法流程图;图3表示本专利技术实施例提供的一种基于Linux的Nat日志记录方法流程图;图4表示本专利技术实施例提供的一种基于Linux的Nat日志记录方法流程图;图5表示本专利技术实施例提供的基于Linux的Nat日志系统的整体结构图;图6表示本专利技术实施例提供的一种基于Linux的Nat日志记录装置结构图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。图2示出了本专利技术实施例提供的一种基于Linux的Nat日志记录方法流程图,详述如下:在步骤S101中,数据报文到达网卡,并进入内核防火墙;在步骤S102中,数据报文到达第一检测点;在步骤S103中,判断是否需要做DNat记录,是则执行步骤S104,否则执行步骤S105;在步骤S104中,对数据报文做DNat记录,并通过传输接口记录,继续执行步骤S105;在步骤S105中,数据报文进入第二检测点,判断是否需要做SNat记录,是则执行步骤S106,否则执行步骤S107;在步骤S106中,对数据报文做SNat记录,并通过传输接口记录,继续执行步骤S107;在步骤S107中,内核防火墙将数据报文通过Netlink发送到用户层。在本专利技术实施例中,Netfilter防火墙的五个钩子分别为PREROUTING、LOCAL-IN、FORWARD、LOCAL-OUT、POSTROUTING,本例中的第一检测点与第二检测点分别为PREROUTING和POSTROUTING,分别实现Dnat(DestinationNetworkAddressTranslation,目的地址转换)功能和Snat(sourcenetworkaddresstranslation,源地址目标转换)功能,并且通过nf_log_packet接口记录数据报文,最后通过Netfilter防火墙把两次记录的数据报文信息,通过Netlink发送到用户层。使用Netlink传输数据报文不会经过任何中间环节,直接从内核传输到用户的程序中。图3示出了本专利技术实施例提供的一种基于Linux的Nat日志记录方法流程图,详述如下:在步骤S201中,数据报文到达网卡,并进入内核防火墙;在步骤S202中,数据报文进入第一检测点之前,判断是否需要做DNat记录,是则执行步骤S203,否则执行步骤S204;在步骤S203中,对数据报文做DNat记录,并通过传输接口记录,继续步骤S204;在步骤S204中,数据报文进入第一检测点;在步骤S205中,数据报文离开第一检测点,判断是否需要做DNat记录,是则执行步骤S206,否则执行步骤S207;在步骤S206中,对数据报文做DNat记录,并通过传输接口记录,继续步骤S207;在步骤S207中,数据报文进入第二检测点之前,判断是否需要做SNat记录,是则执行步骤S208,否则执行步骤S209;在步骤S208中,对数据报文做SNat记录,并通过传输接口记录,继续步骤S209;在步骤S209中,数据报文进入第二检测点,继续步骤S210;在步骤S210中,数据报文离开第二检测点,判断是否需要做SNat记录,是则执行步骤S211,否则执行步骤S212;在步骤S211中,对数据报文做SNat记录,并通过传输接口记录,继续步骤S212;在步骤S212中,内核防火墙将数据报文通过Netlink发送到用户层。在本专利技术实施例中,一般的Nat服务器要么提供SNat服务,要么提供DNat服务,本实施例中,将Nat日志两个配成一对,DNat前后组成本文档来自技高网
...
一种基于Linux的Nat日志记录方法与装置

【技术保护点】
一种基于Linux的Nat日志记录方法,其特征在于,所述方法包括:A.数据报文到达网卡,并进入内核防火墙;B.数据报文到达第一检测点,判断是否需要做DNat记录,是则对所述数据报文做DNat记录,并通过传输接口记录后执行步骤C,否则直接执行步骤C;C.数据报文进入第二检测点,判断是否需要做SNat记录,是则对所述数据报文做SNat记录,并通过传输接口记录后执行步骤D,否则直接执行步骤D;D.内核防火墙将数据报文通过Netlink发送到用户层。

【技术特征摘要】
1.一种基于Linux的Nat日志记录方法,其特征在于,所述方法包括:A.数据报文到达网卡,并进入内核防火墙;B.数据报文到达第一检测点,判断是否需要做DNat记录,是则对所述数据报文做DNat记录,并通过传输接口记录后执行步骤C,否则直接执行步骤C;C.数据报文进入第二检测点,判断是否需要做SNat记录,是则对所述数据报文做SNat记录,并通过传输接口记录后执行步骤D,否则直接执行步骤D;D.内核防火墙将数据报文通过Netlink发送到用户层;其中,所述步骤B具体包括:数据报文进入第一检测点之前,判断是否需要做DNat记录,是则对所述数据报文做DNat记录,并通过传输接口记录后数据报文进入第一检测点,否则数据报文直接进入第一检测点;数据报文离开第一检测点,判断是否需要做DNat记录,是则对所述数据报文做DNat记录,并通过传输接口记录后执行步骤C,否则直接执行步骤C;其中,所述步骤C具体包括:数据报文进入第二检测点之前,判断是否需要做SNat记录,是则对所述数据报文做SNat记录,并通过传输接口记录后数据报文进入第二检测点,否则所述数据报文直接进入第二检测点;数据报文离开第二检测点,判断是否需要做SNat记录,是则对所述数据报文做SNat记录,并通过传输接口记录后执行步骤D,否则直接执行步骤D。2.如权利要求1所述的方法,其特征在于,所述步骤C之后还包括:用户层日志记录模块收到数据报文之后,将所述数据报文放进Nat内存池;线程池从Nat内存池获取所述数据报文,处理并发送到远端日志服务器。3.一种基于Linux的Nat日志记录装置,其特征在于,所述装置包括:数据报文入口单元,用于数据报文到达网卡,并进入内核防火墙;DNat记录判断单元,用于数据报文到达第一检测点,判断是否需要做DNat记录,是...

【专利技术属性】
技术研发人员:梁润强曾宪力李坤祥黄衍博
申请(专利权)人:广东睿江科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1