- 论坛徽章:
- 0
|
原帖由 meijusan123 于 2009-9-8 10:42 发表
我的需求可能没你这么复杂,我就直接在ip层修改了相关的信息,由于还需要让包发出去,必须还要路由一次重新arp获得相关mac信息。别的也没该相关的。暂时也没考虑到nat相关的。
不知道,我能不能给你帮组!
其实我和你现在的修改IP包方式一样,也是在prerouting链上获取目标包后,修改其目标地址的,然后在postrouting 链修改源地址的。然后重新计算较验和后,发送出去的,包的确是修改成功了。也发出去了,我可以在目标机上,用tcpdump检测到包的存在。
但是我发现了另一个问题,如下:
PCa(eth1上挂有adhoc协议) ------> PCb(eth1:adhoc) -------> PCc(eth1:adhoc) -------> PCd(eth1:adhoc)
PCa ~ PCd 均通过无线连接 它们之间通过无线路由协议完成,假设PCa访问PCd必须走adhoc路由,且能正常ping通.
PCa还有另一块有线网卡,我现在的工作是将 eth0(即有线网卡)上的数据包通过修改dst地址发送到目标机PCd,结果发送不成功。PCd上用tcpdump检测不到任何来自PCa的信息。
用相同的方式,我把目标地址dst修改为PCb,却可以正常接收到。此时也检测到arp请求。
发送包的ttl也是正常的,不可能小于0(我已经检测过了)。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
我查看过路由表,路由表里面的确有目标机的路由,并且可以ping通目标机。
我怀疑我修改过的包根本就没经过路由。不知道这是什么原因,请高手们给予指点。谢谢!
如果有相关问题我们可以一起讨论。我QQ:717063711 EMAIL:shiner.chen@qq.com |
|