首 页 教育新闻课件中心论文中心教学教案试题中心语文专题综合下载技术教程公务员  
设为首页
加入收藏
联系我们
您当前的位置:中国教育资源网 -> 技术教程 -> 网络相关 -> 服务器 -> Web服务器 -> 技术内容 退出登录 用户管理

linux内核防火墙netfilter中的5个钩子Web服务器教程

论文作者:佚名  论文来源:不详  论文发布时间:2006-6-18 21:54:19  论文发布人:chjchjchj

减小字体 增大字体

              摘要:linux内核防火墙netfilter中的5个钩子

netfilter是一种内核中用于扩展各种网络服务的结构化底层框架。netfilter的设计思想是生成一个模块结构使之能够比较容易的扩展。新的特性加入到内核中并不需要从新启动内核。这样,可以通过简单的构造一个内核模块来实现网络新特性的扩展。给底层的网络特性扩展带来了极大的便利,使更多从事网络底层研发的开发人员能够集中精力实现新的网络特性。
Netfilter有4大特性:
 1. 每一个协议定义"hooks"(钩子),IPv4定义了5个钩子,他们遍布协议栈中包传输的整个过程。在每一个点上,协议将使用包和钩子号来调用netfilter框架。
 2. 部分内核可注册后可以为每一个协议监听不同的钩子。因此,当包通过netfilter框架时,它检查看是否有模块为协议和钩子注册;如果有,他们每一个都有机会按顺序检验(也可能是更改)包,抛弃包,允许包通过,或者请求netfilter为用户空间排队包。
 3. 排队了的包可以被收集送往用户空间;这些包是被异步的处理的。
 4.有非常良好的代码和文档。这一点对于一个拥有良好扩展性的开放式框架具有极其深远的意义。离开了这一特性,netfilter结构将大为逊色甚至是难以操作的。
 Netfilter整体结构如下图所示,netfilter仅仅只是协议栈中多个点上一系列钩子。IPv4的整个流程图如下


:包横穿netfilter系统示意图:
------ →[1]------ →[ROUTE]------ →[3]------ →[4]------ →
              |            ^
              |            |   
              |            [ROUTE]
              v            |
              [2]           [5]
              |            ^
              |            |
              v            |



[1]:NF_IP_PRE_ROUTING:刚刚进入网络层的数据包通过此点(刚刚进行完版本号,校验和等检测), 源地址转换在此点进行;
[2]:NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此检查点,INPUT包过滤在此点进行;
[3]:NF_IP_FORWARD:要转发的包通过此检测点,FORWORD包过滤在此点进行;
[4]:NF_IP_POST_ROUTING:所有马上便要通过网络设备出去的包通过此检测点,内置的目的地址转换功能(包括地址伪装)在此点进行;
[5]:NF_IP_LOCAL_OUT:本机进程发出的包通过此检测点,OUTPUT包过滤在此点进行。
内核模块可以被注册以监听这些钩子中的任意一个。接着当netfilter钩子被来自域网络代码的核心调用,每一个在那一处注册了的模块就可以自由的操作处理包。接下来模块可以告知netfilter做下列五件事中的一件:
  1.NF_ACCEPT:继续传递,保持和原来传输的一致;
  2.NF_DROP:丢弃包;不再继续传递;
  3.NF_STOLEN:接管包;不再继续传递;
  4.NF_QUERE:队列化包(通常是为用户空间处理做准备);
  5. NF_REPEAT:再次调用这一个钩子。
我们看include/linux/netfilter.h里面定义了


/* Largest hook number + 1 */
#define NF_MAX_HOOKS 8
也就是说Netfilter最多可以支持8个hook.为了扩展方便,Netfilter也提供了很方便的nf_register_hook函数用来加入我们自己的代码。int nf_register_hook(struct nf_hook_ops *reg)
下面是nf_hook_ops的结构
struct nf_hook_ops
{
struct list_head list;


/* User fills in from here down. */
nf_hookfn *hook;
int pf;
int hooknum;
/* Hooks are ordered in ascending priority. */
int priority;
};


(作者:sw0rd)

[] [返回上一页] [打 印] [收 藏]  
 ∷相关技术评论  (评论内容只代表网友观点,与本站立场无关!) [查看发表评论...]
 
 中国教育资源网免费技术教程下载中心-站内广告 站内广告 中国教育资源网免费技术教程下载中心-站内广告 
 中国教育资源网站内搜索 站内搜索 中国教育资源网站内搜索 
 

   
 中国教育资源网免费技术教程下载中心-栏目导航 栏目导航 中国教育资源网免费技术教程下载中心-栏目导航 
· Windows 9XMEXP · Windows NT20002003
· LinuxBSD · 系统综合
· IISApache · 硬件技术
· Web服务器 · FTP服务器
· 邮件服务器 · 域名服务器
· Windows服务器 · 代理服务器
· 服务器综合
 
中国教育资源网免费技术教程下载中心-相关教程  相关技术 中国教育资源网免费技术教程下载中心-相关教程
· 手把手教你装Linux系
· [组图] Linux最新版本抢鲜体
· Linux与Windows硬盘
· 找回Linux超级用户r
· [图文] 实现Linux与windows
· Linux与Windows谁更
· [组图] 怎样让你的Linux使用
· 让你的Linux用起来跟
· Win XP和 RedHat Li
· 如何在Linux环境模拟
 中国教育资源网免费技术教程下载中心-本月热门教程 本月热门 中国教育资源网免费技术教程下载中心-本月热门教程 
 
 中国教育资源网免费技术教程下载中心-本日热门论文 本日热门 中国教育资源网免费技术教程下载中心-本日热门论文 
 
关于本站 - 网站帮助 - 免费课件 - 美容 - 绿色软件 - 软件下载 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 网站留言
浙ICP备06010405号 Email:cnkjz@163.com 技术支持:名流设计
版权所有 Copyright© 2002-2004 名流