返回信息流想写一个内核模块,构造ip报文发送给目的主机。可是现在在发送端主机用抓包软件可以抓到数据包,接收端缺收不到数据。不知道什么原因
这是一条镜像帖。来源:北邮人论坛 / linux / #160924同步于 2023/5/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Linux机器人发帖
【求助】有大佬了解linux内核 报文发送相关的吗?
a1109196111
2023/5/16镜像同步14 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
现在发送端抓到的包,目的mac地址和目的ip地址都正确。但是接收端却抓不到这个包 ,很是奇怪。源主机ping目的主机时,目的主机可以抓到icmp包,请教一下hxd有没有什么见解
【 在 a770794266 的大作中提到: 】
: 抓包软件一般只在网络层和链路层接口处抓包,检查一下抓到的报文的Mac头部看是否正确。当Mac头正确且链路层是通的,目的主机就能抓到这个报文
源主机跟目的主机,用了一个二层交换机连接
【 在 a1109196111 的大作中提到: 】
: 现在发送端抓到的包,目的mac地址和目的ip地址都正确。但是接收端却抓不到这个包 ,很是奇怪。源主机ping目的主机时,目的主机可以抓到icmp包,请教一下hxd有没有什么见解
楼主是icmp通,自己构造的ip报文不通?也可能是报文有问题目的主机丢弃了。
同一个二层的话,两端机器先ip nei检查一下是否学到了对端网卡的mac地址,这个应该是好的。
不知道你构造的是什么协议,可以两端机器下载iperf3,验证一下tcp,udp流量是否正常,排除主机防火墙,设备组网等问题。
斗胆猜测一波,你自己构造的IP报文,头部的dmac写的是不是目的主机,而非那个二层交换机?
一般流程是目的IP写目的主机,目的MAC写下一跳设备的MAC,包每转发一次,目的MAC更换一次,目的IP不变,最终到达对端
你那个二层交换机也可以抓包的,从入接口和出接口分别抓包,看看包有没有成功进出,不过我看应该没有成功出。
不知道你是什么环境,可以本地虚机+华为ensp/华三hcl(推荐)模拟器来组网
拙见哈,tcpdump抓包在链路层之上(也就是mac校验之后),通过注册虚协议回调实现的抓包。理论上报文到达目的端、通过了链路层校验,就能被tcpdump抓到。且对网卡使用tcpdump时,默认会开启该网卡的混杂模式。
个人认为更可能的是你所构造的报文完整性(你发出的报文和icmp的区别),比如以太网协议字段、报文载荷长度字段等是不是正确设置。
其次是报文有没有成功到达对端,是否在链路上被丢弃,可以在交换机内部检查这个报文有没有收到和从正确端口转发出去。但你提到icmp可以正常转发,所以源、目主机上的arp表、交换机的mac学习能力应该问题不大...