NETFILTER拦截修改数据包后的MTU问题
时间:2010-09-21
来源:互联网
本帖最后由 destinywangyh 于 2010-09-21 00:51 编辑
小弟最近在做一个LINUX下的局域网加密系统,用NETFILTER拦截数据包并用LIBIPQ发到用户空间加密/解密再返回,进出本机各定义了两个HOOK如下:
复制代码
用户空间处理完后用ret = ipq_set_verdict(h, ipq_packet->packet_id, NF_ACCEPT, dl,tt);返回给内核空间,dl是处理后的数据包长度,tt是放修改后数据包的缓冲区.
发送接收单个小于1500的包,这样是可以成功加密通信的,但如果包大小原来已经是1500,经过加密后多了30个字节,包就因为比MTU大而发不出去.我看过WINDOWS下类似系统的实现,那里是在PtRequestComplete函数中写入:
复制代码
把分片大小改成1350.
请问LINUX下有没有类似的方法去可以改变发出去的包的分片大小?只要能规定分片不大于1350,我加密后的包也就不会超过MTU了.
另外一个思路是在分片之前加密,在重组之后解密,但应该如何HOOK才能让非分片包进入到用户空间?根据这里所说,我上面的两个HOOK处理的应该都是非分片包,我在HOOK FUNCTION中写上:
复制代码
使用PING X.X.X.X -S 2000测试时的确可以在用户空间截到2000大小的包,经过加密也能正常传输,但测试传输文件(TCP协议)时所截的包却还是不超过1500,加密到1530再发就不成功了....
小弟最近在做一个LINUX下的局域网加密系统,用NETFILTER拦截数据包并用LIBIPQ发到用户空间加密/解密再返回,进出本机各定义了两个HOOK如下:
- int init_module()
- {
- pr_info("i'm now in the kernel space!\n");
-
- nfho.hook = hook_func;
- nfho.hooknum = NF_INET_LOCAL_IN;
- nfho.pf = PF_INET;
- nfho.priority = NF_IP_PRI_MANGLE;
- nfho.owner = THIS_MODULE;
-
- nf_register_hook(&nfho);
-
- nfhoo.hook = hook_funco;
- nfhoo.hooknum = NF_INET_LOCAL_OUT;
- nfhoo.pf = PF_INET;
- nfhoo.priority = NF_IP_PRI_MANGLE;
- nfhoo.owner = THIS_MODULE;
-
- nf_register_hook(&nfhoo);
-
- return 0;
- }
发送接收单个小于1500的包,这样是可以成功加密通信的,但如果包大小原来已经是1500,经过加密后多了30个字节,包就因为比MTU大而发不出去.我看过WINDOWS下类似系统的实现,那里是在PtRequestComplete函数中写入:
- if(Oid == OLD_GEN_MAXIMUM_FRAME_SIZE)
- *(PULONG)NdisRequest->DATA.QUERY_INFORMATION.InformationBuffer=1350;
请问LINUX下有没有类似的方法去可以改变发出去的包的分片大小?只要能规定分片不大于1350,我加密后的包也就不会超过MTU了.
另外一个思路是在分片之前加密,在重组之后解密,但应该如何HOOK才能让非分片包进入到用户空间?根据这里所说,我上面的两个HOOK处理的应该都是非分片包,我在HOOK FUNCTION中写上:
- unsigned int hook_func(unsigned int hooknum,
- struct sk_buff *skb,
- const struct net_device *in,
- const struct net_device *out,
- int (*okfn)(struct sk_buff *))
- { skb_linearize(skb);
- return NF_QUEUE;}
作者: destinywangyh 发布时间: 2010-09-21
QUEUE 数据包到用户空间,本可以不用写 hook 的,用 iptables 就可以实现。
作者: Godbach 发布时间: 2010-09-21
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28