首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Netfilter模块中损坏sk_buff数据

在Netfilter模块中损坏sk_buff数据
EN

Stack Overflow用户
提问于 2013-08-14 00:29:00
回答 1查看 712关注 0票数 0

我正在构建一个模块,对包含在其中的协议进行大规模的破坏。我只是损坏了第4层的数据包。我把他们从另一端转变成他们应该做的样子。包的大小仍然是1:1,所以真的不需要重新分配skb.

也就是说,我更改了skb->data,然后从我的NF_IP_LOCAL_OUT钩子中返回NF_ACCEPT。我有另一个钩子,它显示sk_buff被传递给NF_IP_POST_ROUTING,但是数据包实际上从未离开主机(就像我在Wireshark中没有看到的那样)。我搞不懂到底是怎么回事。包裹是不是掉在什么地方了?除了netfilter钩子之外,我没有使用任何其他内核钩子,也没有操纵目标,所以它应该毫无疑问地离开机器。

有什么原因吗?我需要在内核中注册我的自定义IPPROTO吗?我把它放在/etc/protocols里,我想这就足够了。还是我完全走错了路?我尝试使用IPsec内核中的ESP和AH代码,因为它也破坏了数据包,但是所有的转换代码都比我所需要的要复杂。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-14 20:51:37

分辨率

似乎只有一个例外,我做的一切都是正确的。我没有重新计算IP报头的校验和(因为我更改了协议id本身,这是强制性的)。

代码

代码语言:javascript
运行
复制
iph->check = 0;
iph->check = ip_fast_csum(iph, iph->ihl);

而且它起了作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18246762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档