一文帶你全面了解虛擬機的四種網絡模型(圖文并茂)
01. 從物理網絡到虛擬網絡
著名的「六度分隔定理」說到,世界上任何兩個互不相識的人,只需要最多六個人就能夠建立起聯(lián)系。這個定理成立的前提就是依托于龐大的網絡結構。
在虛擬化技術沒出現(xiàn)之前,構成網絡的元素都是實體的物理設備,比如交換機、路由器、網線等等,人們想要構建一個小型的局域網自己玩玩,都要買各種設備,成本高還不靈活。虛擬化技術普及之后,云計算開始大行其道,我們在自己的單機上就可以建各種虛擬機,想怎么玩就怎么玩。
隨之而來的就是網絡變得更復雜了,由以前看得見摸得著的物理網絡一下變成玄乎的虛擬網絡了,好不容易建了幾臺虛擬機,發(fā)現(xiàn)網絡不通,或者網絡通了,但并不知道是怎么通的,這難言的苦水哽在喉嚨實在令人不適。
這篇文章就來說說虛擬機世界里的幾種網絡模型,我們主要以 VirtualBox 和 VMwareWorkstation 這兩款目前最主流的桌面虛擬化軟件作為例子。
總的來說,目前有四種常見的網絡模型:
- 橋接(Bridge Adapter)
- NAT
- 主機(Host-only Adapter)
- 內部網絡(Internal)
這也是 VirtualBox 支持的四種模型,對于 VMware,則只有前三種。
下圖顯示了 VirtualBox 支持的幾種網絡模型:
圖一
02 橋接(Bridge Adapter)
虛擬機橋接網絡模型就是使用虛擬交換機(Linux Bridge),將虛擬機和物理機連接起來,它們處于同一個網段,IP 地址是一樣的。如下圖所示:
在這種網絡模型下,虛擬機和物理機都處在一個二層網絡里面,所以有:
橋接網絡的好處是簡單方便,但也有一個很明顯的問題,就是一旦虛擬機太多,廣播就會很嚴重。所以,橋接網絡一般也只適用于桌面虛擬機或者小規(guī)模網絡這種簡單的形式。
03 NAT
另一種模型是 NAT,即網絡地址轉換(Network Address Translatation)。這種模型嚴格來講,又可以分為 NAT 和 NAT網絡兩種,我們看上面的圖 1 也可以看到。
根據 NAT 的原理,虛擬機所在的網絡和物理機所在的網絡不在同一個網段,虛擬機要訪問物理所在網絡必須經過一個地址轉換的過程,也就是說在虛擬機網絡內部需要內置一個虛擬的 NAT 設備來做這件事。
但其中 NAT 和 NAT網絡 兩者還有些許的不同:
- NAT:主機上的虛擬機之間是互相隔離的,彼此不能通信(它們有獨立的網絡棧,獨立的虛擬 NAT 設備)
- NAT網絡:虛擬機之間共享虛擬 NAT 設備,彼此互通。
如下圖,展示了兩者細微的差別:
PS:NAT 網絡模式中一般還會內置一個虛擬的 DHCP 服務器來進行 IP 地址的管理。
下面我們通過實驗來驗證一下兩種模式的區(qū)別,首先是 NAT 模式:
訪問外網沒問題:
訪問其他虛擬機:
可以看到,兩個虛擬機由于有隔離的網絡棧,所以它們的 IP 地址并不在一個網段,所以 ping 不通。
再來看 NAT網絡,訪問外網同樣沒問題,我們來看下 VM 之間的互通:
可以看到,差別體現(xiàn)出來了, NAT網絡 虛擬機之間共享網絡棧,它們的 IP 地址處于同一個網段,所以彼此是互通的。
總結一下,以上兩種 NAT 模式,如果不做其他配置,那么有:
- 虛擬機可以訪問主機,反之不行
- 如果主機可以上外網,那么虛擬機也可以
- 對于 NAT,同主機上的虛擬機之間不能互通
- 對于 NAT網絡,虛擬機之間可以互通
PS:如果做了 端口映射 配置,那么主機也可以訪問虛擬機。
04 主機網絡(Host-only Adapter)
主機網絡顧名思義,就是只限于主機內部訪問的網絡,虛擬機之間彼此互通,虛擬機與主機之間彼此互通。但是默認情況下虛擬機不能訪問外網(注意:這里說的是默認情況下,如果稍作配置,也是可以的)。
主機網絡看似簡單,其實它的網絡模型是相對比較復雜的,可以說前面幾種模式實現(xiàn)的功能,在這種模式下,都可以通過虛擬機和網卡的配置來實現(xiàn),這得益于它特殊的網絡模型。
主機網絡模型會在主機中模擬出一塊虛擬網卡供虛擬機使用,所有虛擬機都連接到這塊網卡上,這塊網卡默認會使用網段 192.168.56.x(在主機的網絡配置界面可以看到這塊網卡),如下是基本的拓撲圖示:
默認情況下,虛擬機之間可以互通,虛擬機只能和主機上的虛擬網卡互通,不能和不同網段的網卡互通,更不能訪問外網,如果想做到這樣,那么需要如圖中 紅虛線 所示,將物理網卡和虛擬網卡橋接或共享。在主機上做如下設置即可:
通過以上配置,我們來驗證一下,虛擬機可以訪問主機物理網卡和外網了:
05 內部網絡(internal)
***一種網絡模型是內部網絡,這種模型是相對最簡單的一種,虛擬機與外部環(huán)境完全斷開,只允許虛擬機之間互相訪問,這種模型一般不怎么用,所以在 VMware 虛擬機中是沒有這種網絡模式的。這里我們就不多說了。
06 總結
虛擬機的四種網絡模型:橋接、NAT、主機和內網模型。
下面以一張表來描述它們之間的通信行為:
本文轉載自微信公眾號「 Linux云計算網絡(ID:cloud_dev)」,公眾號主要專注在 Linux、云計算、網絡方面的技術分享,可以通過以下二維碼關注。轉載本文請聯(lián)系 Linux云計算網絡 公眾號。