QEMU jak pingować sieć hosta?


10

Próbuję pingować z gościa do mojej sieci hosta bez powodzenia.

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

Próbuję pingować losową maszynę:

$ ping 10.0.2.21
Destination Host Unreachable

W przypadku gościa mogę tylko pingować host 10.0.2.2 (serwer DHCP).


Podłącz go do urządzenia z kranem i podłącz urządzenie z kranem i urządzenie sieciowe do mostu
Ulrich Dangel

Odpowiedzi:


11

QEMU obsługuje ICMP na backendie SLIRP. Konieczne jest zezwolenie na tzw. Gniazdo ping (PF_INET, SOCK_DGRAM, PROT_ICMP) dla użytkowników w jądrze.

To jest proste

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

Zobacz także http://lwn.net/Articles/422330/


6

Z wiki QEMU, QEMU nie obsługuje ICMP na backendie SLIRP.

Sieć użytkowników (SLIRP)

Jest to domyślny backend sieciowy i ogólnie jest najłatwiejszy w użyciu. Nie wymaga uprawnień administratora / administratora. Ma następujące ograniczenia:

  • koszty ogólne są duże, więc wydajność jest niska
  • Ruch ICMP nie działa (więc nie można używać polecenia ping w gościu)
  • gość nie jest bezpośrednio dostępny z hosta lub sieci zewnętrznej

Do pracy w ICMP potrzebujesz TAP, VDE lub Socket.

Więcej informacji: QEMU Wiki - Praca w sieci i dostęp do sekcji sieci QEMU Wikibooks

Zalecane również: zaawansowany przewodnik dotyczący obsługi sieci VLAN


1
Tutaj również znajduje się dobry przegląd opcji sieciowych: en.wikibooks.org/wiki/QEMU/Networking , a także zaawansowany przewodnik dotyczący obsługi sieci VLAN
slm

@slm Ty. dodał swoje linki w odpowiedzi;)
Victor Aurélio

4

Najprostszym i bardziej skutecznym sposobem, w jaki się dla mnie dowiedziałem, było to .

Podsumowując, na hoście:

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.

a dla gościa po prostu uruchom go z:

kvm -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb

lub

qemu -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb 

Musisz tylko skonfigurować tapurządzenie należące do użytkownika, włączyć arp proxyingi skonfigurować routemiędzy hostem a gościem.

Autor (i ja) wykorzystaliśmy to do rozwiązania problemu mostkowania z wlan0urządzeniem, które nie jest obsługiwane przez jądro Linuksa. Ale działa również z połączeniem przewodowym. W arpkonfiguracji po prostu zmień wlan0na eth0.

Adres IP gościa musi zostać ustawiony przez Ciebie, ponieważ DHCPnie działa.

Możesz już pingować hosta.


0

Właśnie to osiągnąłem, łącząc bezpośrednio dwie moje odpowiedzi:

Łącząc je, znalazłem „adres IP hosta”, ip routea następnie:

ping 10.0.2.2

i zadziałało.

Testowane z tą konfiguracją QEMU + Buildroot na hoście Ubuntu 19.04.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.