免费注册 查看新帖 |

Chinaunix

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

端口镜像--一个神奇的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-13 18:33 |只看该作者 |倒序浏览
使用netfilter做端口镜像,比如:eth1镜像到eth0,要求将eth1收到的包以及发送的包都镜像到eth0

一:
    在NF_INET_PRE_ROUTING这个hook点挂钩子函数抓包,然后skb_clone一份包nskb,钩子函数中将nskb处理下,再调用dev_queue_xmit将nskb从eth0(修改nskb->dev)发出去。
     经验证,该做法完全OK,wireshark可以从eth0抓到eth1收到的包

二:
    在NF_INET_POST_ROUTING这个hook点挂钩子函数抓包,然后skb_clone一份包nskb,钩子函数中nskb通过ip_finish_output函数继续从eth0(修改nskb->dev)发出去。
    经验证,该做法完全OK,wireshark可以从eth0抓到eth1发送的包
注:ip_finish_output是通过kallsyms_lookup_name调出来用的

问题来了。当我分别使用上述两种做法进行抓包,可以做到:抓取eth1的发送包  或者  抓取eth1的收到包
当我将以上两个钩子函数放在一个ko里,挂两个钩子。我认为可以既抓到发送包,也抓到收包。
可是事实却是:两种包wireshark都抓不到了

当我将ko1(收)insmod,则wireshark能抓到包(收)。rmmod后,再insmod ko2(发),wireshark抓不到包了。要过一段时间(好几分钟)wireshark才能抓到包(发)
反之亦然

这中间不知道哪里出了问题。请大神指点指点

论坛徽章:
0
2 [报告]
发表于 2013-11-14 10:14 |只看该作者
顶起。坐等大神施以援手

论坛徽章:
0
3 [报告]
发表于 2013-11-15 10:51 |只看该作者
昨天分析了下IP层和链路层之间的skb包流程。没发现啥冲突的啊。有大神来瞅瞅不
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP