免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4973 | 回复: 8
打印 上一主题 下一主题

[内核模块] netfilter 修改数据包 客户端收不到服务端的回复 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-20 10:59 |只看该作者 |倒序浏览
本帖最后由 knight8267 于 2012-07-20 15:56 编辑

求助大家了.

我的问题描述如下:

在一台虚拟机上配置成网关,eth6: 77网段, eth7:177网段,在FORWARD点挂载我的hook函数,
同时在该主机上另外在安装一台虚拟机做客户端,发送数据包;
还有一台主机做服务器。

发数据时,我的钩子函数截获到后 修改数据包的内容并校验,然后NF_ACCEPT, 数据包可以发出去,并且服务器也收到并回复了数据包,我的钩子函数也能收到,tcpdump抓包时能看到数据包被接收和发送,但是客户端却没有收到,sniffer抓包抓不到;

如果不修改数据包,NF_ACCEPT, 客户端就能收到。

本人不清楚这是为何?求解, 谢谢大家参与讨论。

论坛徽章:
0
2 [报告]
发表于 2012-07-20 11:06 |只看该作者
我现在做的也是类似的   我是在NF_IP_PRE_ROUTING 上钩到符合我要求的数据包,更改目标地址 ,然后再在NF_IP_POST_ROUTING上钩到刚刚更改的包,将源地址改成本机。通过抓包发现包是发出去了,而且链路地址都是正确的。 目标机网卡也抓到了。但是应用层没有去接收我的这个数据包。换成ping包的话 就没有给我回包。希望大虾们讨论一下我哪里没做好

论坛徽章:
0
3 [报告]
发表于 2012-07-23 08:07 |只看该作者
协议头部分都没有改变,只是数据长度改变了,重新校验了一下,
序列号没有变,是否有关?

论坛徽章:
0
4 [报告]
发表于 2012-07-23 08:11 |只看该作者
我想在内核中做数据加密处理,因为加密后会变长,所以先只是简单的修改包的数据长度进行测试验证是否能正常交互。大家有这方面的经验吗,请给在下一个提示。谢谢

论坛徽章:
0
5 [报告]
发表于 2012-07-23 10:02 |只看该作者
用__nf_nat_mangle_tcp_packet 函数去修改看看。

论坛徽章:
0
6 [报告]
发表于 2012-07-24 14:47 |只看该作者
回复 5# hmsghnh

多谢。使用nf_nat_mangle_tcp_packet 函数做修改后
问题终于解决了。

在网上找到个例子修改的,blog的日志名称叫:基于netfilter的tcp网络包的过滤与修改(修正版)http://linux.net527.cn/Linuxwendang/xitongguanliyuan/38174.html


   

论坛徽章:
0
7 [报告]
发表于 2012-09-12 02:18 |只看该作者
求教,我现在用一台Linux主机做网关,比如我想把所有网页中包含china这个关键字的字符都修改成zhongguo,在我的网关下上网,所有的网页中的china都显示成zhongguo。求教有没有办法实现。谁能给点思路。

论坛徽章:
0
8 [报告]
发表于 2012-10-19 23:05 |只看该作者
回复 7# nw207


   利用nfq_queue, 把数据包拿到应用层来,修改网页中的内容,重新校验一下, 在交给内核, 。

内核跟应用层采用netlink方式, 需要安装netlink的库和libnetfilterqueue库, 就可以使用API接口了。

论坛徽章:
0
9 [报告]
发表于 2013-07-09 16:26 |只看该作者
大侠,你的这种情况是怎么解决的啊?求助啊:wink: 回复 2# 会当凌绝顶聪


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP