QEMU的虛擬機器環境網路原理

2021-07-05 23:14:02 字數 2297 閱讀 1080

接下來我們試驗虛擬機器的網路配置功能,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的...