QEMU comment cingler le réseau hôte?


10

J'essaie d'envoyer une requête ping de l'invité à mon réseau hôte sans succès.

qemu-system-x86_64 -hda debian_squeeze_amd64_standard.qcow2 -netdev user,id=user.0 -device e1000,netdev=user.0

J'essaie de cingler une machine aléatoire:

$ ping 10.0.2.21
Destination Host Unreachable

Dans l'invité, je ne peux que cingler l'hôte 10.0.2.2 (serveur DHCP).


Attachez-le à un appareil de prise et attachez l'appareil de prise et votre appareil réseau au pont
Ulrich Dangel

Réponses:


11

QEMU prend en charge ICMP sur le backend SLIRP. Il est nécessaire d'autoriser ce que l'on appelle la socket ping (PF_INET, SOCK_DGRAM, PROT_ICMP) pour les utilisateurs du noyau.

C'est simple

sysctl -w net.ipv4.ping_group_range='0 2147483647'

Voir aussi http://lwn.net/Articles/422330/


6

À partir du wiki QEMU, QEMU ne prend pas en charge ICMP sur le backend SLIRP.

Réseautage utilisateur (SLIRP)

Il s'agit du backend réseau par défaut et généralement le plus simple à utiliser. Il ne nécessite pas de privilèges root / administrateur. Il présente les limitations suivantes:

  • il y a beaucoup de frais généraux donc les performances sont médiocres
  • Le trafic ICMP ne fonctionne pas (vous ne pouvez donc pas utiliser le ping au sein d'un invité)
  • l'invité n'est pas directement accessible depuis l'hôte ou le réseau externe

Pour le travail ICMP, vous aurez besoin d'utiliser TAP, VDE ou Socket.

Pour plus d'informations: QEMU Wiki - Networking and alo the Wikibooks QEMU networking section

Recommandé également: guide avancé pour gérer les VLAN


1
Il existe également un bon aperçu des options de mise en réseau: en.wikibooks.org/wiki/QEMU/Networking , ainsi qu'un guide avancé pour gérer les VLAN
slm

@slm Ty. ajouté vos liens en réponse;)
Victor Aurélio

4

La façon la plus simple et plus efficace que j'ai trouvé pour moi était ce .

En résumé, sur l'hôte:

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.

et pour l'invité, il suffit de l'exécuter avec:

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 

Il vous suffit de configurer un tapappareil appartenant à votre utilisateur, d'activer arp proxyinget de configurer un routeentre votre hôte et votre invité.

L'auteur (et moi-même) l'avons utilisé pour résoudre le problème du pontage vers un wlan0périphérique, qui n'est pas pris en charge par le noyau Linux. Mais cela fonctionne aussi bien avec une connexion filaire. Dans la arpconfiguration, passez simplement wlan0à eth0.

L'adresse IP de l'invité doit être définie par vous, car DHCPcela ne fonctionne pas.

Et vous pouvez déjà envoyer une requête ping à votre hôte.


0

Je viens d'y parvenir en combinant directement les deux réponses suivantes:

En les combinant, j'ai trouvé l '"IP hôte" avec ip routepuis j'ai fait:

ping 10.0.2.2

et ça a marché.

Testé avec cette configuration QEMU + Buildroot sur un hôte Ubuntu 19.04.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.