KVM / libvirt: Sanallaştırma ana bilgisayarında statik konuk IP adresleri nasıl yapılandırılır


31

Yapmak istediğim, konukların ağ yapılandırmasını (IP adresi, alt ağ, ağ geçidi, yayın adresi) ana bilgisayar sisteminden ayarlamak. Kullanılan ağ ayarları bridgemodunda. İstemcinin kendisini statik bir ağ yapılandırmasına yapılandırmak yerine ağı ana bilgisayardan nasıl yapılandırabilirim?

Eğer uygularsam:

virsh edit vm1

bir <network>blok var ve oradan ağ arayüzünü konfigüre etmeye çalıştım, fakat ne yazık ki konuk VM kullanmıyor gibi görünüyor ve ağ için çevrimdışı (sadece otomatik ağ yapılandırmasını kullandığından) ... VM'ler hem Linux hem de Windows tabanlıdır. Herhangi bir yardım çok takdir edilecektir.


2
IP adreslerini rezerve edilmiş DHCP kirası yoluyla vermek bir seçenek değil midir?
MadHatter,

Hm sanırım, ancak VM # 1'i IP # 1'e, VM # 2'yi IP # 2'ye vb. Atamak istiyorum (kiralamamdan rasgele bir IP vermek yerine). DHCP ile böyle yapılandırmanın mümkün olacağını düşünüyor musunuz? Eğer öyleyse, bu yaklaşımı denemekten memnuniyet duyarım.
beta

2
Ben "gibi bir şey soruyu yeniden adlandırmak önermek : Nasıl sanallaştırma ana bilgisayarda statik konuk IP adreslerini yapılandırmak için KVM / uyarlanması, libvirt "
Nils Toedtmann

1
@NilsToedtmann ile aynı fikirdeyseniz, temel işletim sistemi gibi kullanılan hipervizör hakkında herhangi bir ek bilgi faydalı olacaktır. Sanallaştırılmış sistemler için ağ yapılandırmasına yardımcı olacak işletim sistemi tabanlı ek yönetim araçları olabilir. KVM ve LXC'de , YaST'tan faydalanabilecek SUSE tabanlı işletim sistemlerinde kullanım için harika kılavuzlar var .
Matt

Yanıtlar:


52

Konuk içinde herhangi bir yapılandırma yapmak istemiyorsanız, tek seçenek statik IP adreslerini dağıtan bir DHCP sunucusudur. bridgeModu kullanırsanız , muhtemelen bazı harici DHCP sunucusu olacaktır. Statik kiralamaların nasıl sunulacağını öğrenmek için kılavuzuna bakın.

Ancak en azından ileri modlarda natveya routelibvirt'in yerleşikini kullanabilirsiniz (libvirtd'nin dnsmasqddaha yeni sürümleri dnsmasq'ın "dhcp-hostsfile" seçeneğini desteklemektedir). İşte nasıl:

İlk önce, statik IP adresleri atamak istediğiniz VM'lerin MAC adreslerini bulun:

virsh  dumpxml  $VM_NAME | grep 'mac address'

Ardından ağı düzenleyin

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

<dhcp>Bölümü bulun, dinamik aralığı sınırlandırın ve VM'leriniz için ana bilgisayar girişleri ekleyin

<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>

Ardından, VM'nizi yeniden başlatın (veya DHCP istemcisini yeniden başlatın, örneğin ifdown eth0; ifup eth0)


Güncelleme: Değişikliğin "virsh net edit" işleminden sonra etkili olamayacağına dair haberler olduğunu görüyorum. Bu durumda, düzenlemeden sonra bunu deneyin:

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

... ve VM'nin DHCP istemcisini yeniden başlatın.

Bu hala işe yaramazsa, yapmanız gerekebilir

  • libvirtd hizmetini durdur
  • Hala hayatta olan tüm dnsmasq süreçlerini öldürmek
  • libvirtd servisini başlatmak

Not: KVM sunucusunun, belirli bir ağ yapılandırmasını kullanması için bilinmeyen işletim sistemi ve bilinmeyen yapılandırması olan bir VM'yi zorlaması mümkün değildir. Ancak, VM'nin belirli bir ağ yapılandırma protokolü kullandığını biliyorsanız - DHCP deyin - bunu kullanabilirsiniz. Bu yazının varsaydığı şey bu.

Bazı işletim sistemleri (örneğin, bazı Linux dağıtımları) ayrıca ağ yapılandırma seçeneklerini misafire, örneğin çekirdek komut satırı aracılığıyla geçirmeyi sağlar. Ancak bu işletim sistemine çok özel ve DHCP yöntemine göre hiçbir avantaj görmüyorum.


Teşekkürler Deneyin ve bu şekilde çalışmasını sağladıysam rapor edeceğim.
beta

Güzel. Ancak ağ modunu değiştirmeniz gerekecektir.
Nils Toedtmann

1
Buraya geldim çünkü benzer bir ihtiyacım var ve en azından benim kullanım durumum için DHCP kullanmanın avantajını açıklayabilirim. Durum kuşkusuz olağandışı. Her iki haftada iki ağ arasında ileri geri hareket eden bir sunucum var. Yaklaşık 10 misafir var. Ağlardan birinde (benim için kontrol etmesi zor olan) bir DHCP sunucusu var, diğeri yok. Bu DHCP kullanarak hemen hemen dışladı. Ana bilgisayarın IP'sini değiştirmenin ve misafir IP adreslerini vs. otomatik olarak güncellemenin bir yolunu arıyorum (otomasyon için şef kullanıyorum, bu yüzden IP adresleri ayarlandıktan sonra, gitmeye hazırım).
Kevin Keane,

2
Değişikliklerin ağı yok etmeden ve yeniden başlatmadan etkili olmadığını onaylayabilirim. Ayrıca, garip bir şekilde, kapatmam ve sonra da VM'yi başlatmam gerektiğini öğrendim. Basitçe yeniden başlatma, arayüzü kırık bir durumda bıraktı.
13’de

Ağın yeniden başlatılması DHCP kiralamalarını yenilemez. Bunun için, / var / lib / libvirtd / dnsmasq
orodbhen


3

Ben yapmak mümkün olmuştur dnsmasqsadece göndererek yeni eklenen, IP-MAC eşleştirmesi görmek ' -HUPsinyali dnsmasqsüreci. Bundan sonra, yeni misafirin yeniden başlatılması, yeniden başlatma libvirtdveya ağın kendisine gerek duymadan, kendisine atanmış doğru IP'ye sahip olmak için yeterliydi .

Resmi libvirt belgeleri ( http://wiki.libvirt.org/page/Networking#Applying_modifications_to_the_network ), tüm süreci otomatikleştiren resmi olmayan Perl betiğinden bahseder: https://gist.github.com/bendiken/032ea1bddb9ffafe98b4

Bu betiği kendim denemedim, çünkü hosts dosyasının zaten güncellendiğini ve sadece -HUP sinyalini göndermenin yeterli olduğunu anladım.

Ana bilgisayar Debian 7.8 kullanıyor ve paketlerin sürümleri:

  • kvm 1: 1.1.2 + dfsg-6 + deb7u8
  • qemu-kvm 1.1.2 + dfsg-6 + deb7u8
  • libvirt-bin 0.9.12.3-1 + deb7u1
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.