Hazırlıklar
Bu, Ubuntu 12.04 için benim için çalıştı. Bunu test ederken, bilgisayarınızın güvenlik duvarını engellemelisiniz;
/ Etc / default / qemu-kvm dosyası başlangıçta kurulmuş olmalıdır.
Sen olması gerekir köprü utils qemu-kvm ve libvirt-bin yüklü. Sanal makineleri kullanan tüm kullanıcılar libvirtd grubuna eklenmelidir.
Artık CAP_NET_ADMIN yeteneği eklemenize gerek yok gibi görünüyor.
Ağ kurulumu
Varsayılan ağ modu, SLIRP olarak da adlandırılan Kullanıcı modudur. Konuk bilgisayara yönlendirilen NAT olan önceden tanımlanmış bir virbr0 köprüsü kullanır. NAT yönlendirme, çekirdeğin ip_forwarding özelliğini ve iptables öğesini kullanır . Köprü modu, konukda (numaralandırılmamış) Ethernet arabiriminin bağlandığı ve hem ev sahibinin hem de misafirin kendi ağ arabirimlerine sahip olduğu sanal bir köprü kullanır.
Aşağıdaki şemalar farkları daha net hale getirebilir:
Varsayılan Kullanıcı ağının nasıl tanımlandığını görebilirsiniz:
virsh net-dumpxml default
Köprülü modu aşağıdaki yaklaşımlarla ayarlayabilirim:
/ Etc / network / interfaces (sorunuzda bahsettiğiniz yazının köprü bölümünden):
otomatik lo
iface lo inet geri döngü
#auto eth0
#iface eth0 inet dhcp
otomatik eth0
iface eth0 inet kılavuzu
otomatik br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp kapalı
bridge_fd 0
bridge_maxwait 0
yeniden başlatın; ve kablosuz ağın etkin olmadığından emin olun. Varsayılan IP yolunu ile kontrol edin ip route
. Br0 arabirimini kullanıyor olmalı.
Not: Bu değişiklik yapıldığında Ethernet'inize bağlı değilse, Ethernet kablonuzun takılı olması ve bir taşıyıcı olması veya önyüklemenin iki dakika boyunca askıda kalması gerekir ve ağ bağlantınız olmaz . Bu dosyada olmak, önyükleme normal devam etmeden önce gelmesi gerekir.
Not Genellikle, birden fazla MAC adresi kullanamadıkları için eth0 yerine kablosuz bir ağ kullanamazsınız (köprü için ikinci bir numaraya ihtiyaçları olduğuna inanıyorum).
Alternatif olarak, Ethernet kullanımını devre dışı bırakabilir ve IP adresi bulunmadığından ve varsayılan bir yol bulunmadığından emin olabilirsiniz ip route
. Sonra:
sudo ifconfig eth0 0.0.0.0 up
sudo brctl addbr br0
sudo brctl addif br0 eth0
sudo ifconfig br0 up
sudo dhclient br0 &
Burada varsayılan yol ve DNS adresini tanımlamanın yanı sıra statik bir IP adresi de sağlayabilirsiniz. Bu örnek için dhclient
bunu yapar.
İşte rota tablom:
$ ip rota listesi
192.168.1.1 dev br0 metrik 100 üzerinden varsayılan
169.254.0.0/16 dev br0 kapsamı bağlantısı metrik 1000
192.168.1.0/24 dev br0 protokol çekirdeği kapsamı bağlantısı src 192.168.1.45
192.168.122.0/24 dev vir00 proto çekirdek kapsamı bağlantısı src 192.168.122.1
Kvm kullanarak
Daha sonra köprülü bir kvm makinesini şu şekilde açabilirim:
$ sudo kvm -name Quantal -m 1024 -hda foo.qcow2 --soundhw ac97 -device virtio-net,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0
Bu -netdev tap
parametre sudo'yu bir gereklilik haline getirir. VM başlatıldığında, qemu-kvm aşağıdaki komutları çalıştırır:
ifconfig vnet0 0.0.0.0 yukarı
brctl ek reklam brctl ek reklam br0 vnet0
Bu / etc / qemu-ifup tarafından yapılır.
VM'nin vnet0 arayüzü br0 köprüsüne eklenir, çünkü yukarıdaki varsayılan rota bu köprü arayüzünü kullanır. Orada olmasaydı, musluk arayüzü bunun yerine virbr0 arayüzüne eklenecekti. İnternete bağlı olmadığı için, deneylerimde NAT, konuğu ev sahibine ve internete bağlamak için kullanılacaktı. Vnet0'i / etc / default / qemu-kvm içindeki belirli bir köprüye yönlendirebilirsiniz. Aşağıdaki virt-manager uygulamasını kullanarak hangi köprüye bağlanacağınızı açıkça yönlendirebilirsiniz.
Qemu-kvm tarafından verilen yukarıdaki komutlar ve -netdev tap,id=tunnel,ifname=vnet0
parametre nedeniyle, vm sanal makinesi vnet0 tüneline ve tünel br0 köprüsüne bağlanır.
Artık doğrudan bu konuk VM'ye ağımdaki başka bir bilgisayardan erişebiliyorum.
Ana bilgisayarım ifconfig
(VM çalışırken ağımda görünen vnet0 arayüzünü not edin):
$ ifconfig
br0 Bağlantı alanı: Ethernet HWaddr 00: 1e: 33: 88: 07: e5
giriş adresi: 192.168.1.45 Yayın: 255.255.255.255 Maske: 255.255.255.0
inet6 addr: fe80 :: 21e: 33ff: fe88: 7e5 / 64 Kapsam: Bağlantı
YAYIN YAYINLI ÇALIŞMA ÇOKLU MTU: 1500 Metrik: 1
RX paketleri: 6526 hataları: 0 bırakıldı: 0 aşıldı: 0 çerçeve: 0
TX paketler: 7543 hataları: 0 bırakıldı: 0 aşıldı: 0 taşıyıcı: 0
çarpışmalar: 0 txqueuelen: 0
RX bayt: 2712940 (2,7 MB) TX bayt: 1071835 (1,0 MB)
eth0 Bağlantı alanı: Ethernet HWaddr 00: 1e: 33: 88: 07: e5
YAYIN YAYINLI ÇALIŞMA ÇOKLU MTU: 1500 Metrik: 1
RX paketleri: 7181 hataları: 0 bırakıldı: 0 aşıldı: 0 çerçeve: 0
TX paketler: 7740 hataları: 0 bırakıldı: 0 aşıldı: 0 taşıyıcı: 0
çarpışmalar: 0 txqueuelen: 1000
RX bayt: 2974585 (2,9 MB) TX bayt: 1096580 (1,0 MB)
Kesinti: 43 Temel adres: 0x6000
lo Bağlantı encap: Yerel Geri Döngü
inet addr: 127.0.0.1 Maske: 255.0.0.0
inet6 addr: :: 1/128 Kapsam: Ev sahibi
UP LOOPBACK ÇALIŞMA MTU: 16436 Metrik: 1
RX paketleri: 10 hata: 0 bırakıldı: 0 aşıldı: 0 çerçeve: 0
TX paketleri: 10 hata: 0 bırakıldı: 0 aşıldı: 0 taşıyıcı: 0
çarpışmalar: 0 txqueuelen: 0
RX bayt: 664 (664.0 B) TX bayt: 664 (664.0 B)
vnet0 Link encap: Ethernet HWaddr ca: 0c: 73: c3: bc: 45
inet6 addr: fe80 :: c80c: 73ff: fec3: bc45 / 64 Kapsam: Bağlantı
YAYIN YAYINLI ÇALIŞMA ÇOKLU MTU: 1500 Metrik: 1
RX paketleri: 226 hataları: 0 bırakıldı: 0 aşıldı: 0 çerçeve: 0
TX paketler: 429 hatalar: 0 düşürüldü: 0 aşıldı: 0 taşıyıcı: 0
çarpışmalar: 0 txqueuelen: 500
RX bayt: 26919 (26,9 KB) TX bayt: 58929 (58,9 KB)
virbr0 Bağlantı alanı: Ethernet HWaddr d6: 18: 22: db: ff: 93
giriş adresi: 192.168.122.1 Yayın: 192.168.122.255 Maske: 255.255.255.0
YAYIN YAYINLI ÇOKLU MTU: 1500 Metrik: 1
RX paketleri: 0 hata: 0 bırakıldı: 0 aşıldı: 0 çerçeve: 0
TX paketleri: 0 hata: 0 bırakıldı: 0 aşıldı: 0 taşıyıcı: 0
çarpışmalar: 0 txqueuelen: 0
RX bayt: 0 (0.0 B) TX bayt: 0 (0.0 B)
Sanal Makineyi çalıştırırken köprü yapılandırmam:
$ brctl gösterisi
köprü adı köprü kimliği STP etkin arayüzler
br0 8000.001e338807e5 etik dışı0
vnet0
virbr0 8000.000000000000 evet
Hem sanal makinenin vnet0 arabiriminin hem de eth0 arabiriminin br0 köprüsüne bağlı olduğunu unutmayın.
Ve MAC br0 arayüzünde:
$ brctl showmacs br0
port no mac addr yerel mi? yaşlanma zamanlayıcısı
1 00: 05: 5d: cf: 64: 61 no 2.54
1 00: 19: d2: 42: 5d: 3, no 36,76
1 00: 19: df: da: af: 7c no 2.86
1 00: 1e: 33: 88: 07: e5 evet 0.00
1 00: 60: 0f: e4: 17: d6, 0,79
2 52: 54: 00: 12: 34: 56, 0,80
1 58: 6d: 8f: 17: 5b: c0, 5.91
1 c8: aa: 21: be: 8d: 16 no 167.69
2 ca: 0c: 73: c3: bc: 45 evet 0.00
Br0 arabiriminin ana bilgisayarımı konuk tarafından kullanılan aynı köprüye bağladığını unutmayın.
Kullanarak NAT'ın kendi ağınıza yönlendirilmesi yerine köprülendiğini kontrol edebilirsiniz traceroute 8.8.8.8
. İlk düğüm konuğun ip adresi yerine ağınızın yönlendiricisi ise ağınızın doğru çalışması gerekir.
Bu dokümana bakınız .
virt yönetici
virt-manager
Ve yüklediğinizden emin olun hal
. hal
Paket için önerilen bir bağımlılık olduğunu virt-manager
ve oluşturma veya misafir düzenlerken sisteminizin ağ yapılandırmasını belirlemek için kullanılır.
Br0 köprüsünü yukarıda tanımlandığı gibi tanımlarken, virt-manager ile sanal bir makine oluşturdum:
Bu misafirden direkt olarak ev ağımın geri kalanına ve internete gidebildim. Ayrıca ev ağımdaki diğer (ev sahibi olmayan, konuk olmayan) Ubuntu bilgisayarından ssh ile başarabildim.
İşte kvm
virt-manager tarafından yürütülen çok uzun bir komut (EApubs veya bu konuda sorun yaşayan başka biri ile karşılaştırmak için):
/ usr / bin / kvm -S -M pc-1.0 -enable-kvm -m 1024 -smp 1, soketler = 1, çekirdekler = 1, dişler = 1 -senin tam adı -uuid f057a729-eda6-4b85-84dc-f100c9ae3789 - nodefconfig -nodefaults -chardev soketi, id = charmonitor, path = / var / lib / libvirt / qemu / prec.monitor, sunucu, nowait -mon chardev = charmonitor, id = monitör, mod = kontrol -rtc base = utc -no- kapatma -drive dosyası = / media / natty / home / gruber / ubuntu-kvm / tmpW8gSGB.qcow2, eğer = none, id = sürücü-ide0-0-0, format = qcow2 -device ide-drive, bus = ide.0 , birim = 0, sürücü = sürücü-ide0-0-0, id = ide0-0-0, bootindex = 1 -düğmeli kademe, fd = 18, id = hostnet0 -device rtl8139, netdev = hostnet0, id = net0, mac = 52: 54: 00: 0e: da: 9b, bus = pci.0, addr = 0x3 -chardev pty, id = charserial0 -device isa-seri, chardev = charserial0, id = serial0 -usb -vnc 127.0.0.1: 0 -vga cirrus -device intel-hda, id = ses0, veri yolu = pci.0, addr = 0x4 -device hda-dupleks, kimlik = ses0-kodek0, veri yolu = ses0.0,cad = 0 -device virtio-balon-pci, id = balon0, veri yolu = pci.0, addr = 0x5
Sanal makine açıklamasının /etc/libvirt/qemu/quantal.xml dosyasındaki ağ kısmı
<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>
Bu bağlantıya göre , performans ve güvenilirlik için ağ cihazı modelini ayarlamak en iyisi olabilir, bunu i düğmesine virtio
basarak , NIC ayarına gidip "Cihaz modeli" ayarını kullanarak neredeyse izleyicide yapabilirsiniz. "için . Satırı ekleyerek bunu yukarıdaki XML'e de ekleyebilirsiniz:virtio
<model type='virtio'/>
Özetle
Bütün bunlar 12.04 tarihinde aldı:
- Virt-manager, bridge-utils, qemu-kvm ve ilgili paketlerin kurulması
- Kvm kullanmak isteyen her kullanıcının libvirtd grubunda olduğundan emin olun.
- / Etc / network / interface'leri yukarıdaki gibi tanımlamak (alıntılanan makaleyle eşleşir)
- Ethernet'in takılı ve kablosuz olduğundan (varsa) kapalı olduğundan emin olarak yeniden başlatın.
- Ya bir görüntüye karşı
-device e1000,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0
kvm'yi doğrudan çalıştırın , ya da Adım 4-> Gelişmiş Seçenekler panelinin altındaki ağ Bridge br0'ı belirterek virt-manager ile sanal bir makine oluşturun.
Ağ oluşturma, yetenekler, şablonlar veya yapılandırmalar için başka değişiklik gerekmedi.
Yeni misafirinizdeki bir hizmeti İnternet’e maruz bırakmak için:
- Gereksinim duyacağınız herhangi bir güvenlik duvarı servisini hazırlayın ve yapılandırın.
- Konuk yapılandırmanızda veya DHCP hizmetinizde statik bir adres atayın.
- Bir NAT yönlendirici kullanıyorsanız, servis için bir port açın ve onu konuğun IP adresine yönlendirin.
Ana bilgisayarınız için güvenlik duvarı servisini test etmeyi ve yeniden etkinleştirmeyi unutmayın. Trafiği konuğa iletmek için herhangi bir giriş yapılması gerekebilir.
Bkz. Https://help.ubuntu.com/community/KVM/Installation , https://help.ubuntu.com/community/KVM/Networking ve https://help.ubuntu.com/12.04/serverguide/libvirt. html .
ifconfig
,brctl show
,brctl showmacs br0
, veip route
. Konuk üzerinde:ifconfig
,ip route
,ping 8.8.8.8
,ping <your internet router>
, vetraceroute 8.8.8.8
. Kvm'yi sizin yaptığınız gibi yapılandırdığımı söyleyemem, ancakkvm
komutu kullanarak çalışmak için köprü oluşturmaya başladım . Kablosuz bağlantım kesmek zorunda kaldım, böylece ev sahibim İnternet'e bağlanacaktı, ve belirttiğiniz talimatlar gibi, İnternet'e Ethernet ile bağlanmanız gerekir.