【问题标题】:NetFilterHook: Displaly Interface NameNetFilter 挂钩:显示接口名称
【发布时间】:2016-04-01 12:53:23
【问题描述】:

如何在内核空间中过滤和/或显示数据包到达的接口名称?

更具体地说,我希望在内核中打印出接口的名称,例如 eth0、wlan1 等。

其次,如何仅从特定接口(例如 eth0)过滤数据包?

【问题讨论】:

    标签: linux-kernel hook kernel-module netfilter


    【解决方案1】:

    在钩子函数中,有参数const struct net_device *inconst struct net_device *out。 您可以通过以下方式打印:

    printk(KERN_INFO "%s\n", out->name);
    

    或:

    printk(KERN_INFO "%s\n", in->name);
    

    注意:你需要检查是否为空。

    关于第二个问题,可以在strcmp(in->name, "eth0")的hook函数中使用,然后决定drop还是accept。

    【讨论】:

    • 命令printk(KERN_INFO "%s\n", in->name);只是打印一个空格?
    • 如果将其更改为 printk(KERN_INFO "%s\n", out->name); 内核崩溃,我的笔记本电脑会挂起
    • 两者都应该打印设备的名称。如果在传入数据包上注册了钩子函数,则应使用printk(KERN_INFO "%s\n", in->name);。输出为“eth0”、“eth1”等。
    • 如果您需要更多帮助,请告诉我您到底想做什么。
    • 非常感谢我的笔记本电脑出现的问题。以上在另一台计算机上工作正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多