公开/公告号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、支持丰富的统计数据展示。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发 明的保护范围之内。
机译: 一种在线服务系统,其中网关计算机使用服务映射,其中包括应用程序服务器广播的服务器的加载情况以实现负载平衡
机译: 一种新的自动化系统定义机制,该机制的任何部分均可用于各方的实现和使用。
机译: 使用智能个人通信设备(特别是智能手机),通过一种方法,一种数字工具,一种设备,一种网关和一种双向系统来检测乘客的车内姿势