WEB开发网
开发学院网络安全防火墙 linux防火墙实现技术比较 阅读

linux防火墙实现技术比较

 2006-04-03 12:36:40 来源:WEB开发网   
核心提示: unsigned int verdict = NF_DROP;table_base = (void *)table->private->entries+ TABLE_OFFSET(table->private,cpu_number_map(smp_processor_id

unsigned int verdict = NF_DROP;

table_base = (void *)table->private->entries

+ TABLE_OFFSET(table->private,

cpu_number_map(smp_processor_id()));

e = get_entry(table_base, table->private->hook_entry[hook]);

...

ip_packet_match(ip, indev, outdev, &e->ip, offset);

...

IPT_MATCH_ITERATE(e, do_match, *pskb, in, out, offset, protohdr, datalen, &hotdrop)

...

t = ipt_get_target(e);

...

verdict = t->u.kernel.target->target(pskb, hook, in, out, t->data, userdata);//非标准的target走这一步

...

return verdict;

}

流程:

--->NF_HOOK();(/include/linux/netfilter.h)

--->nf_hook_slow;(/net/core/netfilter.c)

--->nf_iterate();(/net/core/netfilter.c)

--->然后运行登记的函数;如果你希望有一套ipt_entry结构规则,并将它放到table里,你此时便可调用ipt_do_table来匹配。

在2.4内核中,规则本身也是可扩展的,体现可自己定义并添加新的ip_match和ip_target上。

4.2 FW1

未作分析。

五 与应用层的交互

5.0 综述

防火墙除了内核里的功能以外,还需要在应用层有相应的的配置工具,如添加修改规则等,这就涉及如何与内核通信的问题。

内核模块有三种办法与进程打交道:首先是系统调用,缺点是必须添加新的系统调用或修改原有的,造成对内核代码原有结构的变换;第二种办法是通过设备文件(/dev目录下的文件),不必修改编译原有的代码,但在使用之前要先用mknod命令产生一个这样的设备;第三个办法便是使用proc文件系统。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:linux 防火墙 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接