KVM ब्रिजेड नेटवर्क काम नहीं कर रहा है


23

मैंने इस गाइड के अनुसार अपने उबंटू सर्वर पर केवीएम स्थापित किया: https://help.ubuntu.com/community/KVM/ststation

फिर एक ब्रिड्ड नेटवर्क तैयार किया जैसा कि यहां दिखाया गया है: https://help.ubuntu.com/community/KVM/Networking

फिर, मैंने गुण-प्रबंधक के साथ एक वर्चुअल मशीन बनाई। मैंने कई बार कोशिश की लेकिन अतिथि नेटवर्क से कनेक्ट करने में विफल रहता है! कोई मदद?

ifconfig:

      br0       Link encap:Ethernet  HWaddr d0:27:88:b0:e4:38  
                inet addr:192.168.20.100  Bcast:192.168.20.255  Mask:255.255.255.0
                inet6 addr: fe80::d227:88ff:feb0:e438/64 Scope:Link
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:62 errors:0 dropped:0 overruns:0 frame:0
                TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0 
                RX bytes:10493 (10.4 KB)  TX bytes:8433 (8.4 KB)

      eth0      Link encap:Ethernet  HWaddr d0:27:88:b0:e4:38  
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:62 errors:0 dropped:0 overruns:0 frame:0
                TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:1000 
                RX bytes:11361 (11.3 KB)  TX bytes:8479 (8.4 KB)
                Interrupt:41 

      lo        Link encap:Local Loopback  
                inet addr:127.0.0.1  Mask:255.0.0.0
                inet6 addr: ::1/128 Scope:Host
                UP LOOPBACK RUNNING  MTU:16436  Metric:1
                RX packets:0 errors:0 dropped:0 overruns:0 frame:0
                TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0 
                RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

      virbr0    Link encap:Ethernet  HWaddr 5a:8c:57:95:af:3b  
                inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
                UP BROADCAST MULTICAST  MTU:1500  Metric:1
                RX packets:0 errors:0 dropped:0 overruns:0 frame:0
                TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0 
                RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ब्रेटल शो:

 bridge name    bridge id      STP enabled    interfaces
 br0       8000.d02788b0e438   no        eth0
 virbr0         8000.000000000000   yes  

brctl showmacs br0:

 port no   mac addr       is local? ageing timer
   1  5c:d9:98:67:b6:28   no          48.33
   1  d0:27:88:b0:e4:38   yes          0.00
   1  e0:2a:82:f9:6c:09   no           0.00

आईपी ​​मार्ग:

 default via 192.168.20.1 dev br0  metric 100 
 192.168.20.0/24 dev br0  proto kernel  scope link  src 192.168.20.100 
 192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1

* अतिथि में * मैं अतिथि से जानकारी चिपकाने में असमर्थ रहा क्योंकि वह इसे नहीं कर सकता। इसे डीएचसीपी से कोई आईपी नहीं मिला। इसे मैन्युअल रूप से सेट करने के बाद भी काम नहीं करेगा।


क्या मेरा सुझाव है कि आप निम्न कमांड से आउटपुट प्रदान करें? मेजबान पर: 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कमांड का उपयोग करके काम करने के लिए ब्रिजिंग प्राप्त कर ली है । मुझे वायरलेस डिस्कनेक्ट करना पड़ा, इसलिए मेरा होस्ट इंटरनेट से कनेक्ट हो जाएगा, और, जैसा कि आपके द्वारा कहे गए निर्देशों के अनुसार, आपको इंटरनेट को ईथरनेट से कनेक्ट करने की आवश्यकता है।
जॉन एस ग्रुबर

@JohnSGruber ने आपके द्वारा अनुरोधित जानकारी को जोड़ा। लेकिन मैं अतिथि से जानकारी पेस्ट करने में असमर्थ था क्योंकि वह इसे नहीं कर सकता। इसे डीएचसीपी से कोई आईपी नहीं मिला। इसे मैन्युअल रूप से सेट करने के बाद भी काम नहीं करेगा।
थपबों

क्या मैक का पता आपको brctl showmacs br0उपर्युक्त सूची में अतिथि को सौंपा गया है ?
जॉन एस ग्रुबर

मैंने मैन्युअल रूप से मैक नहीं जोड़ा .. लेकिन मुझे मैक को चेक करने दो ..
THpubs

@JohnSGruber नहीं, मैं उस मैक को यहाँ नहीं देख रहा हूँ!
थप्पड़

जवाबों:


22

प्रारंभिक

यह मेरे लिए Ubuntu 12.04 के लिए काम करता है। आपको अपने कंप्यूटर के फ़ायरवॉल को निष्क्रिय करना चाहिए क्योंकि आप इसका परीक्षण करते हैं ताकि यह हस्तक्षेप न करे।

मूल रूप से स्थापित के रूप में / etc / default / qemu-kvm फ़ाइल होनी चाहिए।

आपको पुल-बर्तन qemu-kvm और libvirt-bin स्थापित करने की आवश्यकता होगी। वर्चुअल मशीन का उपयोग करने वाले किसी भी उपयोगकर्ता को libvirtd समूह में जोड़ा जाना चाहिए।पुल-बर्तन स्थापित करें Qemu-kvm स्थापित करेंLibvirt-bin स्थापित करें

अब 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और halhalपैकेज के लिए एक सुझाव दिया निर्भरता है 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 पर लिया गया था:

  1. पुण्य-प्रबंधक, पुल-बर्तन, केमू-केवीएम और संबंधित पैकेज स्थापित करना
  2. सुनिश्चित करें कि kvm का उपयोग करने के इच्छुक प्रत्येक उपयोगकर्ता libvirtd समूह में हैं।
  3. ऊपर परिभाषित / आदि / नेटवर्क / इंटरफेस (जो उद्धृत लेख से मेल खाता है)
  4. रिबूट, सुनिश्चित करें कि ईथरनेट को प्लग इन किया गया है और वायरलेस (यदि कोई हो) बंद है।
  5. या तो सीधे किसी इमेज के खिलाफ kvm चलाएं, जैसे -device e1000,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0, या गुण के साथ एक वर्चुअल मशीन बनाएं- मैनेजर, चरण 4> उन्नत विकल्प पैनल के तहत नेटवर्क ब्रिज br0 को निर्दिष्ट करता है।

नेटवर्किंग, क्षमताओं, टेम्प्लेट या कॉन्फ़िगरेशन में कोई और परिवर्तन नहीं किए गए थे।

अपने नए मेहमान को इंटरनेट पर एक सेवा का खुलासा करने के लिए आपको चाहिए:

  1. किसी भी फ़ायरवॉल सेवा को तैयार और कॉन्फ़िगर करें जिसकी आपको आवश्यकता होगी।
  2. या तो अपने अतिथि कॉन्फ़िगरेशन में या अपनी डीएचसीपी सेवा में एक स्थिर पता निर्दिष्ट करें।
  3. यदि आप NAT राउटर का उपयोग उस सेवा के लिए पोर्ट खोल रहे हैं जिसे आप इसे अतिथि के आईपी पते पर निर्देशित कर रहे हैं।

अपने होस्ट कंप्यूटर के लिए फ़ायरवॉल सेवा का परीक्षण करना और पुन: सक्षम करना याद रखें। इसे अतिथि को अग्रेषित करने के लिए किसी भी प्रविष्टि की आवश्यकता हो सकती है।

देखें https://help.ubuntu.com/community/KVM/Installation , https://help.ubuntu.com/community/KVM/Networking , और https://help.ubuntu.com/12.04/serverguide/libvirt। एचटीएमएल


नमस्ते, मेरे पास उस मशीन पर एक वायरलेस कार्ड नहीं है। केवल ईथरनेट :)
THpubs

मैं समझता हूं कि आपके पास वायरलेस नहीं है - लेकिन अन्य लोग इस प्रश्न को पढ़ सकते हैं। मैंने एक पुण्य-प्रबंधक अनुभाग पोस्ट किया है, जो आपने उपयोग किया है। क्या आपने वर्चुअल मशीन बनाते समय चरण 4 उन्नत विकल्पों में br0 को ब्रिज किया है? क्या kvm कमांड में नेटवर्किंग पैरामीटर पुण्य-प्रबंधक मैच खदान द्वारा लॉन्च किया गया है? (आप इसे चलाकर देख सकते हैं ps aux | grep kvm)।
जॉन एस ग्रुबर

हाय जब उन्नत विकल्पों में, गुण प्रबंधक का उपयोग करके एक वर्चुअल मशीन बनाते हैं, तो मुझे eth0 और br0 नहीं दिखाई देते हैं।
THpubs

खैर, शायद यही समस्या है - यह महत्वपूर्ण है कि इसे पुण्य-प्रबंधक के तहत काम करने के लिए प्राप्त किया जाए। क्या आप उस मशीन पर चल रहे हैं जो इसे होस्ट करेगी (और br0 के साथ परिभाषित है brctl showजैसा कि आपके प्रश्न में है?) उबंटू का कौन सा संस्करण आप चला रहे हैं? शायद यही अंतर है। पुण्य-प्रबंधक का क्या संस्करण? (मेरा 0.9.1-1ubuntu5.1 है)।
जॉन एस ग्रुबर

Im Ubuntu 12.04 और पुण्य प्रबंधक 0.9.1-1ubuntu5.1 चल रहा है। वास्तव में, मेरे पास होस्ट में पुण्य-प्रबंधक स्थापित नहीं है। मेरे पास एक दूरस्थ मशीन में है और मैं इसका उपयोग मेजबान से जुड़ने के लिए करता हूं। कि समस्या im कर रहा है?
थप्‍पब

6

यदि आप जो व्यवहार देख रहे हैं वह है होस्ट होस्ट तक पहुंच सकता है, और अतिथि होस्ट तक पहुंच सकता है, लेकिन अतिथि नेटवर्क या वीज़ा वर्सा पर अन्य मशीनों तक नहीं पहुंच सकता है ... शायद होस्ट का फ़ायरवॉल एक्सेस को अवरुद्ध कर रहा है।

देखें: https://bugs.launchpad.net/ubuntu/+source/ufw/+bug/573461

विशेष रूप से, यह खंड: "अंतिम चरण पुल पर नेटफिल्टर को निष्क्रिय करना है:

# cat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
EOF

3

ये दो स्क्रिप्ट हैं जिनका उपयोग मैं एक पुल बनाने के लिए करता हूं qemu-kvm

सबसे पहले, मेजबान को एक आईपी राउटर बनने दें।

स्क्रिप्ट ip-router.sh:

#!/bin/bash

internetinterface="eth0"

username=`whoami`

if [ "x$username" != "xroot" ] ; then

    echo    
    echo "You must be root in order to run this script..."
    echo    

    exit    

fi  

if [ "x$1" != "x" ] ; then
    internetinterface="$1"
fi  

if [ "x$1" == "xdel" ] || [ "x$2" == "xdel" ] ; then
    disable="1"
else
    disable="0"
fi  

if [ "$disable" == "0" ] ; then
    echo "Enabling IP forward and setting up masquerade NAT on interface $internetinterface"

    echo 1 > /proc/sys/net/ipv4/ip_forward

    iptables -t nat -A POSTROUTING -o $internetinterface -j MASQUERADE
else
    echo "Disable IP forward and setting down masquerade NAT on interface $internetinterface"

    echo 0 > /proc/sys/net/ipv4/ip_forward

    iptables -t nat -D POSTROUTING -o $internetinterface -j MASQUERADE
fi  

फिर, tun-tapइंटरफ़ेस बनाएं औरbridge इसे अपने डिफ़ॉल्ट इंटरफ़ेस (आमतौर पर इंटरनेट कनेक्शन वाला) के साथ।

स्क्रिप्ट create-qemu-bridged-tuntap.sh:

#!/bin/bash

bridgename=br0
tapinterface=tap0
outinterface=eth1

if [ "x$1" != "x" ] ; then
    outinterface="$1"
fi  

ifaces=`awk -F: '{print $1}' /proc/net/dev | tail -n +3`
iffound="0"

for i in $ifaces
do  
    if [ "$outinterface" == "$i" ] ; then
            iffound="1"
    fi  
done

if [ "$iffound" == "0" ] ; then
    echo
    echo "Can't find the output interface."
    echo
    exit 1
fi  

outifaceip=`ifconfig | grep -A1 $outinterface | tail -1 | awk -F: '{print $2}' | awk '{print $1}'`
outifaceiptokens=`echo $outifaceip | awk -F \. '{print NF}'`

if [ "$outifaceiptokens" != "4" ] ;  then
    echo
    echo "The selected output interface $outinterface doesn't seem to have a valid IP address."
    echo
    exit 1
fi  

hostaddress="192.168.1.1"
guestaddress="192.168.1.95"

sudo tunctl -t $tapinterface

sudo brctl addbr $bridgename
sudo brctl addif $bridgename $tapinterface

sudo ip link set $bridgename up
sudo ip addr add $hostaddress/24 dev $bridgename

sudo route add -host $guestaddress dev $bridgename
sudo parprouted eth1 $bridgename

sudo ~/scripts/ip-router.sh $outinterface

मैं इन लिपियों का दैनिक उपयोग करता हूं, इसलिए उन्हें आपके लिए भी अच्छा काम करना चाहिए। यह सब काम करने के लिए आपको कुछ पैकेज स्थापित करने होंगे। का उपयोग करते हुए:

dlocate `which COMMAND`

आप देख सकते हैं कि किस पैकेज की आवश्यकता है COMMAND। उदाहरण के लिए यह देखने के लिए कि किस पैकेज की आवश्यकता है brctl, बस चलाएं:

dlocate `which brctl`

और आपके पास होगा:

bridge-utils: /sbin/brctl

इन लिपियों में सभी कमांड के लिए समान दृष्टिकोण का उपयोग करते हुए, आपको यह (कम से कम) इस aptitudeकमांड लाइन को चलाना चाहिए :

sudo aptitude install dlocate iproute parprouted iptables uml-utilities bridge-utils net-tools

अंत में, आप मुख्य स्क्रिप्ट लॉन्च कर सकते हैं (सामान्य उपयोगकर्ता के रूप में):

#> create-qemu-bridged-tuntap.sh eth0
Set 'tap0' persistent and owned by uid 0
Enabling IP forward and setting up masquerade NAT on interface eth0

चल रहा है ip addrआप एक देखना चाहिए br0IP पते के साथ इंटरफेस 192.168.1.1, के रूप में अंदर निर्दिष्ट create-qemu-bridged-tuntap.shस्क्रिप्ट:

#> ip addr
8: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 36:76:ee:d6:63:b2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 scope global br0

इस के host addressद्वारा देखा जाता है guest। इसके विपरीत, अतिथि के पास आईपी पता होगा192.168.1.95 (फिर से, यह आसानी से मुख्य स्क्रिप्ट के अंदर बदला जा सकता है) होगा।

अब, उपयोग करते हुए virt-manager, आपको केवल br0भौतिक इंटरफ़ेस के रूप में उपयोग करने के लिए अपने अतिथि निक को सेटअप करना होगा ।

virt-manager-br0-nic

आपके अंदर guest, आपको बस eth0एक आईपी एड्रेस देना होगा 192.168.1.95और सब कुछ ठीक चलना चाहिए।

Slackware13:~> ifconfig 
eth0      Link encap:Ethernet  HWaddr 52:54:00:F7:6A:78  
          inet addr:192.168.1.95  Bcast:192.168.1.255  Mask:255.255.255.0

यद्यपि आप इसे करने के लिए एक पुल का उपयोग कर रहे हैं, यह मुझे प्रतीत होता है कि आप NAT अग्रेषण सुविधा बना रहे हैं। फिर भी, यदि आप कुछ मेजबान बंदरगाहों को आगे बढ़ा सकते हैं, तो शायद वह वही करेगा जो ईएपबस चाहता है। बहुत ही रोचक और बहुत उपयोगी उत्तर अप्रासंगिक है।
जॉन एस ग्रबेर

धन्यवाद, यह मेरे उद्देश्यों के लिए निर्दोष रूप से काम करता है। लेकिन, तथ्य की बात के रूप में, मुझे अपने वीएम के लिए एक दूरस्थ पहुँच की आवश्यकता नहीं है और मैंने सोचा कि ईएपबस बस अपने वीएम पर इंटरनेट का उपयोग करने की कोशिश कर रहा था।
Avio

@ एवीओ नहीं मेरे दोस्त, मुझे अपनी मशीन के लिए रिमोट एक्सेस की आवश्यकता है। अगर मैं NAT सेट करता हूं और VM बनाता हूं, तो यह काम करता है।
15

यहाँ एक समस्या है जहाँ मुझे एक समस्या थी जहाँ IP अग्रेषण बंद था, वह cat /proc/sys/net/ipv4/ip_forwardदिया गया है 0। इसे सक्षम करने और इसे जारी रखने से मेरे लिए इस पोस्ट में निर्देश के लिए मुद्दा साफ हो गया ।
जेक कॉब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.