Chinaunix

标题: netfilter中修改ip头增加option字段的问题 [打印本页]

作者: apapeng    时间: 2011-10-27 17:35
标题: netfilter中修改ip头增加option字段的问题
从论坛中查找了一些,都是修改tcp等层的,因为那些修改都是通过nf_nat_mangle_tcp_packet等函数来实现的。现在我想修改一下ip头这个,增加上option字段,这样该怎么做呢,请大牛们给提点建议,谢谢!
作者: Godbach    时间: 2011-10-27 17:42
回复 1# apapeng
置顶帖中有修改 skb 的精华贴,你可以看一下
作者: apapeng    时间: 2011-10-27 17:59
里边没有找到修改ip头这种的,就是ip这个长度增加。netfilter中封装的只是ip头长度不变的修改,或者是tcp数据段部分的修改。没有找到对这种ip头长度增加的修改方法。是否只有自己全部把skb这个全部构造一个来实现呢,那就有点麻烦了。谢谢斑竹的回答!
作者: Godbach    时间: 2011-10-28 08:25
回复 3# apapeng
可以变通一下吗。 学习人家不就是这样吗。

检查一下 tailroom 是否够大,如果能够容纳 ip options,那就好办了。

将四层及载荷全部往后移动一个 ip options 的大小,然后在腾出来的 buf 中,填充你的 ip options,并且修改校验和即可。
作者: apapeng    时间: 2011-10-29 10:00
这个效率应该会高。要是重新开辟缓冲区,那效率肯定要降低了,不知道路由器的修改ip option的位置是在那里,是否从那个地方处理会好一些
作者: renyuan000    时间: 2012-02-02 10:21
我也遇到类似的问题了,我要动态修改ip options 但发现在内核里修改了socket->sock->inet->opt后不能正常生效,




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2