QEMU como pingar rede host?

7

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).

    
por MaikoID 11.06.2013 / 00:05

3 respostas

7

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

    
por 11.09.2014 / 12:36
4

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

    
por 11.06.2013 / 02:55
3

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.

    
por 11.06.2013 / 13:08