You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QEMU运行Raspbian Buster Lite时Ping主机出现DUP响应问题咨询

调试Qemu Raspbian虚拟机Ping重复包问题

首先我注意到你的Qemu启动命令里重复使用了-net user参数:

qemu-system-arm -kernel kernel-qemu-4.19.50-buster -cpu arm1176 -m 256 -M versatilepb -dtb versatile-pb.dtb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -drive "file=2020-02-13-raspbian-buster-lite.img,index=0,media=disk,format=raw" -net user,hostfwd=tcp::5022-:22 -net nic -net user,smb=/dev/shm/

这种配置会创建两个独立的用户网络栈,这大概率是导致ping包重复(DUP!)的核心原因——数据包会从两个虚拟网络路径发送,主机回复后也会通过两个路径返回虚拟机,从而产生重复包。

下面是具体的调试和修复步骤:

1. 先修复Qemu网络配置

首先合并重复的-net user参数,把端口转发和SMB共享放到同一个用户网络配置里,修改后的命令应该是:

qemu-system-arm -kernel kernel-qemu-4.19.50-buster -cpu arm1176 -m 256 -M versatilepb -dtb versatile-pb.dtb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -drive "file=2020-02-13-raspbian-buster-lite.img,index=0,media=disk,format=raw" -net nic -net user,hostfwd=tcp::5022-:22,smb=/dev/shm/

注意顺序:先指定-net nic创建虚拟网卡,再用-net user绑定用户网络并配置所有参数,避免重复创建网络栈。重启虚拟机后测试ping是否还出现重复包。

2. 检查虚拟机内的网络接口

在虚拟机内执行以下命令,确认是否存在多个以太网接口:

ip addr show

如果看到eth0和eth1两个接口,说明之前的重复-net user确实创建了多个虚拟网卡,这会导致路由和数据包转发的冲突。修复配置后应该只剩一个eth0。

3. 抓包分析数据包流向

如果修复配置后问题仍存在,用抓包工具确认重复包的来源:

  • 虚拟机内抓包:执行tcpdump -i eth0 icmp,观察ping请求的发送次数和回复包的数量,看是否每个请求对应多个回复。
  • 主机上抓包:在主机终端执行tcpdump -i any host 10.0.0.138 and icmp,查看主机收到的ping请求数量,以及主机发送的回复数量,确认是否有重复的请求或回复被转发。

4. 检查ARP缓存表

在虚拟机内查看ARP缓存,确认目标网关的MAC地址是否唯一:

arp -a

如果同一个IP(10.0.0.138)对应多个MAC地址,可能是主机侧有多个网络接口响应了ARP请求,导致虚拟机收到多个回复。此时可以在主机上临时禁用多余的网络接口,测试是否解决问题。

5. 验证主机路由与防火墙

  • 检查主机的路由表,确认是否有多个路由条目指向虚拟机所在的子网:
    # Linux主机
    ip route show
    # Windows主机
    route print
    
  • 检查主机防火墙规则,确认是否有重复的转发规则导致数据包被多次处理:
    # Linux主机
    sudo iptables -L -n -v
    

6. 升级Qemu版本

部分旧版本的Qemu在多用户网络配置下存在数据包重复的bug,尝试升级到最新稳定版,再测试问题是否消失。


内容的提问来源于stack exchange,提问作者AutomatedOwl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 15:42:29