प्रारंभिक
यह मेरे लिए Ubuntu 12.04 के लिए काम करता है। आपको अपने कंप्यूटर के फ़ायरवॉल को निष्क्रिय करना चाहिए क्योंकि आप इसका परीक्षण करते हैं ताकि यह हस्तक्षेप न करे।
मूल रूप से स्थापित के रूप में / etc / default / qemu-kvm फ़ाइल होनी चाहिए।
आपको पुल-बर्तन qemu-kvm और libvirt-bin स्थापित करने की आवश्यकता होगी। वर्चुअल मशीन का उपयोग करने वाले किसी भी उपयोगकर्ता को libvirtd समूह में जोड़ा जाना चाहिए।
अब CAP_NET_ADMIN क्षमता जोड़ने की कोई आवश्यकता प्रतीत नहीं होती है।
नेटवर्क सेटअप
डिफ़ॉल्ट नेटवर्क मोड उपयोगकर्ता मोड है, जिसे SLIRP भी कहा जाता है। यह एक पूर्वनिर्धारित virbr0 पुल का उपयोग करता है जो NAT को अतिथि कंप्यूटर पर रूट किया जाता है। NAT रूटिंग कर्नेल के ip_forwarding फीचर और iptables का उपयोग करता है । ब्रिज मोड अतिथि में एक वर्चुअल ब्रिज का उपयोग करता है जिससे (अनावश्यक) ईथरनेट इंटरफ़ेस कनेक्ट होता है, और जिस पर होस्ट और गेस्ट दोनों के पास अपना नेटवर्क इंटरफेस होता है।
निम्नलिखित चित्र मतभेदों को स्पष्ट कर सकते हैं:
आप यह देख सकते हैं कि उपयोगकर्ता का डिफ़ॉल्ट नेटवर्क किस प्रकार परिभाषित किया गया है:
virsh net-dumpxml default
मैं निम्नलिखित तरीकों के साथ ब्रिजित मोड सेट कर सकता हूं:
में / आदि / नेटवर्क / इंटरफेस (पोस्ट के ब्रिजिंग भाग से आप अपने प्रश्न में उल्लेख करते हैं):
ऑटो लो
iface लो इनसेट लूपबैक
# आटो एथ ०
#iface eth0 inet dhcp
ऑटो eth0
iface eth0 इनसेट मैनुअल
ऑटो br0
iface br0 inet dhcp
Bridge_ports eth0
Bridge_stp बंद करें
ब्रिज_फड 0
पुल_मक्वाइट ०
रिबूट; और सुनिश्चित करें कि वायरलेस नेटवर्किंग सक्रिय नहीं है। के साथ डिफ़ॉल्ट आईपी मार्ग की जाँच करें ip route
। यह br0 इंटरफ़ेस का उपयोग करना चाहिए।
NB यदि यह परिवर्तन होने पर आपके ईथरनेट को हुक नहीं किया जाता है, तो आपको अपने ईथरनेट केबल को प्लग-इन करना होगा और एक वाहक या बूट प्राप्त करना होगा और बूट दो मिनट के लिए लटका रहेगा और आपके पास नेटवर्क क्षमता नहीं होगी , क्योंकि eth0 इंटरफ़ेस, द्वारा इस फ़ाइल में होने से, बूट को सामान्य रूप से आगे बढ़ने से पहले आना चाहिए।
एनबी आम तौर पर आप कई मैक पते का उपयोग करने में असमर्थता के कारण eth0 के बजाय एक वायरलेस नेटवर्क का उपयोग नहीं कर सकते हैं (मुझे लगता है कि उन्हें पुल के लिए एक दूसरे की आवश्यकता है)।
एक विकल्प के रूप में आप ईथरनेट के उपयोग को अक्षम कर सकते हैं और यह सुनिश्चित कर सकते हैं कि इसमें एक आईपी पता नहीं है, और इसके साथ कोई डिफ़ॉल्ट मार्ग सेट नहीं है ip route
। फिर:
sudo ifconfig eth0 0.0.0.0 up
sudo brctl addbr br0
sudo brctl addif br0 eth0
sudo ifconfig br0 up
sudo dhclient br0 &
आप यहां एक स्थिर आईपी पते की आपूर्ति भी कर सकते हैं, साथ ही साथ डिफ़ॉल्ट मार्ग और डीएनएस पते को परिभाषित कर सकते हैं। इस उदाहरण के लिए यह dhclient
करता है।
यहाँ मेरा रूट टेबल है:
$ आईपी मार्ग सूची
192.168.1.1 देव br0 मीट्रिक 100 के माध्यम से डिफ़ॉल्ट
169.254.0.0/16 देव br0 गुंजाइश लिंक मीट्रिक 1000
192.168.1.0/24 देव br0 प्रोटो कर्नेल स्कोप लिंक src 192.168.1.45
192.168.122.0/24 देव कुंवारी प्रोटो कर्नेल स्कोप लिंक src 192.168.122.1
Kvm का उपयोग करना
फिर मैं एक ब्रिड्ड केवीएम मशीन को बूट कर सकता हूं:
$ sudo kvm -name Quantal -m 1024 -hda foo.qcow2 --soundhw ac97 -device virtio-net,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0
-netdev tap
पैरामीटर बनाता है एक आवश्यकता sudo। VM के शुरू होते ही qemu-kvm निम्नलिखित कमांड चलाता है:
ifconfig vnet0 0.0.0.0 अप
brctl addif brctl addif br0 vnet0
यह / etc / qemu-ifup द्वारा किया जाता है
VM का vnet0 इंटरफ़ेस br0 ब्रिज में जोड़ा गया है क्योंकि ऊपर डिफ़ॉल्ट मार्ग उस ब्रिज इंटरफ़ेस का उपयोग करता है। अगर यह वहाँ नहीं थे टेप इंटरफ़ेस के बजाय virbr0 इंटरफ़ेस में जोड़ा जाएगा। चूंकि यह इंटरनेट से जुड़ा नहीं है, इसलिए NAT का उपयोग मेरे प्रयोगों में मेजबान और इंटरनेट से अतिथि को जोड़ने के लिए किया जाएगा। आप vnet0 को किसी विशेष पुल / etc / default / qemu-kvm में निर्देशित कर सकते हैं। नीचे दिए गए पुण्य-प्रबंधक का उपयोग करके आप स्पष्ट रूप से निर्देशित कर सकते हैं कि किस पुल से जुड़ना है।
-netdev tap,id=tunnel,ifname=vnet0
क्यूमू-केवीएम, और पैरामीटर द्वारा जारी किए गए उपरोक्त आदेशों के कारण , vm वर्चुअल मशीन vnet0 सुरंग से जुड़ी है, और सुरंग br0 पुल से जुड़ी है।
मैं अब सीधे अपने नेटवर्क पर दूसरे कंप्यूटर से इस अतिथि वीएम में ssh कर सकता हूं।
मेरा होस्ट ifconfig
(vm0 इंटरफ़ेस पर ध्यान दें जो VM चालू होने पर मेरे नेटवर्क पर दिखाई देता है):
$ ifconfig
br0 लिंक एनकैप: ईथरनेट HWaddr 00: 1e: 33: 88: 07: e5
inet addr: 192.168.1.45 Bcast: 255.255.255.255 मास्क: 255.255.255.0
inet6 addr: fe80 :: 21e: 33ff: fe88: 7e5 / 64 स्कोप: लिंक
UP BROADCAST RUNNING MULTICAST MTU: 1500 मीट्रिक: 1
आरएक्स पैकेट: 6526 त्रुटियां: 0 गिरा: 0 ओवररन: 0 फ्रेम: 0
TX पैकेट: 7543 त्रुटियां: 0 गिरा: 0 ओवररन: 0 वाहक: 0
टकराव: 0 txqueuelen: 0
आरएक्स बाइट्स: 2712940 (2.7 एमबी) TX बाइट्स: 1071835 (1.0 एमबी)
eth0 लिंक एनकैप: ईथरनेट HWaddr 00: 1e: 33: 88: 07: e5
UP BROADCAST RUNNING MULTICAST MTU: 1500 मीट्रिक: 1
आरएक्स पैकेट: 7181 त्रुटियां: 0 गिरा: 0 ओवररन: 0 फ्रेम: 0
TX पैकेट: 7740 त्रुटियां: 0 गिरा: 0 ओवररन: 0 वाहक: 0
टकराव: 0 txqueuelen: 1000
आरएक्स बाइट्स: 2974585 (2.9 एमबी) TX बाइट्स: 1096580 (1.0 एमबी)
इंटरप्ट: 43 बेस एड्रेस: 0x6000
लो लिंक एनकैप: लोकल लूपबैक
inet addr: 127.0.0.1 मास्क: 255.0.0.0
inet6 addr: :: 1/128 स्कोप: होस्ट
UP LOOPBACK RUNNING MTU: 16436 मीट्रिक: 1
आरएक्स पैकेट: 10 त्रुटियां: 0 गिरा: 0 ओवररन: 0 फ्रेम: 0
TX पैकेट: 10 त्रुटियां: 0 गिरा: 0 ओवररन: 0 वाहक: 0
टकराव: 0 txqueuelen: 0
आरएक्स बाइट्स: 664 (664.0 बी) TX बाइट्स: 664 (664.0 बी)
vnet0 लिंक एनकैप: ईथरनेट HWaddr ca: 0c: 73: c3: bc: 45
inet6 addr: fe80 :: c80c: 73ff: fec3: bc45 / 64 स्कोप: लिंक
UP BROADCAST RUNNING MULTICAST MTU: 1500 मीट्रिक: 1
आरएक्स पैकेट: 226 त्रुटियां: 0 गिरा: 0 ओवररन: 0 फ्रेम: 0
TX पैकेट: 429 त्रुटियां: 0 गिरा: 0 ओवररन: 0 वाहक: 0
टकराव: 0 txqueuelen: 500
RX बाइट्स: 26919 (26.9 KB) TX बाइट्स: 58929 (58.9 KB)
virbr0 लिंक एनकैप: ईथरनेट HWaddr d6: 18: 22: db: ff: 93
inet addr: 192.168.122.1 Bcast: 192.168.122.255 मास्क: 255.255.255.0
UP BROADCAST MULTICAST MTU: 1500 मीट्रिक: 1
आरएक्स पैकेट: 0 त्रुटियां: 0 गिरा: 0 ओवररन: 0 फ्रेम: 0
TX पैकेट: 0 त्रुटियां: 0 गिरा: 0 ओवररन: 0 वाहक: 0
टकराव: 0 txqueuelen: 0
RX बाइट्स: 0 (0.0 B) TX बाइट्स: 0 (0.0 B)
VM चलाते समय मेरा ब्रिज कॉन्फ़िगरेशन:
$ Brctl शो
पुल का नाम पुल आईडी एसटीपी सक्षम इंटरफेस
br0 8000.001e338807e5 कोई eth0
vnet0
virbr0 8000.000000000000 हाँ
ध्यान दें कि वर्चुअल मशीन के vnet0 इंटरफ़ेस और eth0 इंटरफ़ेस दोनों br0 ब्रिज से जुड़े हैं।
और मैक के br0 इंटरफ़ेस पर:
$ brctl showmacs br0
पोर्ट नहीं मैक अतिरिक्त स्थानीय है? उम्र बढ़ने का टाइमर
1 00: 05: 5 डी: सीएफ: 64: 61 कोई 2.54
1 00: 19: d2: 42: 5d: 3f नहीं 36.76
1 00: 19: df: da: af: 7c नं 2.86
1 00: 1e: 33: 88: 07: e5 हां 0.00
1 00: 60: 0f: e4: 17: d6 नहीं 0.79
2 52: 54: 00: 12: 34: 56 नहीं 0.80
१ ५ 8: ६ डी:: एफ: १:: ५ बी: सी ० न ० ५.९ १
1 सी 8: आ: 21: होना: 8 डी: 16 कोई 167.69
2 सीए: 0 सी: 73: सी 3: बीसी: 45 हां 0.00
ध्यान दें कि br0 इंटरफ़ेस मेरे होस्ट कंप्यूटर को उसी पुल से जोड़ता है जिसका उपयोग अतिथि द्वारा किया जा रहा है।
आप जाँच कर सकते हैं कि आप NAT का उपयोग करने के बजाय अपने स्वयं के नेटवर्क पर रूट किए गए हैं traceroute 8.8.8.8
। यदि पहला नोड आपके नेटवर्क का राउटर है, तो मेहमान के आईपी पते के बजाय आपका नेटवर्क सही तरीके से काम कर रहा होना चाहिए।
यह दस्तावेज देखें ।
virt-manager
सुनिश्चित करें कि आपने स्थापित किया है virt-manager
और hal
। hal
पैकेज के लिए एक सुझाव दिया निर्भरता है virt-manager
और बनाते या संपादित मेहमानों जब आपके सिस्टम की नेटवर्क विन्यास निर्धारित करने के लिए प्रयोग किया जाता है।
ब्रू ब्रिज को ऊपर के रूप में परिभाषित करते हुए मैंने पुण्य-प्रबंधक के साथ एक वर्चुअल मशीन बनाई जो निम्नानुसार है:
मैं इस अतिथि से अपने घर के बाकी नेटवर्क और इंटरनेट पर सीधे जाने में सक्षम था। मैं अपने घर के नेटवर्क पर अन्य (गैर-होस्ट, गैर-अतिथि) उबंटू कंप्यूटर से भी इसे प्राप्त कर सकता था।
kvm
पुण्य-प्रबंधक (EApubs या किसी और को इससे परेशान होने की तुलना करने के लिए) द्वारा संचालित बहुत लंबी कमान यहां दी गई है:
/ usr / bin / kvm -S -M PC-1.0 -enable-kvm -m 1024 -smp 1, सॉकेट = 1, कोर = 1, थ्रेड = 1 -नाम अचूक -uuid f05771729-eda6-4b85-84dc-f100c9ae3789 - नोडफॉन्किग -नोडेफ़ल्ट्स -चर्डदेव सॉकेट, आईडी = चारमिटर, पथ = / var / lib / libvirt / qemu / exact.monitor, सर्वर, Nowait -mon chardev = चार्टरिटर, आईडी = मॉनिटर, मोड = नियंत्रण -rtc बेस = utc -no शटडाउन -ड्राइव फ़ाइल = / media / natty / home / gruber / ubuntu-kvm / tmpW8gSGB.qcow2, if = none, id = drive-ide0-0-0, format = PHP2 -device ide-drive, बस = ide.0 , यूनिट = 0, ड्राइव = ड्राइव- ide0-0-0, id = ide0-0-0, bootindex = 1 -नेटेड टैप, fd = 18, id = hostnet0 -device rtl8139, netdev - hostnet0, id = net0, mac = 52: 54: 00: 0e: da: 9b, बस = pci.0, addr = 0x3 -chardev pty, id = charserial0 -device isa-serial, chardev = charserial0, id - सीरियल0 -usb -vnc 127.0.0.1.1: 0 -वागा सिरस -देविस इंटेल-एचडीए, आईडी = साउंड0, बस = pci.0, एड्र = 0x4 -देविस एचडीए-डुप्लेक्स, आईडी = साउंड0-कोडेक0, बस = साउंड0.0,कैड = ० -देवस पुण्य-गुब्बारे-पीसी, आईडी = गुब्बारा, बस = pci.0, addr ०.०५५
यहां /etc/libvirt/qemu/quantal.xml में वर्चुअल मशीन विवरण का नेटवर्क भाग दिया गया है
<interface type='bridge'>
<mac address='52:54:00:b0:8e:aa'/>
<source bridge='br0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
इस लिंक के अनुसार , प्रदर्शन और विश्वसनीयता के लिए, नेटवर्क डिवाइस मॉडल को सेट करना सबसे अच्छा हो सकता है virtio
, आप इसे आई- बटन दबाकर , एनआईसी सेटिंग में जाकर और "डिवाइस मॉडल" सेट करके पुण्य-दर्शक में कर सकते हैं। “को virtio
। आप इसे लाइन में जोड़कर ऊपर XML में भी जोड़ सकते हैं:
<model type='virtio'/>
संक्षेप में
यह सब 12.04 पर लिया गया था:
- पुण्य-प्रबंधक, पुल-बर्तन, केमू-केवीएम और संबंधित पैकेज स्थापित करना
- सुनिश्चित करें कि kvm का उपयोग करने के इच्छुक प्रत्येक उपयोगकर्ता libvirtd समूह में हैं।
- ऊपर परिभाषित / आदि / नेटवर्क / इंटरफेस (जो उद्धृत लेख से मेल खाता है)
- रिबूट, सुनिश्चित करें कि ईथरनेट को प्लग इन किया गया है और वायरलेस (यदि कोई हो) बंद है।
- या तो सीधे किसी इमेज के खिलाफ kvm चलाएं, जैसे
-device e1000,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0
, या गुण के साथ एक वर्चुअल मशीन बनाएं- मैनेजर, चरण 4> उन्नत विकल्प पैनल के तहत नेटवर्क ब्रिज br0 को निर्दिष्ट करता है।
नेटवर्किंग, क्षमताओं, टेम्प्लेट या कॉन्फ़िगरेशन में कोई और परिवर्तन नहीं किए गए थे।
अपने नए मेहमान को इंटरनेट पर एक सेवा का खुलासा करने के लिए आपको चाहिए:
- किसी भी फ़ायरवॉल सेवा को तैयार और कॉन्फ़िगर करें जिसकी आपको आवश्यकता होगी।
- या तो अपने अतिथि कॉन्फ़िगरेशन में या अपनी डीएचसीपी सेवा में एक स्थिर पता निर्दिष्ट करें।
- यदि आप NAT राउटर का उपयोग उस सेवा के लिए पोर्ट खोल रहे हैं जिसे आप इसे अतिथि के आईपी पते पर निर्देशित कर रहे हैं।
अपने होस्ट कंप्यूटर के लिए फ़ायरवॉल सेवा का परीक्षण करना और पुन: सक्षम करना याद रखें। इसे अतिथि को अग्रेषित करने के लिए किसी भी प्रविष्टि की आवश्यकता हो सकती है।
देखें https://help.ubuntu.com/community/KVM/Installation , https://help.ubuntu.com/community/KVM/Networking , और https://help.ubuntu.com/12.04/serverguide/libvirt। एचटीएमएल ।
ifconfig
,brctl show
,brctl showmacs br0
, औरip route
। अतिथि पर:ifconfig
,ip route
,ping 8.8.8.8
,ping <your internet router>
, औरtraceroute 8.8.8.8
। मैं यह नहीं कह सकता कि मैंने आपके रास्ते में केवीएम को कॉन्फ़िगर किया है, लेकिन मैंनेkvm
कमांड का उपयोग करके काम करने के लिए ब्रिजिंग प्राप्त कर ली है । मुझे वायरलेस डिस्कनेक्ट करना पड़ा, इसलिए मेरा होस्ट इंटरनेट से कनेक्ट हो जाएगा, और, जैसा कि आपके द्वारा कहे गए निर्देशों के अनुसार, आपको इंटरनेट को ईथरनेट से कनेक्ट करने की आवश्यकता है।