来看看:从五方面剖析Linux防火墙框架
系统做了些什么,这需要时间去掌握,(背命令不是一件好的学习方法,相信我你一定会在你背完之前全部忘光),尽量掌握常用命令;Linux体系中的Netfilter供应了一个笼统、通用化的框架,该框架界说的一个子功效的完成就是包过滤子体系,框架包括以下五部分:1.为每种收集协定(IPv4、IPv6等)界说一套钩子函数(IPv4界说了5个钩子函数),这些钩子函数在数据报流过协定栈的几个关头点被挪用。在这几个点中,协定栈将把数据报及钩子函数标号作为参数挪用Netfilter框架。
2.内核的任何模块能够对每种协定的一个或多个钩子举行注册,完成挂接,如许当某个数据包被传送给Netfilter框架时,内核能检测是不是有任何模块对该协定和钩子函数举行了注册。若注册了,则挪用该模块的注册时利用的回调函数,如许这些模块就无机会反省(大概还会修正)该数据包、抛弃该数据包及唆使Netfilter将该数据包传进用户空间的行列。
3.那些列队的数据包是被传送给用户空间的异步地举行处置。一个用户历程能反省数据包,修正数据包,乃至能够从头将该数据包经由过程分开内核的统一个钩子函数中注进到内核中。4.任安在IP层要被丢弃的IP数据包在真正丢弃之前都要举行反省。比方同意模块反省IP-Spoofed包(被路由丢弃)。
5.IP层的五个HOOK点的地位以下所示:(1)NF_IP_PRE_ROUTING:方才进进收集层的数据包经由过程此点(方才举行完版本号,校验和等检测),源地点转换在此点举行;IP_Input.c中IP_Rcv挪用;(2)NF_IP_LOCAL_IN:经路由查找后,送往本机的经由过程此反省点,INPUT包过滤在此点举行,IP_local_deliver中挪用;(3)NF_IP_FORWARD:要转发的包经由过程此检测点,FORWORD包过滤在此点举行;(4)NF_IP_POST_ROUTING:一切即刻便要经由过程收集设备进来的包经由过程此检测点,内置的目标地点转换功效(包含地点假装)在此点举行;(5)NF_IP_LOCAL_OUT:本机历程收回的包经由过程此检测点,OUTPUT包过滤在此点举行。
这些点是已在内核中界说好的,内核模块可以注册在这些HOOK点举行的处置,可以使用nf_register_hook函数指定。在数据报经由这些钩子函数时被挪用,从而模块能够修正这些数据报,并向Netfilter前往以下值:
NF_ACCEPT持续一般传输数据报
NF_DROP抛弃该数据报,不再传输
NF_STOLEN模块接受该数据报,不要持续传输该数据报
NF_QUEUE对该数据报举行列队(一般用于将数据报给用户空间的历程举行处置)
NF_REPEAT再次挪用该钩子函数
一个基于Netfilter框架的、称为IPtables的数据报选择体系在Linux2.4内核中被使用,实在它就是IPchains的后继工具,但却有更强的可扩大性。内核模块能够注册一个新的划定规矩表(table),并请求数据报流经指定的划定规矩表。这类数据报选择用于完成数据报过滤(filter表),收集地点转换(Nat表)及数据报处置(Mangle表)。Linux2.4内核供应的这三种数据报处置功效都基于Netfilter的钩子函数和IP表。它们是自力的模块,互相之间是自力的。它们都完善的集成到由Netfileter供应的框架中。
包过滤
Filter表格不会对数据报举行修正,而只对数据报举行过滤。IPtables优于IPchains的一个方面就是它更加玲珑和疾速。它是经由过程钩子函数NF_IP_LOCAL_IN、NF_IP_FORWARD及NF_IP_LOCAL_OUT接进Netfilter框架的。因而关于任何一个数报只要一个中央对其举行过滤。这绝对IPchains来讲是一个伟大的改善,由于在IPchains中一个被转发的数据报会遍历三条链。
NAT
NAT表格监听三个Netfilter钩子函数:NF_IP_PRE_ROUTING、NF_IP_POST_ROUTING及NF_IP_LOCAL_OUT。NF_IP_PRE_ROUTING完成对必要转发的数据报的源地点举行地点转换而NF_IP_POST_ROUTING则对必要转发的数据包的目标地点举行地点转换。关于当地数据报的目标地点的转换则由NF_IP_LOCAL_OUT来完成。NAT表格分歧于filter表格,由于只要新毗连的第一个数据报将遍历表格,而随后的数据报将依据第一个数据报的了局举行一样的转换处置。NAT表格被用在源NAT、目标NAT,假装(其是源NAT的一个惯例)及通明代办署理(其是目标NAT的一个惯例)。
数据报处置(PacketMangling)
Mangle表格在NF_IP_PRE_ROUTING和NF_IP_LOCAL_OUT钩子中举行注册。利用mangle表,能够完成对数据报的修正或给数据报附上一些带外数据。以后mangle表撑持修正TOS位及设置skb的nfmard字段。
假如我们想到场本人的代码,便要用nf_register_hook函数。我们的事情即是天生一个structnf_hook_ops布局的实例,并用nf_register_hook将其HOOK上。个中list项我们总要初始化为{NULL,NULL};因为一样平常在IP层事情,pf老是PF_INET;hooknum就是我们选择的HOOK点;一个HOOK点大概挂多个处置函数,谁先谁后,便要看优先级,即priority的指定了。Netfilter_IPv4.h顶用一个列举范例指定了内置的处置函数的优先级
</p>
当你经过一段时间的学习后就应该扩充自己的知识,多学习linux命令,但是不要在初学阶段就系统的学习linux命令。 即便是非英语国家的人发布技术文档,Linux也都首先翻译成英语在国际学术杂志和网络上发表。 查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。 通过自学老师给的资料和向同学请教,掌握了一些基本的操作,比如挂载优盘,编译程序,在Linux环境下运行,转换目录等等。学了这些基础才能进行下面的模拟OS程序。? 下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。 Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。 通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。 熟悉操作是日常学习Linux中的三大法宝。以下是作者学习Linux的一些个人经验,供参考: 随着Linux技术的更加成熟、完善,其应用领域和市场份额继续快速增大。目前,其主要应用领域是服务器系统和嵌入式系统。然而,它的足迹已遍布各个行业,几乎无处不在。
页:
[1]