QEMU як пінг-хост мережі?


10

Я намагаюся пінг від гостя до своєї хост-мережі без успіху.

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

Я намагаюся пінг на випадковій машині:

$ ping 10.0.2.21
Destination Host Unreachable

В гостях я можу лише просканувати хост 10.0.2.2 (сервер DHCP).


Приєднайте його до крана та приєднайте пристрій крана та мережевий пристрій до мосту
Ulrich Dangel

Відповіді:


11

QEMU підтримує ICMP на задньому плані SLIRP. Необхідно дозволити так званому ping socket (PF_INET, SOCK_DGRAM, PROT_ICMP) для користувачів у ядрі.

Це просто

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

Дивіться також http://lwn.net/Articles/422330/


6

З вікі QEMU, QEMU не підтримує ICMP на бекенді SLIRP.

Користувальницькі мережі (SLIRP)

Це мережний сервер за замовчуванням і, як правило, найпростіший у використанні. Для цього не потрібні права root / Administrator. Він має такі обмеження:

  • накладних витрат багато, тому продуктивність погана
  • ICMP-трафік не працює (тому ви не можете використовувати ping у гостях)
  • гість не доступний безпосередньо з хоста або зовнішньої мережі

Для роботи в ICMP вам потрібно використовувати TAP, VDE або Socket.

Додаткові відомості: QEMU Wiki - Мережа та інші розділи мереж Wikibooks QEMU

Також рекомендується: розширений посібник для роботи з VLAN


1
Тут також є хороший огляд варіантів мереж: en.wikibooks.org/wiki/QEMU/Networking , а також розширений посібник для роботи з VLAN
slm

@slm Ty. додав ваші посилання у відповідь;)
Віктор Ауреліо

4

Найпростіший та ефективніший спосіб, який я дізнався для мене, це такий .

Підсумовуючи інформацію про хоста:

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.

а для гостя просто запустіть його:

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

або

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

Вам просто потрібно налаштувати tapпристрій, який належить вашому користувачеві, увімкнути arp proxyingта налаштувати routeміж хостом та гостем.

Автор (і я) використовували це для вирішення проблеми мосту на wlan0пристрій, який не підтримується ядром Linux. Але це добре працює і з дротовим з'єднанням. У arpконфігурації просто змініть wlan0на eth0.

IP-адресу гостя має бути встановлено вами, оскільки DHCPце не працює.

І ви вже можете пінг свого господаря.


0

Я щойно досяг цього, прямо поєднуючи два мої відповіді:

Поєднуючи це, я знайшов "хост-IP" з, ip routeа потім зробив:

ping 10.0.2.2

і це спрацювало.

Тестовано за допомогою цього налаштування QEMU + Buildroot на хості Ubuntu 19.04.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.