KVM網絡橋接模式解說


在上一篇博客中,我畫了一張圖來解說橋接模式下kvm的網絡是什么樣子的。那今天我就仔細來解釋一下這方面的內容,讓大家學會配置橋接網絡。

還是這樣的一張圖,我們知道bridge就是橋接網卡的名稱。讓虛擬機在橋接模式下聯網,沒有它是實現不了的,更實現不了虛擬機與物理機的網絡環境並相結合。

橋接模式的物理網卡也只能有一個,我自己在做實驗搭環境的時候把他命名為br0,實際上橋接模式下的虛擬機與物理機保持通信的時候,也就依靠這一張網卡來實現。早期的網橋其實也就是二層交換機(這種交換機沒有路由功能),僅僅負責把虛擬機的網絡信號轉發到同一個網段的其他的主機。

我畫了下面的這樣的一張圖來表示橋接實現的過程。可以看出來,不管多少個虛擬機,他們使用的都是同一個網卡br0。他們都在同一個局域網內,不管是物理機還是虛擬機都各自擁有獨立的IP。說到這里大家可能對虛擬機的橋接有了稍微的認識,那我們再來看看具體是怎么實現的:

在我安裝了3台虛擬機之后,結果如下圖所示:

 

你會發現原來的物理網卡eth0(centos7上是ens33)的IP不顯示了,改換成了br0,這是因為在橋接下,br0橋接網卡綁定了物理網卡eth0,這說白了就是在橋接模式下,br0就是物理網卡eth0,此時我們看到的br0網卡上的172.16.0.50這個IP地址,就是物理網卡eth0的地址。感覺很神奇。可能你還會有疑問,那么下面的virbr0和vnet0等等又是什么呢?

 在上面的網卡信息中,以“vir”開頭的網卡是NAT模式下的網卡信息,nat模式下自己又路由出來了一個網段的ip。nat是負責做轉發的。與物理機不在同一個網絡環境中。我們這里不對nat模式的網卡做過多說明,大家可以自己百度看看。而接下來的虛擬網卡vnet0、vnet1是很重要的設備。這些設備代表着一個個的虛擬機的網卡。大家可能有疑問,他怎么看不到IP呢?

通過這張圖,你可以看出,vnet0是與第一台虛擬機的的網卡eth0綁定在一起的,vnet2是與第二台虛擬機的網卡eth0綁定在一起的。實際上在橋接網絡中,網橋br0並不是直接與虛擬機的網卡eth0進行通信,中間需要一個虛擬網卡vnet#(此處的#表示數字序號)來進行通信。但是我們在物理機上又是看不到vnet#的ip地址信息的,這是因為虛擬機的ip地址信息是要在虛擬機里面來查看的,在物理上機上是看不到的。但是vnet#這中虛擬網卡是必不可少的,比如br0離開了ens33照樣不能存活,同樣的道理,虛擬機里面的eth0網卡離開了vnet#也照樣不能通信。所以說在虛擬機里面配置網卡有時候也要考慮vnet#。如何配置呢?有幾點大家要明白。

1、虛擬網卡vnet#是創建虛擬機的時候自動創建的。我們要做的就是將br0關聯到虛擬網卡vnet#上。

2、虛擬網卡vnet#,#代表數字序號,比如0,1,2,3.....這個順序是你先后創建虛擬機的次序排出來的,從0開始計數。

3、一般上,我們創建虛擬機好之后,無需關心vnet#虛擬網卡。你只要在虛擬機里面配置網卡eth0即可,這樣就可以上網了。、

但是有些情況下,比如物理機網絡故障了,這時候你再重啟物理網卡,會對虛擬機的網絡造成影響。這是因為br0沒有與vnet#綁定的緣故,此時你需要重啟虛擬機來解決,但是我們不可能總是重啟虛擬機,很麻煩。所以你需要設置vnet#來達到上網的目的。

在安裝好虛擬機的時候,輸入以下命令:你會看到網絡是這樣子的:

在interfaces上,你會看到一個物理網卡eth0和三個虛擬網卡vnet0、vnet1、vnet2,我這里是按照了三台虛擬機。這就是正常的網絡情況。但是如果網絡出現故障不正常的話,比如我重啟一下物理網卡,那么此時虛擬機也上不去網了,而且你也看不到后面的vnet#這些虛擬網卡,此時你應該這樣做,就是重新將br0綁定到vnet#(interfaces)上。

網橋配置命令brctl:

1)查看網橋連接狀況

[root@centos6-chaofeng ~]# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.00e04a682faf    no            eth0
                                        vnet0
                                        vnet1
                                        vnet2
virbr0        8000.525400dd5574    yes        virbr0-nic

2)添加接口

#brctl addif br0 vnet0

這個命令就是將br0綁定到vnet0。這時我們就可以好好的上網了。

關於這個命令的使用還有許多需要我們了解的,所以我們往后還要繼續研究。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM