WEB开发网
开发学院网络安全防火墙 Linux防火墙程序设计 阅读

Linux防火墙程序设计

 2006-04-03 12:38:29 来源:WEB开发网   
核心提示: * 参数pf 含义同register_firewall中的pf参数, * 参数dev dev是指向数据结构device的指针,Linux防火墙程序设计(3),在Linux系统中,每一个网络设备都是用device数据结构来描述的,要让系统恢复原有功能,则可用rmmod命令卸载该程序,在系统引

* 参数pf

含义同register_firewall中的pf参数。

* 参数dev

dev是指向数据结构device的指针。在Linux系统中,每一个网络设备都是用device数据结构来描述的。在系统引导期间,网络设备驱动程序向Linux登记设备信息,如设备名、设备的I/O基地址、设备中断号、网卡的48位硬件地址等,device数据结构中包括这些设备信息以及设备服务函数的地址。关于device结构的详细信息可参见netdevice.h头文件。

* 参数phdr

该参数指向链路层数据报报头首址。

* 参数arg

利用这个参数可以向内核传递信息,如重定向时的端口号。

* 参数pskb

此参数是指向sk_buff结构指针的指针。在Linux中,所有网络数据的发送和接收都用sk_buff数据结构表示。在sk_buff数据结构中包含有对应设备结构的device地址、传输层、网络层、链路层协议头地址等。关于sk_buff的定义可参见skbuff.h头文件。

3、防火墙程序示例

下面给出一个简单防火墙程序。在这里假设读者对以太协议、IP协议、TCP协议等常用协议有一定的了解。用命令行"gcc -Wall -O2 -c MyFirewall.c"进行编译,再用insmod命令加载程序后,系统将只响应外部网络用TCP协议的80端口所进行的访问。要让系统恢复原有功能,则可用rmmod命令卸载该程序,源代码见网站www.pccomputing.com.cn上的同名文章。

// MyFirewall.c 2000年3月7日编写

#ifndef __KERNEL__

# define __KERNEL__ //按内核模块编译

#endif

#ifndef MODULE

# define MODULE //按设备驱动程序模块编译

#endif

#include <linux/module.h> //最基本的内核模块头文件

上一页  1 2 3 4  下一页

Tags:Linux 防火墙 程序设计

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