0

这是 2 个示例: 如何从内核空间在数据包上附加数据? 如何在内核空间中使用 netfilter 钩子路由拆分的数据包 我只想在钩子 LOCAL_IN 处更改来自服务器的数据,这是类似的拆分示例。在附加数据示例中,没关系。但是拆分示例,那是行不通的。我认为问题是更新长度,校验和 udp,ip 数据包(例如:在钩子 LOCAL_IN 和 LOCAL_OUT 计算校验和的值偏移不同(int offset = skb_transport_offset(skb)),因为当一个数据包进入时,数据包在去之前被处理udp 层)。我尝试更改 htons -> ntohs 但这不起作用。

有人有想法解决吗?谢谢

4

1 回答 1

0

问题是不同的功能校验和。在发送方中,当您在钩子(POST_ROUTING 或 LOCAL_OUT)处更新 udp 校验和时,校验和仅用于伪标头,不包括 udp 数据报。

在侧接收器中,当您在钩子(PRE_ROUTING 或 LOCAL_IN)更新 udp 校验和时,校验和必须包含伪标头+udp 数据报。

于 2013-05-03T05:42:24.963 回答