科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道Linux防火墙程序设计(2)

Linux防火墙程序设计(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

编写防火墙程序只是需要明白在网络内核中有这样一种机制,那就是内核可以自动调用用户编写的防火墙程序,并根据这个防火墙程序返回的结果来决定对网络收发数据报的处理策略。

作者:51CTO.COM 2007年11月11日

关键字: 模块 设计 防火墙 Linux

  • 评论
  • 分享微博
  • 分享邮件

  结构中next的域将由内核来修改,使其指向下一个防火墙模块。

  fw_pf域为协议标志,含义同上。

  fw_priority指定优先级,一般应大于0。

  fw_input、fw_output、fw_forward是用户编写的防火墙函数模块,在接收到网络报和发送网络报时内核将调用这些模块,后面将详细讨论。

  2、 unregister_firewall

  unregister_firewall的原型说明与调用方法同register_firewall。

  三、 防火墙函数模块的设计

  1、 防火墙函数模块的返回值

  返回值是至关重要的,内核将根据它来决定对网络数据报采取的处理策略。主要返回值及意义如下:

  0和1 通知内核忽略该网络报。

  -1 通知内核忽略该网络报,并发送不可达到的网络控制报(ICMP报文)。

  2 通知内核认可该网络报。

  2、 各模块函数的入口参数

  * 参数this

  指向register_firewall中的fw参数结构。

  * 参数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头文件。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章