接下來我們試驗虛擬機器的網路配置功能,kvm虛擬機器網路配置主要有兩種方式:nat方式和bridge方式。今天我們主要理解和實驗nat方式的網路配置。
nat方式是kvm安裝後的預設方式,它支援主機與虛擬機器的互訪,同時也支援虛擬機器訪問網際網路,但不支援外界訪問虛擬機器,因為nat的全稱是network address translation(網路位址轉換),即虛擬機器和主機在乙個特定的內部子網內,虛擬機器的網路資料在經過物理機網路的時候進行ip偽裝,這樣所有虛擬機器出去的網路資料都相當於是物理機出去的資料,也就是說,我們可以分配給使用nat網路的虛擬機器乙個內網ip,而這個內網ip的虛擬機器訪問出去的時候外部網路看到的是物理機的外網ip,這樣做的用處就是實現多個虛擬機器共享物理主機的外網ip,節省外網ip位址。
nat的邏輯原理圖如下:
上圖中的「virbr0」就充當了乙個虛擬網路交換機的作用,所有虛擬機器要跟外界通訊都先通過這個virbr0。那麼virbr0是如何在主機上建立出來的呢?virbr0又如何起作用的?虛擬機器如何使用virbr0作為其網路交換機?
1.virbr0的建立
libvirt預設使用了乙個名為default的nat網路,這個網路預設使用virbr0作為橋接介面,使用dnsmasq來為使用nat網路的虛擬機器提供dns及dhcp服務,dnsmasq生效後的配置檔案預設儲存在以下路徑:
/var/lib/libvirt/dnsmasq/default.hostsfile mac&&ip繫結的配置檔案
/var/lib/libvirt/dnsmasq/default.leases dhcp分配到虛擬機器的ip位址列表
/var/lib/libvirt/network/default.xml default網路的配置檔案
開啟default.xml可以看到:
default
cfbccd14-664c-4d02-91ef-ef3b1e168f61
virbr0' stp='on' delay='0' />
從上面的配置裡可以清楚的看到網路名稱是「default」, 網橋名稱是」virbr0」,forward模式是「nat」,虛擬機器可以dhcp的位址範圍等。
ifconfig可以看到:
virbr0已經被成功的虛擬出來了。 2.
virbr0如何工作
本質上說libvirt所實現的這種nat網路是通過物理機的iptables規則來實現的,也即是在虛擬機器資料經過nat表的postrouting鏈出去的時候對其進行了偽裝。
如下圖所示:
該主機上的設定表明對source是192.168.122.0網段的所有資料報,如果destination不是192.168.122.0網段(即不是同一子網的虛擬機器或主機),那麼都用主機的ip位址進行偽裝。這樣當虛擬機器訪問外網的時候,外網只看到了主機的ip位址,而看不到虛擬機器的實際內網位址。
3. 虛擬機器如何配置virbr0
虛擬機器的定義xml中的inte***ce定義如下:
'virbr0'/>
上面的source bridge就指向了「virbr0」,虛擬機器從dnsmasq獲取到192.168.122.0網段的乙個ip位址
啟動虛擬機器後,執行「ifconfig」, 可以看到有個叫vnet0的網路介面被建立出來,這就是該虛擬機器的虛擬網路介面。
再執行「brctlshow」看看:
很清楚,這個虛擬機器的vnet0網路介面是加入在virbr0這個虛擬網橋的,所以這個虛擬機器的網路資料都需要這個virbr0**。
最後來看一下,虛擬機器裡面的ip情況:
可以看到這個虛擬機器的ip位址是192.168.122.10,閘道器、dhcp伺服器位址和dns伺服器位址都是192.168.122.1,192.168.122.1又是什麼呢?就是主機上這個virbr0的ip位址。
qemu編譯 建立虛擬機器
首先安裝編譯qemu依賴包 apt get install gcc libsdl1.2 dev zlib1g dev libasound2 dev linux kernel headers pkg config libgnutls dev libpci dev tar jxvf qemu 1.4.2...
qemu虛擬機器離線快照
qemu磁碟快照管理 1 建立快照 qemu img snapshot c snapshot name your os img.qcow2 2 檢視快照 qemu img snapshot l your os img.qcow2 3 刪除快照 qemu img snapshot d snapshot...
虛擬機器無法關閉 qemu虛擬機器的關機方式
qemu虛擬機器的關閉方式主要包括如下幾種方式 通過qemu monitor的system powerdown命令進行關閉,在libvirt對qemu進行管理的情況下,通過virsh shutdown命令進行關閉。在虛擬機器內使用guest os自帶的關機按鈕進行關閉。通過qemu monitor的...