gpt4 book ai didi

c - 读取Linux内核中的数据包内容(netfilters)

转载 作者:行者123 更新时间:2023-11-30 17:07:44 25 4
gpt4 key购买 nike

我正在构建一个简单的 Linux 防火墙,使用 netfilters 作为内核模块实现。我希望它能够进行深度数据包检查,为此我需要能够读取数据包的内容。我该如何继续这样做?

最佳答案

来自 netfilter 网站。

netfilter is a set of hooks inside the Linux kernel that allows kernel modules to register callback functions with the network stack. A registered callback function is then called back for every packet that traverses the respective hook within the network stack.

第 1 步:

编写一个用于深度数据包检查的模块。 Linux tcp api 将帮助您做到这一点。请参阅对此接受的答案 SO Question这将帮助您开始。您可能希望删除:

/* Show only HTTP packets */
if (user_data[0] != 'H' || user_data[1] != 'T' || user_data[2] != 'T' ||
user_data[3] != 'P') {
return NF_ACCEPT;
}

以防万一您希望处理所有数据包。

第 2 步:

使用netfilter在内核中为上述模块实现一个钩子(Hook)。

关于c - 读取Linux内核中的数据包内容(netfilters),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33980797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com