QEMU如何ping主机网络?


10

我试图从访客ping我的主机网络没有成功。

qemu-system-x86_64 -hda debian_squeeze_amd64_standard.qcow2 -netdev user,id=user.0 -device e1000,netdev=user.0

我尝试ping随机机器:

$ ping 10.0.2.21
Destination Host Unreachable

在来宾中,我只能ping通主机10.0.2.2(DHCP服务器)。


将其连接到Tap设备,然后将Tap设备和您的网络设备连接到网桥
Ulrich Dangel 2013年

Answers:


11

QEMU在SLIRP后端上支持ICMP。内核中的用户必须允许使用所谓的ping套接字(PF_INET,SOCK_DGRAM,PROT_ICMP)。

很简单

sysctl -w net.ipv4.ping_group_range='0 2147483647'

另请参阅http://lwn.net/Articles/422330/


6

从QEMU Wiki,QEMU在SLIRP后端不支持ICMP。

用户网络(SLIRP)

这是默认的网络后端,通常最容易使用。它不需要root /管理员权限。它具有以下限制:

  • 开销很大,因此性能很差
  • ICMP通信不起作用(因此您无法在访客中使用ping)
  • 无法从主机或外部网络直接访问来宾

对于ICMP工作,您需要使用TAP,VDE或Socket。

详细信息: QEMU Wiki-网络Wikibooks QEMU网络部分

还推荐:处理VLAN的高级指南


1
这里对网络选项也有很好的概述:en.wikibooks.org/wiki/QEMU/Networking,以及有关VLAN
slm

@slm Ty。在答案中添加了您的链接;)
VictorAurélio2013年

4

我为我找到的最简单,更有效的方法就是这样

总之,在主机上:

tunctl -u <username>

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/wlan0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp

ip link set tap0 up
route add -host 192.168.0.20 dev tap0   <-- to be changed by you.

对于来宾,只需运行以下命令即可:

kvm -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb

要么

qemu -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb 

您只需要配置tap用户拥有的设备,在主机和来宾之间启用arp proxying并配置a route

作者(和我本人)用它来处理桥接到wlan0设备的问题,Linux内核不支持该设备。但它与有线连接也能正常工作。在arp配置中,只需更改wlan0eth0

来宾IP地址必须由您设置,这DHCP是行不通的。

您已经可以ping您的主机了。


0

我刚刚通过直接结合以下两个答案来实现这一点:

结合这些,我找到了“主机IP”,ip route然后执行了以下操作:

ping 10.0.2.2

而且有效。

在Ubuntu 19.04主机上对此QEMU + Buildroot设置进行了测试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.