QEMU supporta ICMP sul backend SLIRP. È necessario consentire il cosiddetto socket ping (PF_INET, SOCK_DGRAM, PROT_ICMP) per gli utenti nel kernel.
È semplice
sysctl -w net.ipv4.ping_group_range='0 2147483647'
Vedi anche http://lwn.net/Articles/422330/
Dal wiki QEMU, QEMU non supporta ICMP sul backend SLIRP.
Reti utenti (SLIRP)
Questo è il backend di rete predefinito e generalmente è il più facile da usare. Non richiede privilegi di root/amministratore. Presenta le seguenti limitazioni:
- c'è molto sovraccarico quindi le prestazioni sono scarse
- Il traffico ICMP non funziona (quindi non puoi utilizzare il ping all'interno di un ospite)
- l'ospite non è direttamente accessibile dall'host o dalla rete esterna
Per il lavoro ICMP dovrai utilizzare TAP, VDE o Socket.
Ulteriori informazioni:QEMU Wiki - Networking e anche la sezione di networking QEMU di Wikibooks
Consigliato anche:guida avanzata per gestire le VLAN
Il modo più semplice ed efficace che ho scoperto per me è stato questo.
In sintesi, sull'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.
e per l'ospite, basta eseguirlo 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
Devi solo configurare un tap
dispositivo, di proprietà del tuo utente, abilita arp proxying
e configura un route
tra il tuo host e ospite.
L'autore (e io stesso) l'abbiamo usato per affrontare il problema del collegamento a un wlan0
dispositivo, che non è supportato dal kernel Linux. Ma funziona anche con una connessione cablata. Nel arp
configurazione, basta cambiare wlan0
a eth0
.
L'indirizzo IP ospite deve essere impostato da te, come DHCP
non funziona.
E puoi già eseguire il ping del tuo host.