主頁 >  其他 > 熱門技術中的應用-云計算中的網路1-云中網路

熱門技術中的應用-云計算中的網路1-云中網路

2020-10-30 23:48:11 其他

前面我們講了,資料中心里面堆著一大片一大片的機器,用網路連接起來,機器數目一旦非常多,人們就發現,維護這么一大片機器還挺麻煩的,有好多不靈活的地方,

  • 采購不靈活:如果客戶需要一臺電腦,那就需要自己采購、上架、插網線、安裝作業系統,周期非常長,一旦采購了,一用就 N 年,不能退貨,哪怕業務不做了,機器還在資料中心里留著,
  • 運維不靈活:一旦需要擴容 CPU、記憶體、硬碟,都需要去機房手動弄,非常麻煩,
  • 規格不靈活:采購的機器往往動不動幾百 G 的記憶體,而每個應用往往可能只需要 4 核 8G,所以很多應用混合部署在上面,埠各種沖突,容易相互影響,
  • 復用不靈活:一臺機器,一旦一個用戶不用了,給另外一個用戶,那就需要重裝作業系統,因為原來的作業系統可能遺留很多資料,非常麻煩,

從物理機到虛擬機

為了解決這些問題,人們發明了一種叫虛擬機的東西,并基于它產生了云計算技術,

其實在你的個人電腦上,就可以使用虛擬機,如果你對虛擬機沒有什么概念,你可以下載一個桌面虛擬化的軟體,自己動手嘗試一下,它可以讓你靈活地指定 CPU 的數目、記憶體的大小、硬碟的大小,可以有多個網卡,然后在一臺筆記本電腦里面創建一臺或者多臺虛擬電腦,不用的時候,一點洗掉就沒有了,

在資料中心里面,也有一種類似的開源技術 qemu-kvm,能讓你在一臺巨大的物理機里面,掏出一臺臺小的機器,這套軟體就能解決上面的問題:一點就能創建,一點就能銷毀,你想要多大就有多大,每次創建的系統還都是新的,

我們常把物理機比喻為自己拿地蓋房子,而虛擬機則相當于購買公寓,更加靈活方面,隨時可買可賣, 那這個軟體為什么能做到這些事兒呢?

它用的是軟體模擬硬體的方式,剛才說了,資料中心里面用的 qemu-kvm,從名字上來講,emu 就是 Emulator(模擬器)的意思,主要會模擬 CPU、記憶體、網路、硬碟,使得虛擬機感覺自己在使用獨立的設備,但是真正使用的時候,當然還是使用物理的設備,

例如,多個虛擬機輪流使用物理 CPU,記憶體也是使用虛擬記憶體映射的方式,最終映射到物理記憶體上,硬碟在一塊大的檔案系統上創建一個 N 個 G 的檔案,作為虛擬機的硬碟,

簡單比喻,虛擬化軟體就像一個“騙子”,向上“騙”虛擬機里面的應用,讓它們感覺獨享資源,其實自己啥都沒有,全部向下從物理機里面弄,

虛擬網卡的原理

那網路是如何“騙”應用的呢?如何將虛擬機的網路和物理機的網路連接起來?

 

 

首先,虛擬機要有一張網卡,對于 qemu-kvm 來說,這是通過 Linux 上的一種 TUN/TAP 技術來實作的,

虛擬機是物理機上跑著的一個軟體,這個軟體可以像其他應用打開檔案一樣,打開一個稱為 TUN/TAP 的 Char Dev(字符設備檔案),打開了這個字符設備檔案之后,在物理機上就能看到一張虛擬 TAP 網卡,

虛擬化軟體作為“騙子”,會將打開的這個檔案,在虛擬機里面虛擬出一張網卡,讓虛擬機里面的應用覺得它們真有一張網卡,于是,所有的網路包都往這里發,

當然,網路包會到虛擬化軟體這里,它會將網路包轉換成為檔案流,寫入字符設備,就像寫一個檔案一樣,內核中 TUN/TAP 字符設備驅動會收到這個寫入的檔案流,交給 TUN/TAP 的虛擬網卡驅動,這個驅動將檔案流再次轉成網路包,交給 TCP/IP 協議堆疊,最終從虛擬 TAP 網卡發出來,成為標準的網路包,

就這樣,幾經轉手,資料終于從虛擬機里面,發到了虛擬機外面,

虛擬網卡連接到云中

我們就這樣有了虛擬 TAP 網卡,接下來就要看,這個卡怎么接入龐大的資料中心網路中,

在接入之前,我們先來看,云計算中的網路都需要注意哪些點,

  • 共享:盡管每個虛擬機都會有一個或者多個虛擬網卡,但是物理機上可能只有有限的網卡,那這么多虛擬網卡如何共享同一個出口?
  • 隔離:分兩個方面,一個是安全隔離,兩個虛擬機可能屬于兩個用戶,那怎么保證一個用戶的資料不被另一個用戶竊聽?一個是流量隔離,兩個虛擬機,如果有一個瘋狂下片,會不會導致另外一個上不了網?
  • 互通:分兩個方面,一個是如果同一臺機器上的兩個虛擬機,屬于同一個用戶的話,這兩個如何相互通信?另一個是如果不同物理機上的兩個虛擬機,屬于同一個用戶的話,這兩個如何相互通信?
  • 靈活:虛擬機和物理不同,會經常創建、洗掉,從一個機器漂移到另一臺機器,有的互通、有的不通等等,靈活性比物理網路要好得多,需要能夠靈活配置,

共享與互通問題

這些問題,我們一個個來解決,

首先,一臺物理機上有多個虛擬機,有多個虛擬網卡,這些虛擬網卡如何連在一起,進行相互訪問,并且可以訪問外網呢?

還記得我們在大學宿舍里做的事情嗎?你可以想象你的物理機就是你們宿舍,虛擬機就是你的個人電腦,這些電腦應該怎么連接起來呢?當然應該買一個交換機,

在物理機上,應該有一個虛擬的交換機,在 Linux 上有一個命令叫作 brctl,可以創建虛擬的網橋 brctl addbr br0,創建出來以后,將兩個虛擬機的虛擬網卡,都連接到虛擬網橋 brctl addif br0 tap0 上,這樣將兩個虛擬機配置相同的子網網段,兩臺虛擬機就能夠相互通信了,

 

那這些虛擬機如何連接外網呢?在桌面虛擬化軟體上面,我們能看到以下選項,

 

這里面,host-only 的網路對應的,其實就是上面兩個虛擬機連到一個 br0 虛擬網橋上,而且不考慮訪問外部的場景,只要虛擬機之間能夠相互訪問就可以了,

如果要訪問外部,往往有兩種方式,

一種方式稱為橋接,如果在桌面虛擬化軟體上選擇橋接網路,則在你的筆記本電腦上,就會形成下面的結構,

 

每個虛擬機都會有虛擬網卡,在你的筆記本電腦上,會發現多了幾個網卡,其實是虛擬交換機,這個虛擬交換機將虛擬機連接在一起,在橋接模式下,物理網卡也連接到這個虛擬交換機上,物理網卡在桌面虛擬化軟體上,在“界面名稱”那里選定,

如果使用橋接網路,當你登錄虛擬機里看 IP 地址的時候會發現,你的虛擬機的地址和你的筆記本電腦的,以及你旁邊的同事的電腦的網段是一個網段,這是為什么呢?這其實相當于將物理機和虛擬機放在同一個網橋上,相當于這個網橋上有三臺機器,是一個網段的,全部打平了,我將圖畫成下面的樣子你就好理解了,

 

 

在資料中心里面,采取的也是類似的技術,只不過都是 Linux,在每臺機器上都創建網橋 br0,虛擬機的網卡都連到 br0 上,物理網卡也連到 br0 上,所有的 br0 都通過物理網卡出來連接到物理交換機上,

 

 同樣我們換一個角度看待這個拓撲圖,同樣是將網路打平,虛擬機會和你的物理網路具有相同的網段,

 

在這種方式下,不但解決了同一臺機器的互通問題,也解決了跨物理機的互通問題,因為都在一個二層網路里面,彼此用相同的網段訪問就可以了,但是當規模很大的時候,會存在問題, 

你還記得嗎?在一個二層網路里面,最大的問題是廣播,一個資料中心的物理機已經很多了,廣播已經非常嚴重,需要通過 VLAN 進行劃分,如果使用了虛擬機,假設一臺物理機里面創建 10 臺虛擬機,全部在一個二層網路里面,那廣播就會很嚴重,所以除非是你的桌面虛擬機或者資料中心規模非常小,才可以使用這種相對簡單的方式,

另外一種方式稱為 NAT,如果在桌面虛擬化軟體中使用 NAT 模式,在你的筆記本電腦上會出現如下的網路結構,

 

 在這種方式下,你登錄到虛擬機里面查看 IP 地址,會發現虛擬機的網路是虛擬機的,物理機的網路是物理機的,兩個不相同,虛擬機要想訪問物理機的時候,需要將地址 NAT 成為物理機的地址,

除此之外,它還會在你的筆記本電腦里內置一個 DHCP 服務器,為筆記本電腦上的虛擬機動態分配 IP 地址,因為虛擬機的網路自成體系,需要進行 IP 管理,為什么橋接方式不需要呢?因為橋接將網路打平了,虛擬機的 IP 地址應該由物理網路的 DHCP 服務器分配,

在資料中心里面,也是使用類似的方式,這種方式更像是真的將你宿舍里面的情況,搬到一臺物理機上來,

 

 虛擬機是你的電腦,路由器和 DHCP Server 相當于家用路由器或者寢室長的電腦,物理網卡相當于你們宿舍的外網網口,用于訪問互聯網,所有電腦都通過內網網口連接到一個網橋 br0 上,虛擬機要想訪問互聯網,需要通過 br0 連到路由器上,然后通過路由器將請求 NAT 成為物理網路的地址,轉發到物理網路,

如果是你自己登錄到物理機上做個簡單配置,你可以簡化一下,例如將虛擬機所在網路的網關的地址直接配置到 br0 上,不用 DHCP Server,手動配置每臺虛擬機的 IP 地址,通過命令 iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE,直接在物理網卡 ethX 上進行 NAT,所有從這個網卡出去的包都 NAT 成這個網卡的地址,通過設定 net.ipv4.ip_forward = 1,開啟物理機的轉發功能,直接做路由器,而不用單獨的路由器,這樣虛擬機就能直接上網了,

 

 隔離問題

解決了互通的問題,接下來就是隔離的問題,

如果一臺機器上的兩個虛擬機不屬于同一個用戶,怎么辦呢?好在 brctl 創建的網橋也是支持 VLAN 功能的,可以設定兩個虛擬機的 tag,這樣在這個虛擬網橋上,兩個虛擬機是不互通的,

但是如何跨物理機互通,并且實作 VLAN 的隔離呢?由于 brctl 創建的網橋上面的 tag 是沒辦法在網橋之外的范圍內起作用的,因此我們需要尋找其他的方式,

有一個命令 vconfig,可以基于物理網卡 eth0 創建帶 VLAN 的虛擬網卡,所有從這個虛擬網卡出去的包,都帶這個 VLAN,如果這樣,跨物理機的互通和隔離就可以通過這個網卡來實作,

 

 首先為每個用戶分配不同的 VLAN,例如有一個用戶 VLAN 10,一個用戶 VLAN 20,在一臺物理機上,基于物理網卡,為每個用戶用 vconfig 創建一個帶 VLAN 的網卡,不同的用戶使用不同的虛擬網橋,帶 VLAN 的虛擬網卡也連接到虛擬網橋上,

這樣是否能保證兩個用戶的隔離性呢?不同的用戶由于網橋不通,不能相互通信,一旦出了網橋,由于 VLAN 不同,也不會將包轉發到另一個網橋上,另外,出了物理機,也是帶著 VLAN ID 的,只要物理交換機也是支持 VLAN 的,到達另一臺物理機的時候,VLAN ID 依然在,它只會將包轉發給相同 VLAN 的網卡和網橋,所以跨物理機,不同的 VLAN 也不會相互通信,

使用 brctl 創建出來的網橋功能是簡單的,基于 VLAN 的虛擬網卡也能實作簡單的隔離,但是這都不是大規模云平臺能夠滿足的,一個是 VLAN 的隔離,數目太少,前面我們學過,VLAN ID 只有 4096 個,明顯不夠用,另外一點是這個配置不夠靈活,誰和誰通,誰和誰不通,流量的隔離也沒有實作,還有大量改進的空間,

小結

  • 云計算的關鍵技術是虛擬化,這里我們重點關注的是,虛擬網卡通過打開 TUN/TAP 字符設備的方式,將虛擬機內外連接起來;
  • 云中的網路重點關注四個方面,共享、隔離、互通、靈活,其中共享和互通有兩種常用的方式,分別是橋接和 NAT,隔離可以通過 VLAN 的方式,

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/195993.html

標籤:其他

上一篇:底層網路知識詳解-陌生的資料中心6-移動網路

下一篇:熱門技術中的應用-云計算中的網路2-軟體定義網路

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more