这是两个例子: How to append data on a packet from kernel space? How to route the splitted packets using netfilter hooks in kernel space 我只想在钩子LOCAL_IN上更改数据来服务器,这是类似的spllitted示例。 在追加数据示例时,没关系。但分裂的例子,那是行不通的。 我认为问题是更新长度,校验和udp,ip数据包(例如:在计算校验和时,挂钩LOCAL_IN和LOCAL_OUT的值偏移是不同的(int offset = skb_transport_offset(skb)),因为当数据包进入时,数据包在转到之前被处理udp layer)。我试着改变htons - > ntohs但这不起作用。
有人有想法解决?感谢
答案 0 :(得分:0)
问题是功能校验和不同。 在副发送方中,当您在挂钩(POST_ROUTING或LOCAL_OUT)更新udp校验和时,校验和仅用于伪标头,不包括udp数据报。
在side receiver中,当你在hook(PRE_ROUTING或LOCAL_IN)上更新udp校验和时,校验和必须包含伪头+ udp数据报。