Linux kernel 修改数据包网络过滤器

Linux kernel 修改数据包网络过滤器,linux-kernel,netfilter,Linux Kernel,Netfilter,这是两个示例: 我只想在hook LOCAL_中更改来自服务器的数据,这是一个类似的spllitted示例。 在附加数据示例中,这是可以的。但分裂的例子,这是不工作的。 我认为问题在于更新长度、校验和udp、ip数据包(例如:计算钩子LOCAL_in和LOCAL_OUT的校验和时的值偏移量是不同的(int offset=skb_transport_offset(skb)),因为当数据包进入时,数据包在进入udp层之前被处理) 有人有办法解决吗?谢谢问题在于不同的函数校验和。 在sidesende

这是两个示例: 我只想在hook LOCAL_中更改来自服务器的数据,这是一个类似的spllitted示例。 在附加数据示例中,这是可以的。但分裂的例子,这是不工作的。 我认为问题在于更新长度、校验和udp、ip数据包(例如:计算钩子LOCAL_in和LOCAL_OUT的校验和时的值偏移量是不同的(int offset=skb_transport_offset(skb)),因为当数据包进入时,数据包在进入udp层之前被处理)


有人有办法解决吗?谢谢

问题在于不同的函数校验和。 在sidesender中,当您在hook(POST_路由或LOCAL_OUT)更新udp校验和时,校验和只针对伪头,不包括udp数据报

在侧接收器中,当您在hook(PRE_ROUTING或LOCAL_In)更新udp校验和时,校验和必须包括伪头+udp数据报