linux 2.4中netfilter框架实现分析

linux 2.4中netfilter框架实现分析

ID:9233284

大小:278.13 KB

页数:5页

时间:2018-04-24

linux 2.4中netfilter框架实现分析_第1页
linux 2.4中netfilter框架实现分析_第2页
linux 2.4中netfilter框架实现分析_第3页
linux 2.4中netfilter框架实现分析_第4页
linux 2.4中netfilter框架实现分析_第5页
资源描述:

《linux 2.4中netfilter框架实现分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux2.4中netfilter框架实现分析’宋欣‘,李晶“‘(东北大学秦皇岛分校计算机工程系,河北省秦皇岛市066004)“(燕山大学计算机科学系,河北省秦皇岛市066004)摘要:Linux作为一个开放源代码的操作系统,其内核在不断的升级完善。在Linuxl.4版本的内核中,提供了一个用于扩展网络服务的通用框架结构—Netfilter。文章阐述了Netfilter的核心思想,重点分析了其框架的具体实现,并以实例说明了应用Netfilter框架扩展网络功能的方法。关健词:LinuxNetfilter框架1引言作为一个优秀的开放源代码的操作系统,Linux内核在不断的升级完善

2、。其中内核防火墙子系统的功能也在不断扩展。早在Linuxl.1内核中使用了从BSDUNIX中移植过来的ipfw,用于执行简单的包过滤功能。之后,2.o内核中对ipfw进行了扩展,并且添加了ipfwad用户工具。到了2.2内核中,在做了进一步的改进后推出Ipchains,Ipchains已经被用户广泛认可,它提供了较为完整的防火墙功能,但还是存在一些缺陷。主要是结构方面的原因,Ipchains没有采用开放的结构,用户不能直接扩展Ipchains的功能。所以任何对数据包进行处理的代码都必须运行在内核空间,而内核编程比较复杂,而且只能用C/C++语言实现,并且容易出现错误并对内核稳定性

3、造成威胁。为了解决这些问题,为用户提供一个开放的、易扩展性的内核防火墙,在Linuxl.4内核中,又引人了一种全新的底层结构—Netfilter,Netfilter已经不能说是用于执行包过滤或者说是内建的防火墙子系统了,Netfilter是一种实现于内核中的用于扩展各种网络服务的结构化底层框架。Linuxl.4中的内核防火墙的包过滤,网络地址转换(NAT),数据包处理以及状态监测等功能就是基于这个框架实现的。当然Netfilter的意义不仅仅在于更好的实现了内核防火墙,更重要的是它提供了一个抽象、通用化的框架,使得内核网络功能模块的扩展变得容易。为了更好的利用这个框架,进一步开发

4、内核网络功能模块,本文详细分析了Netfilter的实现方法,并在此基础上举例说明了该框架的应用方法。2Netfilter核心思想Netfilter本身并不提供包过滤或者是防火墙的功能,它只是提供一个可加载网络服务的通用框架,其核心的思想包括以下三点:1)针对每种网络协议(IPv4,IPv6等)定义若干个钩子点(IPv4,ipv6都定义了5个钩子点),这些钩子点在协议栈中被精心定位;数据包在通过IP协LocalProcess议栈时,根据路由表会经过其中的某些钩子点。2)内核模块可以在一个或多个这样的钩子点注册挂接钩子函数。3)这样,数据包在通过某个钩子点时,就会调用注册在此钩子点

5、上的钩子函数,此函数实现对数据包的具体处理,并将处理结果返回相应的内核模块。RouteTable3Netfilter框架实现方法分析当前netffilter框架在IPv4,IPv6及DECnet网络协议中被实现。下面的分析只针对IPA协议。3.1钩子点对应于ipv4协议,netfilter定义了5个钩子点,其位置如图1所示:在/usr/src/linux-2.4.18/include/linux/netfilter_ipv4.h中定义如下图1币v4中钩子点的位置/二IPHooks,/作者简介:宋欣(1978-),女,本科,主要研究领域为计算机网络安全与防范图形图象处理李晶(197

6、9-),女,在读硕,主要研究领域为数据库系统实现技术。Linux2.4尹netfilter握来实观分舟453并defineNF_IPPRE_ROUTING#defineNF_IPLOCALIN#defineNF_IPFORWARD#defineNF_IPLOCALOUT#defineNFIPPOSTROUTING数据包从底层进人网络层,首先经过第一个钩子点NF_IP_PRE_ROUTING;然后就进人路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发给本机的,则该数据包经过第二个钩子点NF_IP_LOCAL_IN,然后传递给上层协议;若该数据包应该被转发则它将流过第

7、三个钩子点NF_IP_FORWARD;本地产生的数据包则先经过第四个钩子点NFIP_LOCAL_OUT;经过转发或者是本地产生的数据包最后都将经过第五个钩子点NF_IP_POST_ROUTING,然后发送到网络上。在/usr/src/linux-2.4.18/include/linux/netfilter.h中定义了常量NF_NM_HOOKS,表示针对每种协议最多可定义的钩子点数;而linux所支持的最大协议数于/usr/src/linux2.4.18/include/linux

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。