Linux网络防火墙Netfilter的数据包传输过滤原理
保密及网络安全
2010年第23卷第5期
ElectronicSci &Tech /May 15,2010
Linux网络防火墙Netfilter的数据包传输过滤原理
朱 艳
(西安市儿童医院医保合疗办,陕西西安 710003)
摘 要 给出了Linux网络防火墙Netfilter在IPV4网络环境下,Netfilter框架挂接点结构及数据包的传输流程,并描述了在该流程中进行数据包传输过滤的5个挂接点钩子函数的功能,以及钩子函数各种可能返回值的含义。最后结合Netfilter处理数据包原理,介绍了对数据包进行各种形式过滤的实现方法。
关键词 Linux;防火墙;Netfilter
中图分类号 TP393 08 文献标识码 A 文章编号 1007-7820(2010)05-094-03
TheoreticalAnalysisofPacketFilteringTransmissionofthe
FirewallNetfilterinLinuxNetwork
ZhuYan
(OfficeofHealthInsurance&CooperativeMedicalService,Xi anChildrenHospita,lXi an710003,China)
Abstract ThenetworkfirewallNetfilterintheLinuxnetworkenvironmentIPV4mountpointstructureandthetransmissionofthepacketflowaregiven.Thefunctionsoffivemountpointhooksduringtheprocessofdatapackettransmissionandfiltering,andthemeaningsofavarietyofpossiblereturnedvaluesarepresented.Finally,basedontheprinciplesoftheNetfilterdatapacketsprocess,variousformsofpacketfilteringmiplementationsarediscussed.
Keywords linux;
firewal;lnetfilter
Netfilter防火墙是由PaulRussell提出的一种新型
的分析和处理特定协议数据包框架,由于其在功能、稳定性、安全性及扩充性等方面具有较强的优势,而被选作为Linux的防火墙,以模块的形式存在于Linux中。Netfilter不同于通常的Berkeley套接字接口的协议数据包处理框架,Netfilter框架为Linux内核中其他模块动态参与IP层中的数据包处理提供了途径
。
本文就Netfilter框架结构中的挂接点和数据包传
[1-2]
PREROUTING,LOCALIN,FORWARD,LOCALOUT
[3-4]
和POSTROUTING。在这5个挂接点上,各引入了一个钩子函数的调用。当允许一个数据包通过Netfilter框架时,它将经过如图1
所示的流程。
输流程,各挂接点钩子函数的功能及函数返回值加以分析,有助于进一步对基于Linux操作系统的网络安
全进行研究与探索。
1 Netfilter框架中的挂接点及数据包传输流程
Netfilter防火墙的内核模块为了对经过内核TCP/IP协议栈的不同类型的数据包能够加以多种手段的控制和处理,在数据包经过协议栈的游历路线之中,仔细选择了5个挂接点。这5个挂接点被分别命名为
收稿日期:2010 03 30
作者简介:朱艳(1960-),女,工程师。研究方向:电子信息。
图1 Netfilter框架工作流程及Netfilter/IPV4挂接点
2 钩子函数的功能
其中,标记为1~5分别是在IPV4协议栈中定义的钩子函数,它们的功能如下:
(1)NF_IP_PRE_ROUTING:进入的网络数据包在路由查找之前,在ip_rcv()函数(ip_rcv()是Linux核心网络堆栈中用于接收IPV4数据包的主要函数)中被