QEMU admite ICMP en el backend SLIRP. Es necesario permitir el llamado socket de ping (PF_INET, SOCK_DGRAM, PROT_ICMP) para los usuarios en el kernel.
es sencillo
sysctl -w net.ipv4.ping_group_range='0 2147483647'
Ver también http://lwn.net/Articles/422330/
Desde la wiki de QEMU, QEMU no es compatible con ICMP en el backend SLIRP.
Redes de usuarios (SLIRP)
Este es el backend de red predeterminado y generalmente es el más fácil de usar. No requiere privilegios de administrador/raíz. Tiene las siguientes limitaciones:
- hay muchos gastos generales, por lo que el rendimiento es deficiente
- El tráfico ICMP no funciona (por lo que no puede usar ping dentro de un invitado)
- no se puede acceder directamente al invitado desde el host o la red externa
Para el trabajo ICMP necesitará usar TAP, VDE o Socket.
Más información:QEMU Wiki - Networking y también la sección de redes de Wikibooks QEMU
Recomendado también:guía avanzada para tratar con VLAN
La forma más simple y efectiva que descubrí para mí fue esta.
En resumen, en el host:
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.
y para el invitado, simplemente ejecútelo con:
kvm -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb
o
qemu -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb
Solo tienes que configurar un tap
dispositivo, propiedad de su usuario, habilite arp proxying
y configurar un route
entre su anfitrión y su invitado.
El autor (y yo mismo) usamos eso para lidiar con el problema del puente a un wlan0
dispositivo, que no es compatible con el kernel de Linux. Pero también funciona con una conexión por cable. En el arp
configuración, simplemente cambie wlan0
a eth0
.
La dirección IP del invitado debe ser configurada por usted, como DHCP
no funciona.
Y ya puede hacer ping a su host.