NAT模式 橋接模式bridge原理理解

橋接場景

無論現在的各種容器,還是我們之前常用的虛擬機,爲了與局域網內其他IP通訊通常需要用到『橋接』。

Bridge橋接方式

在這裏插入圖片描述
Bridge 將虛擬機橋接到host機器的網卡上,guest和host機器都通過bridge上網.對外不同的ip。

NAT

想要理解Bridge首先要理解NAT.
NAT是虛擬機藉助宿主機的IP上網的,外人看來並不知道虛擬機的存在。

家用路由器一般都是NAT模式。

用戶通過路由器發送數據

內網用戶默認都是192.168.1.x網段,而路由器充當默認網關的角色,所有內網發出的包都將經過路由器,路由器在公網有唯一的IP,所有的包經過路由器修改其源IP都改爲了公網IP了,並且會隨機映射一個對外端口。

用戶通過路由器接收數據

當應答回到路由器時,路由器會根據此前的映射關係,將目標IP和PORT改爲原先發送請求的內網用戶的IP和PORT,這樣對於內網用戶來說是感知不到路由器的存在的,大家共用路由器的對外IP訪問外網。當然,因爲大家都在內網同一個網段(路由器基於DHCP分配),所以內網用戶互相通訊也沒有問題。

NAT在虛擬領域

當NAT用在虛擬機領域的時候,原理是類似的。只不過一臺PC上的若干虛擬機相當於若干內網用戶,而宿主機PC充當路由器的角色,虛擬機會在PC上虛擬化一個網絡環境:也就是每個虛擬機通過一個無形的網線連接到了無形的路由器上,僅此而已。

每個虛擬機實例會通過PC上的虛擬路由器獲取DHCP分配的局域網IP,但是這只是本機虛擬出來的局域網,並不是物理局域網。那麼,現在虛擬機想訪問外網,只需要配置默認網關爲PC上虛擬路由器,那麼數據包經過虛擬路由器的時候,會將源IP修改爲PC的物理網卡的物理局域網IP,發送給物理路由器,之後的事情和之前描述的一樣。

上面的虛擬路由器其實是宿主機上一張虛擬的網卡,而虛擬機則將默認網關指向了這張網卡,從而有機會進行IP篡改。

NAT模式結論

1個PC上的若干虛擬機之間,可以互相通訊,中介就是虛擬路由器。

虛擬機可以訪問外網,也可以訪問物理局域網,但是無法訪問其他PC上的虛擬機。

外人(物理局域網其他PC)無法直接訪問虛擬機,這和物理路由器外網的用戶無法直接訪問內網用戶一個道理。

虛擬機可以訪問宿主機的物理IP,流程是先經過宿主NAT修改源IP和源PORT,通過物理網卡發出到局域網絡中,又被物理網卡接收處理。

宿主機無法訪問虛擬機,這是因爲宿主機的物理網卡和內網其他網卡的角色一樣,對於虛擬路由器來說都是”外人”,不可能進入到虛擬局域網的內網用戶。不過(在虛擬機起一個web服務器 通過端口轉發一樣可以訪問對應的web服務 也可以Ping通的。)

橋接bridge

在這裏插入圖片描述

橋(虛擬交換機)

回到上面的圖片,橋接和NAT可以說是大不相同,在圖中的br0相當於虛擬交換機,物理網卡eth0和虛擬機網卡vnet0都通過虛擬的網線連接到br0上,這樣eth0和vnet0之間可以互相交換數據。

我們把br0叫做橋,其實在宿主機上也是一張虛擬的網卡,作爲虛擬交換機角色,而傳統交換機本身就是按mac目標地址的將數據轉發到正確的網線出口上,並不會做什麼事情。

理解數據流向

配置虛擬機採用橋接模式並指定br0後,數據從虛擬機的網卡vnet0發出到br0,br0會將數據轉發給另一端的eth0,源mac是虛擬機的隨機MAC地址,源IP是虛擬機的IP地址,橋並沒有做中間修改,數據僅僅通過eth0網卡直接發到鏈路上,eth0只是充當一個發送的物理介質。

當應答回來的時候,物理網卡eth0會在混雜模式捕獲包並交給br0處理,如果目標mac地址等於eth0或者vnet0,則進一步處理。如果是eth0的包那麼直接宿主機處理,如果是vnet0的包則轉發給虛擬機處理,整個過程無需對包做出修改,因爲br0僅僅是一個交換機,而eth0和vnet0是連在上面的2個網卡而已。

簡單理解

更加簡單的去理解的話,br0是一個交換機,eth0是連在br0交換機上某個插槽的另外一臺特殊交換機(它在混雜模式工作,監聽的是來自物理交換機發來的各類包),而vnet0是連在br0交換機上的一臺普通服務器。

Bridge結論

無論是虛擬機還是物理機,大家都在一個網段裏,都指向同一個默認網關(物理路由器)。

虛擬機通過橋,可以向物理路由器申請dhcp,分配得到局域網IP。

掛在橋上的虛擬機,可以直接被局域網其他用戶訪問,因爲eth0混雜模式+橋可以轉發到虛擬機。

混雜模式的網卡只是一個物理介質,它監聽所有的包,只留下自己關注的包(比如目的mac地址是eth0h或者vnet0的包),也可以發送任意的包,無論包的源mac地址到底是不是物理網卡自身的(vnet0的假mac地址)

可見,橋接更加適合於虛擬機對外提供服務,因爲它是可以被外部訪問到的,和一個正常的局域網用戶沒有什麼區別。

很多網絡的結構圖喜歡把一個局域網的用戶關聯到一條線上,體現出大家都在一個鏈路上的感覺,其實這是很大的誤導,真實的局域網用戶都是接在一個交換機上面的,交換機知道每個插槽上有哪些mac地址,一般來說一個插槽就一個mac地址,但是對於我們說的橋接就可能是多個,另外也可能是接了另外一個交換機,也就是交換機可以級聯,仍舊是一個局域網。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章