首页> 中国专利> 一种使用NFQUEUE机制实现网关的方法和系统

一种使用NFQUEUE机制实现网关的方法和系统

摘要

本发明公开了一种使用NFQUEUE机制实现网关的方法,包括步骤1:通过NFQUEUE机制从网卡中抓取数据包;步骤2:通过用户态进程从NFQUEUE机制上收取数据包并读取数据包;步骤3:用户态进程将数据包信息匹配连接表,在匹配连接表中的一条连接记录时,则修改、转发数据包,跳转到步骤5;否则执行步骤4;步骤4:用户态进程根据用户配置的策略,将策略信息与数据包信息进行逐条比对;在数据包与策略信息相匹配时,则对数据包执行与策略信息相匹配的操作指令,同时建立一条连接记录并存入连接表中;步骤5:对连接表中的连接记录的状态进行监测,在存在连接超时时,则执行释放该连接的操作指令,并执行跳转至步骤1的操作指令。

著录项

  • 公开/公告号CN105100038A

    专利类型发明专利

  • 公开/公告日2015-11-25

    原文格式PDF

  • 申请/专利权人 般固(北京)科技股份有限公司;

    申请/专利号CN201510034069.0

  • 发明设计人 高明;

    申请日2015-01-23

  • 分类号H04L29/06;H04L29/12;H04L12/66;

  • 代理机构

  • 代理人

  • 地址 100085 北京市海淀区清河火车站东路9号院内1010室

  • 入库时间 2023-12-18 12:35:43

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-01-03

    未缴年费专利权终止 IPC(主分类):H04L29/06 专利号:ZL2015100340690 申请日:20150123 授权公告日:20180622

    专利权的终止

  • 2018-06-22

    授权

    授权

  • 2017-01-11

    专利申请权的转移 IPC(主分类):H04L29/06 登记生效日:20161221 变更前: 变更后: 申请日:20150123

    专利申请权、专利权的转移

  • 2016-02-03

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20150123

    实质审查的生效

  • 2015-11-25

    公开

    公开

说明书

技术领域

本发明涉及计算机网络技术,具体来说,涉及一种使用NFQUEUE机制 实现网关的方法。

背景技术

由于现有技术中地址转换中的私有地址不能在公网上,为了解决IP地址 不够用的问题,出现了地址转换技术;私有地址访问公网之前,需要在网关设 备上做源地址转换(SNAT);目的地址转换(DNAT)常用于把公网访问的目 的地址转换为内网服务器的地址;源目的地址转换(FULLNAT)是指源地址 和目的地址均转换。

另外,Netfilter是Linux内核的防火墙框架,用户可以通过iptables命令 向该防火墙框架添加策略匹配数据包,然后修改/拦截/放行数据包的目的。用 户可以通过iptables命令配置Netfilter获得SNAT/DNAT的功能,但是Netfilter 不支持FULLNAT;另外Netfilter匹配数据包的条件不够丰富,如不能根据地 址组匹配,如需要此功能需要编写对应的内核模块。

此外,由于NFQUEUE是Netfilter框架的一部分,用户态程序通过该机制 能够收到网卡上的数据包,程序可以修改数据包,然后告知Netfilter继续处理 数据包或者丢弃。

而由于网关设备上需要实现SNAT、DNAT、FULLNAT、路由功能。Linux 上实现网关功能的常见方法是用iptables配置规则,但是使用iptables规则实 现的网关有如下问题:

1)匹配数据包的选项不够丰富(如根据内容匹配数据包,根据一组IP地 址匹配);

2)实现新的匹配选项需要编写内核模块,影响产品的可移植性;

3)不提供丰富的统计数据显示(如:某用户当前连接、带宽、每秒新增), 如果要实现丰富的统计数据功能,需要修改Linux内核,影响产品的可移植性 和稳定性。

针对相关技术中的问题,目前尚未提出有效的解决方案。

发明内容

本发明的目的是提供一种使用NFQUEUE机制实现网关的方法和系统, 以克服目前现有技术存在的上述不足。

本发明的目的是通过以下技术方案来实现:

根据本发明的一方面,提供了一种使用NFQUEUE机制实现网关的方法, 该使用NFQUEUE机制实现网关的方法包括以下步骤:

步骤1:通过预先设置的NFQUEUE机制从预先配置的网卡中抓取数 据包;

步骤2:通过预先设置的用户态进程从NFQUEUE机制上收取所述数 据包,并通过预先设置的调用函数读取所述数据包;

步骤3:所述用户态进程将数据包信息匹配连接表,在匹配预先设置 在连接表中的一条连接记录的情况下,则按照所述连接记录信息修改、转 发数据包,跳转到步骤5;否则执行步骤4;

步骤4:所述用户态进程根据预先设置的用户配置的策略,将所述策 略信息与数据包信息进行逐条比对;

在比对结果为所述数据包与策略信息相匹配的情况下,则对数据包执 行预先存储的与所述策略信息相匹配的操作指令,同时建立一条连接记录, 存入连接表中;

在比对结果为所述数据包与策略信息不匹配的情况下,执行预先存储 的丢弃所述数据包的操作指令;

步骤5:通过预先设置的连接超时检查模块对连接表中的连接记录的 状态进行监测,在存在连接超时的情况下,则执行预先存储的释放该连接 的操作指令,并执行预先存储的跳转至步骤1的操作指令。

进一步的,所述处理数据包的操作指令包括源地址转换SNAT、目的 地址转换DNAT、FULLNAT、路由、丢弃。

进一步的,所述用户态进程支持多线程。

根据本发明的另一方面,提供了一种使用NFQUEUE机制实现网关的系 统,该使用NFQUEUE机制实现网关的系统包括:

数据抓取模块,用于通过预先设置的NFQUEUE机制从预先配置的网 卡中抓取数据包;

数据读取模块,用于通过预先设置的用户态进程从NFQUEUE机制上 收取所述数据包,并通过预先设置的调用函数读取所述数据包;

信息比对模块,用于所述用户态进程根据预先设置的用户配置的策略, 将所述策略信息与数据包信息进行逐条比对;或数据包信息与预先设置在 连接表中的连接记录比对;

执行操作模块,用于在比对结果为所述数据包与策略信息相匹配的情 况下,则将所述策略信息与数据包信息进行连接,对数据包执行预先存储 的与所述策略信息相匹配的操作指令;

在比对结果为所述数据包与策略信息不匹配的情况下,执行预先存储 的丢弃所述数据包的操作指令;

超时检查模块,通过预先设置的连接超时检查模块对连接表中的连接 记录的状态进行监测,在存在连接超时的情况下,则执行预先存储的释放 该连接的操作指令。

进一步的,还包括:

连接表信息比对模块,用于将所述数据包与预先存储的连接表中的连 接信息进行比对,在所述数据包与所述连接信息相匹配的情况下,则对数 据包执行预先存储的与所述连接信息相匹配的操作指令,并跳转至超时检 查模块进行是否存在超时连接的操作。

进一步的,所述处理数据包的操作指令包括源地址转换SNAT、目的 地址转换DNAT、FULLNAT、路由、丢弃。

进一步的,所述用户态进程支持多线程。

本发明的有益效果为:

1、程序移植性好,不需要修改Linux内核代码,在支持NFQUEUE的 Linux平台上都能运行;

2、程序运行在用户态,开发难度低,稳定性高,添加修改功能操作方 便;

3、支持丰富的匹配选项;

4、支持丰富的统计数据展示。

附图说明

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

图1是根据本发明实施例所述的一种使用NFQUEUE机制实现网关的方 法的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是 全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其 他实施例,都属于本发明保护的范围。

如图1所示,根据本发明实施例所述的一种使用NFQUEUE机制实现网 关的方法,包括以下步骤:

步骤1:通过预先设置的NFQUEUE机制从预先配置的网卡中抓取数 据包;

步骤2:通过预先设置的用户态进程从NFQUEUE机制上收取所述数 据包,并通过预先设置的调用函数读取所述数据包;

步骤3:所述用户态进程将数据包信息匹配连接表,如果匹配预先设 置在连接表中的一条连接记录,则按照连接记录信息修改、转发数据包, 跳转到步骤5;否则执行步骤4;

步骤4:所述用户态进程根据预先设置的用户配置的策略,将所述策 略信息与数据包信息进行逐条比对;

在比对结果为所述数据包与策略信息相匹配的情况下,则对数据包执 行预先存储的与所述策略信息相匹配的操作指令,同时建立一条连接记录, 存入连接表中;

在比对结果为所述数据包与策略信息不匹配的情况下,执行预先存储 的丢弃所述数据包的操作指令;

步骤5:通过预先设置的连接超时检查模块对连接表中的连接记录的 状态进行监测,在存在连接超时的情况下,则执行预先存储的释放该连接 的操作指令,并执行预先存储的跳转至步骤1的操作指令。

所述处理数据包的操作指令包括源地址转换SNAT、目的地址转换 DNAT、FULLNAT、路由、丢弃。

所述用户态进程支持多线程。

一种使用NFQUEUE机制实现网关的系统,包括:

数据抓取模块,用于通过预先设置的NFQUEUE机制从预先配置的网 卡中抓取数据包,并发送所述数据包;

数据读取模块,用于通过预先设置的用户态进程从NFQUEUE机制上 收取所述数据包,并通过预先设置的调用函数读取所述数据包;

信息比对模块,用于所述用户态进程根据预先设置的用户配置的策略, 将所述策略信息与数据包信息进行逐条比对;

执行操作模块,用于在比对结果为所述数据包与策略信息相匹配的情 况下,则将所述策略信息与数据包信息进行连接,对数据包执行预先存储 的与所述策略信息相匹配的操作指令;

在比对结果为所述数据包与策略信息不匹配的情况下,执行预先存储 的丢弃所述数据包的操作指令;

超时检查模块,用于对所述策略信息与数据包信息的连接状态进行监 测,在存在连接超时的情况下,则执行预先存储的释放该连接的操作指令, 并执行预先存储的跳转至抓取数据包的操作指令。

还包括:

连接表信息比对模块,用于将所述数据包与预先存储的连接表中的连 接信息进行比对,在所述数据包与所述连接信息相匹配的情况下,则对数 据包执行预先存储的与所述连接信息相匹配的操作指令,并跳转至超时检 查模块进行是否存在超时连接的操作。

所述处理数据包的操作指令包括源地址转换SNAT、目的地址转换 DNAT、FULLNAT、路由、丢弃。

所述用户态进程支持多线程。

本系统不需要修改Linux内核、开发内核模块,在任何支持NFQUEUE 的Linux平台上均可运行;并且策略的匹配条件可以选择数据包中的任何 字段,并且可以快速定制匹配算法。

其中,本申请中所指的策略是一条处理数据包的规则:如果数据包P 匹配条件T,则执行动作A。

条件T:数据包P的协议头部、协议内容、来源接口满足一定条件。

动作A包括:

SNAT动作:使用指定的源地址范围、端口范围等做SNAT;

DNAT动作:使用指定的目的地址范围、端口范围等做DNAT;

FULLNAT动作:使用指定的源地址范围、源端口范围、目的地址范 围、目的端口范围做FULLNAT;

路由动作:路由;

丢弃动作:丢弃该数据包。

一个策略的例子:

如果数据包从eth1接口来,并且目的地址是1.1.1.1:8080,并且协议是 TCP,则采取DNAT动作,DNAT的目的是192.168.4.2:80。

综上所述,借助于本发明的上述技术方案,相对于现有技术,本发明的技 术方案具有以下优点:

1、程序移植性好,不需要修改Linux内核代码,在支持NFQUEUE的 Linux平台上都能运行;

2、程序运行在用户态,开发难度低,稳定性高,添加修改功能操作方 便;

3、支持丰富的匹配选项;

4、支持丰富的统计数据展示。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发 明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号