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 (डीएचसीपी सर्वर) को पिंग करने में सक्षम हूं।


इसे टैप डिवाइस में संलग्न करें और टैप डिवाइस और अपने नेटवर्क डिवाइस को ब्रिज से अटैच करें
उलरिच डेंगल

जवाबों:


11

QEMU SLIRP बैकएंड पर ICMP का समर्थन करता है। कर्नेल में उपयोगकर्ताओं के लिए तथाकथित पिंग सॉकेट (PF_INET, SOCK_DGRAM, PROT_ICMP) को अनुमति देना आवश्यक है।

यह आसान है

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

Http://lwn.net/Articles/422330/ भी देखें


6

QEMU विकि से, QEMU SLIRP बैकेंड पर ICMP का समर्थन नहीं करता है।

उपयोगकर्ता नेटवर्किंग (SLIRP)

यह डिफ़ॉल्ट नेटवर्किंग बैकएंड है और आम तौर पर उपयोग करने में सबसे आसान है। इसके लिए रूट / प्रशासक के विशेषाधिकारों की आवश्यकता नहीं है। इसकी निम्नलिखित सीमाएँ हैं:

  • ओवरहेड बहुत है, इसलिए प्रदर्शन खराब है
  • ICMP ट्रैफ़िक काम नहीं करता है (इसलिए आप अतिथि के भीतर पिंग का उपयोग नहीं कर सकते हैं)
  • मेजबान या बाहरी नेटवर्क से अतिथि सीधे पहुंच योग्य नहीं है

ICMP काम के लिए आपको TAP, VDE या सॉकेट का उपयोग करना होगा।

अधिक जानकारी: QEMU विकी - नेटवर्किंग और विकीबूक QEMU नेटवर्किंग सेक्शन

अनुशंसित भी: VLANs से निपटने के लिए उन्नत गाइड


1
: वहाँ नेटवर्किंग विकल्पों पर एक अच्छा सिंहावलोकन यहाँ भी है en.wikibooks.org/wiki/QEMU/Networking एक, और भी VLANs से निपटने के लिए उन्नत गाइड
SLM

@ एसएलएम टाइ। जवाब में अपने लिंक जोड़े;)
विक्टर औरेलियो

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उपकरण के लिए ब्रिजिंग की समस्या से निपटने के लिए उपयोग किया , जो कि लिनक्स कर्नेल द्वारा समर्थित नहीं है। लेकिन यह वायर्ड कनेक्शन के साथ भी काम करता है। में arpविन्यास, बस बदलने wlan0के लिए eth0

अतिथि IP पता आपके द्वारा सेट किया जाना चाहिए, क्योंकि DHCPयह काम नहीं करता है।

और आप पहले से ही अपने मेजबान को पिंग कर सकते हैं।


0

मैंने सीधे निम्नलिखित दो उत्तरों को मिलाकर इसे प्राप्त किया है:

उन को मिलाकर, मुझे "होस्ट आईपी" मिला ip routeऔर फिर:

ping 10.0.2.2

और यह काम किया।

एक Ubuntu 19.04 होस्ट पर इस QEMU + बिल्डरोट सेटअप के साथ परीक्षण किया गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.