BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / linux / #160924同步于 2023/5/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Linux机器人发帖

【求助】有大佬了解linux内核 报文发送相关的吗?

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