QEMU nasıl ana ağ ping?


10

Konuktan host ağıma ping göndermeye çalışıyorum.

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

Rastgele bir makineye ping atmaya çalışıyorum:

$ ping 10.0.2.21
Destination Host Unreachable

Konukta sadece ana bilgisayara 10.0.2.2'ye (DHCP sunucusu) ping atıyorum.


Bir musluk cihazına takın ve musluk cihazını ve ağ cihazınızı köprüye
takın

Yanıtlar:


11

QEMU, SLIRP arka ucunda ICMP'yi destekler. Çekirdekteki kullanıcılar için ping soketine (PF_INET, SOCK_DGRAM, PROT_ICMP) izin vermek gerekir.

Basit

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

Ayrıca bkz http://lwn.net/Articles/422330/


6

QEMU wiki'den QEMU, SLIRP arka ucunda ICMP'yi desteklemez.

Kullanıcı Ağı (SLIRP)

Bu varsayılan ağ arka ucudur ve genellikle kullanımı en kolay olanıdır. Kök / Yönetici ayrıcalıkları gerektirmez. Aşağıdaki sınırlamalara sahiptir:

  • çok fazla yük var, bu yüzden performans düşük
  • ICMP trafiği çalışmıyor (bu nedenle misafir içinde ping kullanamazsınız)
  • misafire ana bilgisayardan veya harici ağdan doğrudan erişilemez

ICMP çalışması için TAP, VDE veya Soket kullanmanız gerekir.

Daha fazla bilgi: QEMU Wiki - Ağ oluşturma ve Wikibooks QEMU ağ oluşturma bölümünde

Ayrıca önerilir: VLAN'larla başa çıkmak için gelişmiş kılavuz


1
Buradaki ağ seçenekleri hakkında da iyi bir genel bakış var: en.wikibooks.org/wiki/QEMU/Networking ve ayrıca VLAN'larla başa çıkmak için gelişmiş bir rehber
slm

@slm Ty.
Cevaplarınızı

4

Benim için öğrendim en basit ve daha etkili bir yol olduğunu bu .

Özetle, ana bilgisayarda:

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.

ve konuk için sadece şununla çalıştırın:

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

veya

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

tapKullanıcının sahip olduğu bir cihazı yapılandırmanız , toplantı sahibi ve misafiriniz arasında bir cihazı etkinleştirmeniz arp proxyingve yapılandırmanız routeyeterlidir.

Yazar (ve ben) bunu wlan0, Linux çekirdeği tarafından desteklenmeyen bir cihaza köprü oluşturma sorunu ile başa çıkmak için kullandı . Ancak kablolu bir bağlantıyla da çalışır. Gelen arpyapılandırması, sadece değiştirmek wlan0için eth0.

Misafir IP adresi, DHCPçalışmadığınız için sizin tarafınızdan ayarlanmalıdır .

Ve zaten sunucunuza ping atabilirsiniz.


0

Bunu şu iki cevabımı doğrudan birleştirerek başardım:

Bunları birleştirerek, "host IP" yi buldum ip routeve yaptım:

ping 10.0.2.2

ve işe yaradı.

Ubuntu 19.04 ana bilgisayarında bu QEMU + Buildroot kurulumuyla test edildi .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.