netfilter 学习练习一:通过目的端口过滤发出去的数据包

本文介绍了如何在Linux内核3.10.0-514.el7.x86_64中,利用netfilter框架在出口点注册钩子函数,过滤并阻止目的端口为80(HTTP)的数据包。通过编译模块filter_port.o,安装后可以观察到telnet到80端口被阻断,dmesg日志显示相关端口的数据包被丢弃。
摘要由CSDN通过智能技术生成

kernel版本 3.10.0-514.el7.x86_64

netfilter框架通过在内核网络协议栈五个数据包处理点注册回调函数,调用这些回调函数实现数据包过滤、修改、转发。

表示回调函数的hook结构体如下:

struct nf_hook_ops {
    struct list_head list;    //hook钩子函数双向列表,每一个hook点可以注册多个钩子函数

    /* User fills in from here down. */
    nf_hookfn   *hook;  //hook点的钩子函数
    struct module   *owner;  //所属模块指针
    void        *priv;        //猜测应该是私有数据,2.6.37版本没有这个字段
    u_int8_t    pf;  //协议族编号,如ipv4协议: PF_INET
    unsigned int    hooknum; //hook点编号,如 NF_INET_POST_ROUTING
    /* Hooks are ordered in ascending priority. */
    int     priority; //优先级,hook点注册的钩子函数列表按照优先级由高到底插入

    //2.6.37版本还没有下列字段
    /* Reserved for use in the future RHEL versions. Set to zero. */
    unsigned long   __rht_reserved1;
    unsigned long   __rht_reserved2;
    unsigned long   __rht_reserved3;
    unsigned long   __rht_reserved4;
    unsigned long   __rht_reserved5;
};

hook钩子函数原型如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

种菜的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值