KVM / libvirt: वर्चुअलाइजेशन होस्ट पर स्टेटिक गेस्ट आईपी एड्रेस को कैसे कॉन्फ़िगर करें


31

होस्ट सिस्टम से मेहमानों का नेटवर्क कॉन्फ़िगरेशन (आईपी एड्रेस, सबनेट, गेटवे, ब्रॉडकास्ट एड्रेस) सेट करना है। प्रयुक्त नेटवर्क सेटअप bridgeमोड में है। मैं क्लाइंट से स्वयं स्थिर नेटवर्क कॉन्फ़िगरेशन को कॉन्फ़िगर करने के बजाय होस्ट से नेटवर्क को कैसे कॉन्फ़िगर कर सकता हूं?

यदि मैं निष्पादित करता हूं:

virsh edit vm1

वहाँ एक <network>ब्लॉक के रूप में अच्छी तरह से है और मैंने वहाँ से नेटवर्क इंटरफ़ेस को कॉन्फ़िगर करने की कोशिश की, लेकिन दुर्भाग्य से अतिथि वीएम इसका उपयोग नहीं करता है और जैसे नेटवर्क पर ऑफ़लाइन है (क्योंकि यह केवल स्वचालित नेटवर्क कॉन्फ़िगरेशन का उपयोग करता है) ... अतिथि VMs दोनों, लिनक्स और विंडोज आधारित हैं। किसी भी मदद को बहुत सराहा जाएगा।


2
आरक्षित डीएचसीपी पट्टों के माध्यम से आईपी पते सौंपना एक विकल्प नहीं है?
MadHatter

एचएम मुझे लगता है कि यह है, लेकिन मैं वीएम # 1 को आईपी # 1, वीएम # 2 से आईपी # 2 आदि असाइन करना चाहता हूं (बजाय उन्हें मेरे लीज से बाहर एक यादृच्छिक आईपी देने के लिए)। क्या आपको लगता है कि डीएचसीपी के साथ इसे इस तरह से कॉन्फ़िगर करना संभव होगा? यदि यह है, तो मुझे इस दृष्टिकोण की कोशिश करने में खुशी होगी।
बीटा

2
मैं " KVM / libvirt: " वर्चुअलाइजेशन होस्ट पर स्टेटिक गेस्ट IP एड्रेस को कॉन्फ़िगर कैसे करें "जैसे सवाल का नाम बदलने का सुझाव देता हूं
Nils Toedtmann

1
@NilsToedtmann से सहमत हों, हाइपरवाइज़र के बारे में कोई अतिरिक्त जानकारी जैसे कि बेस ओएस आदि का उपयोग किया जा रहा है, फायदेमंद होगा। वर्चुअलाइज्ड सिस्टम के लिए नेटवर्किंग के विन्यास में मदद करने के लिए अतिरिक्त OS आधारित प्रबंधन उपकरण हो सकते हैं। SUSE आधारित ऑपरेटिंग सिस्टम के साथ उपयोग के लिए KVM और LXC पर बढ़िया गाइड हैं जो YaST का उपयोग कर सकते हैं।
मैट

जवाबों:


52

यदि आप अतिथि के अंदर कोई कॉन्फ़िगरेशन नहीं करना चाहते हैं, तो एकमात्र विकल्प एक डीएचसीपी सर्वर है जो स्थिर आईपी पते को सौंपता है। यदि आप bridgeमोड का उपयोग करते हैं, तो संभवतः कुछ बाहरी डीएचसीपी सर्वर होगा। स्थैतिक पट्टों की सेवा कैसे करें, यह जानने के लिए इसके मैनुअल से परामर्श करें।

लेकिन कम से कम आगे मोड में natया route, आप libvirt के अंतर्निर्मित का उपयोग कर सकते हैं dnsmasqd(libvirtd के अधिक हाल के संस्करण dnsmasq के "dhcp-Recordsfile" विकल्प का समर्थन करते हैं)। यहां कैसे:

सबसे पहले, वीएम के मैक पते का पता लगाएं, जिसे आप स्टैटिक आईपी एड्रेस असाइन करना चाहते हैं:

virsh  dumpxml  $VM_NAME | grep 'mac address'

फिर नेटवर्क को संपादित करें

virsh  net-list
virsh  net-edit  $NETWORK_NAME    # Probably "default"

पता लगाएं <dhcp>, खंड गतिशील रेंज को प्रतिबंधित करने और अपने वीएमएस के लिए मेजबान प्रविष्टियों को जोड़ने

<dhcp>
  <range start='192.168.122.100' end='192.168.122.254'/>
  <host mac='52:54:00:6c:3c:01' name='vm1' ip='192.168.122.11'/>
  <host mac='52:54:00:6c:3c:02' name='vm2' ip='192.168.122.12'/>
  <host mac='52:54:00:6c:3c:03' name='vm3' ip='192.168.122.12'/>
</dhcp>

फिर, अपने वीएम को रिबूट करें (या अपने डीएचसीपी क्लाइंट को पुनः आरंभ करें, जैसे ifdown eth0; ifup eth0)


अद्यतन: मैं देख रहा हूं कि "वायर-नेट-एडिट" के बाद परिवर्तन प्रभावी नहीं हो सकते हैं। उस स्थिति में, संपादन के बाद यह प्रयास करें:

virsh  net-destroy  $NETWORK_NAME  
virsh  net-start    $NETWORK_NAME  

... और VM के DHCP क्लाइंट को पुनरारंभ करें।

अगर वह अभी भी काम नहीं करता है, तो आपको करना पड़ सकता है

  • libvirtd सेवा बंद करें
  • किसी भी dnsmasq प्रक्रियाओं को मार डालो जो अभी भी जीवित हैं
  • libvirtd सेवा शुरू करें

नोट: कोई तरीका नहीं है जब KVM होस्ट एक निश्चित नेटवर्क कॉन्फ़िगरेशन का उपयोग करने के लिए अज्ञात OS और अज्ञात कॉन्फ़िगरेशन के साथ VM को बाध्य कर सकता है। लेकिन अगर आपको पता है कि VM एक निश्चित नेटवर्क कॉन्फिगर प्रोटोकॉल का उपयोग करता है - तो DHCP का उपयोग करें - आप इसका उपयोग कर सकते हैं। यह इस पोस्ट को मानता है।

कुछ OS (जैसे कुछ लिनक्स डिस्ट्रोस) कर्नेल कमांड लाइन के माध्यम से अतिथि में नेटवर्क कॉन्फिग विकल्प पास करने की अनुमति देते हैं। लेकिन यह ओएस के लिए बहुत विशिष्ट है, और मुझे डीएचसीपी पद्धति पर कोई लाभ नहीं दिखता है।


धन्यवाद मैं इसे आज़माऊँगा और रिपोर्ट करूँगा अगर मुझे यह इस तरह से काम कर रहा है।
बीटा

ठंडा। लेकिन आपको नेटवर्क मोड बदलना होगा।
नेल्स टॉड्टमैन

1
मैं यहां आया क्योंकि मुझे इसी तरह की आवश्यकता है, और मुझे लगता है कि मैं डीएचसीपी का उपयोग करने पर लाभ बता सकता हूं, कम से कम मेरे उपयोग के मामले के लिए। स्थिति स्वाभाविक रूप से असामान्य है। मेरे पास एक सर्वर है जो हर दो सप्ताह में दो नेटवर्क के बीच आगे-पीछे होता है। इसके लगभग 10 मेहमान हैं। नेटवर्क में से एक में डीएचसीपी सर्वर है (जो मेरे लिए नियंत्रित करना कठिन है), दूसरा नहीं। डीएचसीपी का उपयोग करते हुए यह बहुत अधिक नियम है। मैं मेजबान के आईपी को बदलने और स्वचालित रूप से अतिथि आईपी पते आदि को अपडेट करने के लिए एक रास्ता खोज रहा हूं, जिसके आधार पर (मैं स्वचालन के लिए शेफ का उपयोग कर रहा हूं, इसलिए एक बार आईपी पते सेट हो जाने के बाद, मैं जाने के लिए अच्छा हूं)।
केविन कीन

2
मैं पुष्टि कर सकता हूं कि नेटवर्क को नष्ट और पुनः आरंभ किए बिना परिवर्तन प्रभावी नहीं होते हैं। मैंने यह भी पाया, अजीब तरह से, कि मुझे शटडाउन करना पड़ा, और फिर वीएम शुरू करें। बस रिबूटिंग ने एक टूटी हुई स्थिति में इंटरफ़ेस छोड़ दिया।
orodbhen

नेटवर्क को पुनरारंभ करना DHCP पट्टों को नवीनीकृत नहीं करता है। इसके लिए, आपको नेटवर्क की स्थिति फ़ाइल को / var / lib / libvirtd / dnsmasq
orodbhen में

11

virsh net-updateआपके लिए एक अच्छा आदेश है (आपको अपने नेटवर्क आदि को पुनरारंभ करने / नष्ट करने की आवश्यकता नहीं है)
देखें: https://www.redhat.com/archives/libvir-list/2012-Sest/msg01380.html


इसने मेरे लिए काम नहीं किया। मुझे नेटवर्क को नष्ट / शुरू करना था।
एलेक्स विल्सन

3

मैं प्रक्रिया में dnsmasqएक -HUPसंकेत भेजकर नए जोड़े गए आईपी-मैक मैपिंग को 'देख' सकता हूं dnsmasq। उसके बाद, नए अतिथि को रिबूट करने के लिए सही आईपी को सौंपा गया था, जिसे पुनरारंभ करने की आवश्यकता के बिना libvirtdऔर न ही नेटवर्क।

आधिकारिक libvirt प्रलेखन ( http://wiki.libvirt.org/page/Networking#Applying_modifications_to_the_network ) इस अनौपचारिक पर्ल स्क्रिप्ट का उल्लेख करता है जो पूरी प्रक्रिया को स्वचालित करती है: https://gist.github.com/bendiken/032ea1bddb9ffafe98b4

मैंने स्वयं इस स्क्रिप्ट को आज़माया नहीं है, क्योंकि मुझे लगा कि होस्ट्सफाइल पहले से ही अपडेट है और सिर्फ -HUP सिग्नल भेजना काफी है।

मेजबान डेबियन 7.8 चल रहा है और संकुल संस्करण हैं:

  • kvm 1: 1.1.2 + dfsg-6 + deb7u8
  • qemu-kvm 1.1.2 + dfsg-6 + deb7u8
  • libvirt-bin 0.9.12.3-1 + deb7u1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.