Answers:
QEMU在SLIRP后端上支持ICMP。内核中的用户必须允许使用所谓的ping套接字(PF_INET,SOCK_DGRAM,PROT_ICMP)。
很简单
sysctl -w net.ipv4.ping_group_range='0 2147483647'
从QEMU Wiki,QEMU在SLIRP后端不支持ICMP。
用户网络(SLIRP)
这是默认的网络后端,通常最容易使用。它不需要root /管理员权限。它具有以下限制:
- 开销很大,因此性能很差
- ICMP通信不起作用(因此您无法在访客中使用ping)
- 无法从主机或外部网络直接访问来宾
对于ICMP工作,您需要使用TAP,VDE或Socket。
详细信息: QEMU Wiki-网络和Wikibooks QEMU网络部分
还推荐:处理VLAN的高级指南
我为我找到的最简单,更有效的方法就是这样。
总之,在主机上:
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
配置中,只需更改wlan0
为eth0
。
来宾IP地址必须由您设置,这DHCP
是行不通的。
您已经可以ping您的主机了。
我刚刚通过直接结合以下两个答案来实现这一点:
wget
,使其更易于使用,如以下网址所示:https : //serverfault.com/questions/769874/how-to-forward-a-port-from客串到qemu-kvm / 951835#951835ping
特别是要比wget
其他人提到的TCP IP工具更难工作,但我也按如下所示进行管理:如何从QEMU来宾ping到外部URL?结合这些,我找到了“主机IP”,ip route
然后执行了以下操作:
ping 10.0.2.2
而且有效。
在Ubuntu 19.04主机上对此QEMU + Buildroot设置进行了测试。