O QEMU suporta o ICMP no backend do SLIRP. É necessário permitir o soquete ping (PF_INET, SOCK_DGRAM, PROT_ICMP) para usuários no kernel.
É simples
sysctl -w net.ipv4.ping_group_range='0 2147483647'
Veja também link
Estou tentando fazer ping do convidado para minha rede host sem sucesso.
qemu-system-x86_64 -hda debian_squeeze_amd64_standard.qcow2 -netdev user,id=user.0 -device e1000,netdev=user.0
Eu tento pingar uma máquina aleatória:
$ ping 10.0.2.21
Destination Host Unreachable
No convidado, só consigo fazer ping no host 10.0.2.2 (servidor DHCP).
O QEMU suporta o ICMP no backend do SLIRP. É necessário permitir o soquete ping (PF_INET, SOCK_DGRAM, PROT_ICMP) para usuários no kernel.
É simples
sysctl -w net.ipv4.ping_group_range='0 2147483647'
Veja também link
Do wiki do QEMU, o QEMU não suporta o ICMP no backend do SLIRP.
User Networking (SLIRP)
This is the default networking backend and generally is the easiest to use. It does not require root / Administrator privileges. It has the following limitations:
- there is a lot of overhead so the performance is poor
- ICMP traffic does not work (so you cannot use ping within a guest)
- the guest is not directly accessible from the host or the external network
Para o trabalho ICMP, você precisará usar TAP, VDE ou Socket.
Mais informações: Wiki QEMU - Rede e também o Seção de rede do Wikilivros QEMU
Recomendamos também: guia avançado para lidar com VLANs
A maneira mais simples e eficaz que descobri para mim foi isso .
Em resumo, no 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 para o convidado, basta executá-lo com:
kvm -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb
ou
qemu -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb
Você só precisa configurar um dispositivo tap
, de propriedade do usuário, ativar arp proxying
e configurar route
entre seu host e convidado.
O autor (e eu) usou isso para lidar com o problema de criar uma ponte para um wlan0
device, que não é suportado pelo kernel do Linux.
Mas funciona também com uma conexão com fio. Na configuração arp
, basta alterar wlan0
para eth0
.
O endereço IP do convidado deve ser definido por você, pois DHCP
não funciona.
E você já pode fazer ping no seu host.
Tags networking qemu linux