忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 3603 | 回复: 4

[内核入门] 【socket+tcpdump+netfilter】关于本机间socket包可不可以抓包问题 [复制链接]

论坛徽章:
0
发表于 2015-07-05 20:06 |显示全部楼层
1、之前查资料的时候说是本机间的socket TCP通信是抓不到包的,但是最近在网上用了一个简单的tcp的socket通信程序绑定本机的ip,用tcpdump抓包发现可以很清楚的看到TCP3次握手建立以及数据传输的过程,就是抓到包了。然后用netfilter写了一段分析的程序发现在PREROUNTING 、LOCAL_IN、 LOCAL_OUT、 POSTROUNTING点都有抓到建立的socket间传送的包。所以本机间的socket之间的数据包是可以抓到的是吗?
2、后来我在netfilter的程序中在LOCAL_OUT点将抓到的包的目的端口和源端口交换,重新计算校验码发包,tcp的连接应该是不能建立的才对,但是socket程序运行正常,服务器和客户端的通信也正常,netfilter的抓包分析显示目的端口和源端口的确是发生了交换,一系列的包的目的地址和源地址都变成固定的,这样怎么能够正常进行通信呢?想不明白,请教一下大家。
3、想问一下最近看到的netfilter构造包的程序要么是在源数据包的基础上直接改(我对于socket写的netfilter程序就是直接改的),要么是复制源数据包对新包进行修改,原包丢弃,想问一下大家可以两个都一起发送吗?就是原包也发送,新构造出来的包也发送。netfilter可以这样做么?
谢谢大家的帮助,跪谢ORZ~~~

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
发表于 2015-07-06 12:37 |显示全部楼层
1. lo->lo的报文可以抓,不论是通过af_packet接口还是NF接口。
2. 现在才明白了你上一个帖子里的上下文。
发个抓包的截图,注意抓包点(分为rx和tx两个点)跟你的改包模块之间的位置关系。

论坛徽章:
0
发表于 2015-07-11 23:41 |显示全部楼层
跪谢亲的回复昂~~~那个抓包程序被我删了,我觉得可能我写的代码有问题,所以我打算先看看先。
还有那个lo->lo的抓包,我用的不是localhost的ip:127.0.0.1,用的是本机ifconfig出来的ip地址进行试验的,不是本地回环的这样也能抓到包?或者什么情况下socket程序抓不到包呢? ,再次跪谢大大ORZ~
回复 2# nswcfd


   

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
发表于 2015-07-13 11:15 |显示全部楼层
使用本地ip效果上跟127.0.01是一样的,都是路由到lo。
tcpdump抓包点(egress方向)发生在dev_queue_xmit之后。
抓不到包的原因,要么被pcap_filter过滤掉了,要么由于队列满导致了丢包(低速率下不应该存在)。

PS,libpcap有个“特性”,lo-egress的报文不回调callback。
它的理由是,既然lo-egress的报文马上就要被lo-ingress逻辑接收,仅让后面那个lo-ingress点来回调,
这样可以避免一个报文被tcpdump显示两次,给用户造成困惑。

论坛徽章:
0
发表于 2018-06-25 15:03 |显示全部楼层
萌新前来学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP