一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)

虛擬機 Linux VirtualBox 軟件 物理 路由器 雲計算 VMware 網絡Linux技術分享 2019-06-14

01. 從物理網絡到虛擬網絡

著名的「六度分隔定理」說到,世界上任何兩個互不相識的人,只需要最多六個人就能夠建立起聯繫。這個定理成立的前提就是依託於龐大的網絡結構。

在虛擬化技術沒出現之前,構成網絡的元素都是實體的物理設備,比如交換機、路由器、網線等等,人們想要構建一個小型的局域網自己玩玩,都要買各種設備,成本高還不靈活。虛擬化技術普及之後,雲計算開始大行其道,我們在自己的單機上就可以建各種虛擬機,想怎麼玩就怎麼玩。


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


隨之而來的就是網絡變得更復雜了,由以前看得見摸得著的物理網絡一下變成玄乎的虛擬網絡了,好不容易建了幾臺虛擬機,發現網絡不通,或者網絡通了,但並不知道是怎麼通的,這難言的苦水哽在喉嚨實在令人不適。

這篇文章就來說說虛擬機世界裡的幾種網絡模型,我們主要以 VirtualBox 和 VMwareWorkstation 這兩款目前最主流的桌面虛擬化軟件作為例子。

總的來說,目前有四種常見的網絡模型:

  • 橋接(Bridge Adapter)
  • NAT
  • 主機(Host-only Adapter)
  • 內部網絡(Internal)

這也是 VirtualBox 支持的四種模型,對於 VMware,則只有前三種。

下圖顯示了 VirtualBox 支持的幾種網絡模型:


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


圖一

02 橋接(Bridge Adapter)

虛擬機橋接網絡模型就是使用虛擬交換機(Linux Bridge),將虛擬機和物理機連接起來,它們處於同一個網段,IP 地址是一樣的。如下圖所示:


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


在這種網絡模型下,虛擬機和物理機都處在一個二層網絡裡面,所以有:

  • 虛擬機之間彼此互通
  • 虛擬機與主機彼此可以互通
  • 只要物理機可以上網,那麼虛擬機也可以。我們來驗證下:

一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


橋接網絡的好處是簡單方便,但也有一個很明顯的問題,就是一旦虛擬機太多,廣播就會很嚴重。所以,橋接網絡一般也只適用於桌面虛擬機或者小規模網絡這種簡單的形式。

03 NAT

另一種模型是 NAT,即網絡地址轉換(Network Address Translatation)。這種模型嚴格來講,又可以分為 NAT 和 NAT網絡兩種,我們看上面的圖 1 也可以看到。

根據 NAT 的原理,虛擬機所在的網絡和物理機所在的網絡不在同一個網段,虛擬機要訪問物理所在網絡必須經過一個地址轉換的過程,也就是說在虛擬機網絡內部需要內置一個虛擬的 NAT 設備來做這件事。

但其中 NAT 和 NAT網絡 兩者還有些許的不同:

  • NAT:主機上的虛擬機之間是互相隔離的,彼此不能通信(它們有獨立的網絡棧,獨立的虛擬 NAT 設備)
  • NAT網絡:虛擬機之間共享虛擬 NAT 設備,彼此互通。

如下圖,展示了兩者細微的差別:


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


PS:NAT 網絡模式中一般還會內置一個虛擬的 DHCP 服務器來進行 IP 地址的管理。

下面我們通過實驗來驗證一下兩種模式的區別,首先是 NAT 模式:

訪問外網沒問題:


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


訪問其他虛擬機:


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


可以看到,兩個虛擬機由於有隔離的網絡棧,所以它們的 IP 地址並不在一個網段,所以 ping 不通。

再來看 NAT網絡,訪問外網同樣沒問題,我們來看下 VM 之間的互通:


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


可以看到,差別體現出來了, NAT網絡 虛擬機之間共享網絡棧,它們的 IP 地址處於同一個網段,所以彼此是互通的。

總結一下,以上兩種 NAT 模式,如果不做其他配置,那麼有:

  • 虛擬機可以訪問主機,反之不行
  • 如果主機可以上外網,那麼虛擬機也可以
  • 對於 NAT,同主機上的虛擬機之間不能互通
  • 對於 NAT網絡,虛擬機之間可以互通

PS:如果做了 端口映射 配置,那麼主機也可以訪問虛擬機。

04 主機網絡(Host-only Adapter)

主機網絡顧名思義,就是隻限於主機內部訪問的網絡,虛擬機之間彼此互通,虛擬機與主機之間彼此互通。但是默認情況下虛擬機不能訪問外網(注意:這裡說的是默認情況下,如果稍作配置,也是可以的)。

主機網絡看似簡單,其實它的網絡模型是相對比較複雜的,可以說前面幾種模式實現的功能,在這種模式下,都可以通過虛擬機和網卡的配置來實現,這得益於它特殊的網絡模型。

主機網絡模型會在主機中模擬出一塊虛擬網卡供虛擬機使用,所有虛擬機都連接到這塊網卡上,這塊網卡默認會使用網段 192.168.56.x(在主機的網絡配置界面可以看到這塊網卡),如下是基本的拓撲圖示:


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


默認情況下,虛擬機之間可以互通,虛擬機只能和主機上的虛擬網卡互通,不能和不同網段的網卡互通,更不能訪問外網,如果想做到這樣,那麼需要如圖中 紅虛線 所示,將物理網卡和虛擬網卡橋接或共享。在主機上做如下設置即可:


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


通過以上配置,我們來驗證一下,虛擬機可以訪問主機物理網卡和外網了:


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


05 內部網絡(internal)

最後一種網絡模型是內部網絡,這種模型是相對最簡單的一種,虛擬機與外部環境完全斷開,只允許虛擬機之間互相訪問,這種模型一般不怎麼用,所以在 VMware 虛擬機中是沒有這種網絡模式的。這裡我們就不多說了。

06 總結

虛擬機的四種網絡模型:橋接、NAT、主機和內網模型。

下面以一張表來描述它們之間的通信行為:


一文帶你全面瞭解虛擬機的四種網絡模型(圖文並茂)


相關推薦

推薦中...