? ??引言:近期在macbook pro m1下研究通過Vagrant配置Vmware、Virtualbox虛擬機(jī)搭建K8S集群的問題碌上,碰到虛擬機(jī)的網(wǎng)絡(luò)設(shè)置,有許多概念性的東西會(huì)困擾到集群網(wǎng)絡(luò)的搭建浦徊,在參考文章的過程碰到一片較好的英文blog文章馏予,詳細(xì)介紹了虛擬機(jī)網(wǎng)絡(luò)的配置,可惜是英文盔性,索性翻譯過來供大家參考霞丧。
????在這個(gè)現(xiàn)代商業(yè)世界中,網(wǎng)絡(luò)是交互式計(jì)算機(jī)操作的一個(gè)重要組成部分冕香。很難想象蛹尝,在這個(gè)變化速度越來越快的世界里,沒有網(wǎng)絡(luò)暂筝,如何在計(jì)算機(jī)之間交換數(shù)據(jù)箩言。硬件虛擬化背后的核心思想之一是在所有可以使用物理計(jì)算機(jī)的場景下使用虛擬機(jī)。因此焕襟,虛擬機(jī)必須能夠使用虛擬網(wǎng)絡(luò)適配器連接到物理和虛擬網(wǎng)絡(luò)陨收。在VirtualBox上運(yùn)行的虛擬機(jī)可以連接到不同的網(wǎng)絡(luò)。VirtualBox為虛擬機(jī)提供了多種網(wǎng)絡(luò)模式鸵赖。今天的博文涉及VirtualBox網(wǎng)絡(luò)設(shè)置务漩,幫助你以最佳方式配置VirtualBox,以滿足你的需求它褪。
????下面我們將討論并比較以下這些VirualBox的網(wǎng)絡(luò)模式:
1饵骨、Not Attached
2、NAT
3茫打、NAT 網(wǎng)絡(luò)
4居触、橋接適配器
5妖混、Internal網(wǎng)絡(luò)
6、Host-Only適配器
7轮洋、通用驅(qū)動(dòng)
一制市、虛擬網(wǎng)絡(luò)適配器
????每個(gè)VirtualBox虛擬機(jī)最多可以使用8個(gè)虛擬網(wǎng)絡(luò)適配器,每個(gè)適配器又被稱為網(wǎng)絡(luò)接口控制器(NIC)弊予。4個(gè)虛擬網(wǎng)絡(luò)適配器可以在VirtualBox GUI(圖形用戶界面)中進(jìn)行配置祥楣。所有的虛擬網(wǎng)絡(luò)適配器(最多 8 個(gè))都可以用 VBoxManage modifyvm 命令進(jìn)行配置。VBoxManage是VirtualBox的一個(gè)命令行管理工具汉柒,可用于配置所有VirtualBox設(shè)置误褪,包括VirtualBox網(wǎng)絡(luò)設(shè)置∧牍樱可以在虛擬機(jī)設(shè)置中訪問VirtualBox網(wǎng)絡(luò)適配器設(shè)置(選擇你的虛擬機(jī)兽间,點(diǎn)擊設(shè)置,在虛擬機(jī)設(shè)置窗口中進(jìn)入網(wǎng)絡(luò)部分)斋扰。
????如上圖1,你應(yīng)該看到4個(gè)適配器頁簽传货。在虛擬機(jī)創(chuàng)建后屎鳍,默認(rèn)情況下會(huì)啟用一個(gè)虛擬網(wǎng)絡(luò)適配器。你可以勾選 "啟用網(wǎng)絡(luò)適配器 "復(fù)選框來啟用適配器问裕,不勾選復(fù)選框來禁用它(這個(gè)復(fù)選框定義了虛擬網(wǎng)絡(luò)適配器設(shè)備是否連接到虛擬機(jī)上)逮壁。點(diǎn)擊 "高級",展開高級VirtualBox網(wǎng)絡(luò)適配器設(shè)置粮宛。
二窥淆、VirtualBox中的虛擬網(wǎng)絡(luò)適配器的類型
????一個(gè)虛擬網(wǎng)絡(luò)適配器是一個(gè)軟件模擬的物理設(shè)備,有6種虛擬適配器類型可以通過VirtualBox進(jìn)行虛擬化:
1巍杈、AMD PCnet-PCI II(Am79C970A)忧饭。這種網(wǎng)絡(luò)適配器是基于AMD芯片的,可以在很多情況下使用筷畦。對于Windows用戶词裤,這種網(wǎng)絡(luò)適配器可以用于舊版本的Windows系統(tǒng)(如Windows 2000),因?yàn)檩^新的Windows版本鳖宾,如Windows 7吼砂、8和10不包含這種適配器的內(nèi)置驅(qū)動(dòng)程序。最初鼎文,Am79C970A PCI設(shè)備包含一個(gè)單芯片10-Mbit控制器渔肩,并集成了DMA引擎。這個(gè)網(wǎng)絡(luò)適配器還支持AMD的Magic Packet技術(shù)拇惋,用于遠(yuǎn)程喚醒周偎。
2抹剩、AMD PCnet-FAST III(Am79C973)。這個(gè)虛擬化的網(wǎng)絡(luò)適配器被幾乎所有可以在VirtualBox上運(yùn)行的操作系統(tǒng)所支持蓉坎。GRUB(啟動(dòng)加載器)可以使用這個(gè)適配器進(jìn)行網(wǎng)絡(luò)啟動(dòng)吧兔。與上述的網(wǎng)絡(luò)適配器類似,這個(gè)適配器也是基于AMD芯片袍嬉。
3、英特爾PRO/1000 MT桌面(82540EM)灶平。這個(gè)適配器可以與Windows Vista和較新的Windows版本完美配合伺通。大多數(shù)的Linux發(fā)行版也支持這個(gè)適配器。
4逢享、英特爾PRO/1000 T服務(wù)器(82543GC)罐监。Windows XP無需安裝額外的驅(qū)動(dòng)程序就能識(shí)別該適配器。
5瞒爬、英特爾PRO/1000 MT服務(wù)器(82545EM)弓柱。這個(gè)適配器模型對于從其他平臺(tái)導(dǎo)入OVF模板很有用,可以加速導(dǎo)入過程侧但。
6矢空、Paravirtualized網(wǎng)絡(luò)適配器(virtio-net)。這是一個(gè)特殊情況禀横∑ㄒ客戶操作系統(tǒng)必須為虛擬化環(huán)境提供一個(gè)特殊的軟件接口,而不是將大多數(shù)操作系統(tǒng)支持的網(wǎng)絡(luò)硬件虛擬化柏锄。這種方法允許你避免網(wǎng)絡(luò)硬件仿真的復(fù)雜性酿箭,因此可以提高網(wǎng)絡(luò)性能。
? ? ? VirtualBox支持行業(yè)標(biāo)準(zhǔn)的virtIO網(wǎng)絡(luò)驅(qū)動(dòng)趾娃。VirtIO網(wǎng)絡(luò)驅(qū)動(dòng)是KVM項(xiàng)目的一部分缭嫡,是開源的。這些驅(qū)動(dòng)程序可用于內(nèi)核為2.6.25或更高版本的Linux抬闷,以及包括Windows 2000妇蛀、XP和Vista等舊版本的Windows。
巨型幀(Jumbo frames)支持
????VirtualBox對巨型幀(可以攜帶大小超過1500字節(jié)的數(shù)據(jù)包的以太網(wǎng)幀)提供有限的支持饶氏。如果你需要使用巨型幀讥耗,請選擇一個(gè)英特爾的虛擬網(wǎng)絡(luò)適配器,并將該適配器配置為橋接模式工作疹启」懦蹋基于AMD的虛擬網(wǎng)絡(luò)適配器不支持Jumbo幀。如果你試圖為基于AMD的虛擬網(wǎng)絡(luò)適配器啟用巨量幀喊崖,巨量幀的輸入和輸出流量將被無聲地放棄挣磨。默認(rèn)情況下雇逞,巨型幀是禁用的。
三茁裙、VirtualBox的網(wǎng)絡(luò)模式
????VirtualBox提供了一長串的網(wǎng)絡(luò)模式塘砸,這是VirtualBox網(wǎng)絡(luò)設(shè)置中最有趣的特性之一。每個(gè)虛擬網(wǎng)絡(luò)適配器都可以單獨(dú)frames配置為在不同的網(wǎng)絡(luò)模式下運(yùn)行晤锥。例如掉蔬,你可以為適配器1設(shè)置NAT模式,為適配器2設(shè)置Host-Only模式矾瘾。你可以在下拉菜單中選擇網(wǎng)絡(luò)模式女轿,如下圖:
讓我來詳細(xì)看看每一種VirtualBox的網(wǎng)絡(luò)模式壕翩。
1蛉迹、無連接模型(Not attached)
????在虛擬機(jī)中安裝了一個(gè)虛擬網(wǎng)絡(luò)適配器,但網(wǎng)絡(luò)連接不見了放妈,很像你在使用物理網(wǎng)絡(luò)適配器時(shí)拔掉以太網(wǎng)網(wǎng)線北救。這種模式對測試很有用。例如芜抒,你可以在短時(shí)間內(nèi)啟用這種網(wǎng)絡(luò)模式以模擬拔掉網(wǎng)線的情況珍策。當(dāng)你禁用 "Not Attached "模式切換到另一種網(wǎng)絡(luò)模式時(shí),網(wǎng)絡(luò)連接又變得可用挽绩。你還可以檢查DHCP客戶端是否能正確獲得IP地址膛壹,應(yīng)用程序是否能在連接中斷或丟包后恢復(fù)下載,等等唉堪。
????除了使用 "Not Attached? "網(wǎng)絡(luò)模式外模聋,你也可以使用任何其他網(wǎng)絡(luò)模式,并使用勾選 "電纜連接 "復(fù)選框的方式模擬"Not Attached? "網(wǎng)絡(luò)模式的效果唠亚。當(dāng)虛擬機(jī)處于運(yùn)行狀態(tài)時(shí)链方,你可以勾選/不勾選該復(fù)選框(見上面的屏幕截圖)就可以達(dá)到類似"Not Attached? "網(wǎng)絡(luò)模式的效果。不要忘記點(diǎn)擊 "確定 "來使虛擬機(jī)網(wǎng)絡(luò)配置的生效灶搜。
2祟蚀、NAT
????這種網(wǎng)絡(luò)模式是虛擬網(wǎng)絡(luò)適配器的默認(rèn)啟用模式。虛擬機(jī)上的操作系統(tǒng)可以通過使用虛擬NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)設(shè)備訪問物理局域網(wǎng)(LAN)中的宿主機(jī)割卖。虛擬機(jī)上的操作系統(tǒng)也可以訪問外部網(wǎng)絡(luò)前酿,包括互聯(lián)網(wǎng)。當(dāng)VirtualBox網(wǎng)絡(luò)使用NAT網(wǎng)絡(luò)模式的時(shí)候鹏溯,宿主機(jī)或其所在局域網(wǎng)的其他服務(wù)器不能直接訪問虛擬機(jī)罢维。這種默認(rèn)的網(wǎng)絡(luò)模式對于只使用虛擬機(jī)訪問互聯(lián)網(wǎng)的用戶來說是足夠的。
????虛擬機(jī)網(wǎng)絡(luò)適配器的IP地址是通過DHCP獲得的丙挽,在這種網(wǎng)絡(luò)模式下使用的網(wǎng)絡(luò)IP地址不能在GUI中改變肺孵。VirtualBox有一個(gè)內(nèi)置的DHCP服務(wù)器和NAT引擎匀借。一個(gè)虛擬NAT設(shè)備使用VirtualBox宿主機(jī)的物理網(wǎng)絡(luò)適配器作為外部網(wǎng)絡(luò)接口。在NAT模式下使用的虛擬DHCP服務(wù)器的默認(rèn)地址是10.0.2.2(這也是虛擬機(jī)的默認(rèn)網(wǎng)關(guān)IP地址)平窘。網(wǎng)絡(luò)掩碼是255.255.255.0吓肋。
????如果您將2個(gè)或多個(gè)虛擬機(jī)的網(wǎng)絡(luò)適配器配置為使用NAT模式,每個(gè)虛擬機(jī)將在一個(gè)隔離網(wǎng)絡(luò)的虛擬NAT設(shè)備后獲得一個(gè)10.0.2.15的IP地址瑰艘。每個(gè)虛擬機(jī)的默認(rèn)網(wǎng)關(guān)是10.0.2.2是鬼。在VirtualBox中,當(dāng)使用NAT模式時(shí)紫新,多個(gè)虛擬機(jī)的IP地址相同屑咳,如下圖:
????在VBoxManage中打開虛擬機(jī)的NAT模式可以執(zhí)行如下命令:
????VBoxManage modifyvm VM_name --nic1 nat
????這里:VM_name是虛擬機(jī)的名稱弊琴,nic1是虛擬網(wǎng)絡(luò)適配器的號(hào)碼,nat是你設(shè)定的VirtualBox網(wǎng)絡(luò)模式杖爽。
????端口轉(zhuǎn)發(fā)可以在VirtualBox虛擬機(jī)網(wǎng)絡(luò)設(shè)置窗口中通過點(diǎn)擊端口轉(zhuǎn)發(fā)按鈕進(jìn)行配置(見上面的圖2中底部的Port Forwading按鈕)敲董。關(guān)于在VirtualBox網(wǎng)絡(luò)設(shè)置中配置端口轉(zhuǎn)發(fā)的詳細(xì)信息,你可以在下面的網(wǎng)絡(luò)模式部分之后找到慰安。
3腋寨、NAT網(wǎng)絡(luò)
????這種模式類似于你用于配置路由器的NAT模式。如果你對多個(gè)虛擬機(jī)使用NAT網(wǎng)絡(luò)模式化焕,它們可以通過網(wǎng)絡(luò)相互通信。虛擬機(jī)可以訪問物理網(wǎng)絡(luò)中的其他主機(jī)查刻,也可以訪問外部網(wǎng)絡(luò)凤类,包括互聯(lián)網(wǎng)穗泵。任何來自外部網(wǎng)絡(luò)的機(jī)器以及宿主機(jī)所連接的物理局域網(wǎng)的機(jī)器都不能訪問被配置為使用NAT網(wǎng)絡(luò)模式的虛擬機(jī)(類似于你配置路由器從家庭網(wǎng)絡(luò)訪問互聯(lián)網(wǎng)時(shí)的情況)谜疤。使用NAT網(wǎng)絡(luò)模式時(shí),你不能從宿主機(jī)訪問客機(jī)(除非你在全局VirtualBox網(wǎng)絡(luò)設(shè)置中配置了端口轉(zhuǎn)發(fā))夷磕。一個(gè)內(nèi)置的VirtualBox NAT路由器使用VirtualBox主機(jī)的物理網(wǎng)絡(luò)接口控制器作為外部網(wǎng)絡(luò)接口(和NAT模式一樣)履肃,如下圖4所示:
????網(wǎng)絡(luò)地址和名稱可以在VirtualBox首選項(xiàng)(文件>首選項(xiàng))中更改陡鹃。在首選項(xiàng)窗口的左窗格中,選擇網(wǎng)絡(luò)來訪問VirtualBox網(wǎng)絡(luò)設(shè)置闷叉,然后雙擊你現(xiàn)有的NAT網(wǎng)絡(luò)來編輯設(shè)置(你也可以通過點(diǎn)擊+或x圖標(biāo)添加一個(gè)新的網(wǎng)絡(luò)或刪除一個(gè)現(xiàn)有的網(wǎng)絡(luò))脊阴,如下圖5所示:在彈出的對話框里可以啟用或停用DHCP嘿期、IPv6以及配置端口轉(zhuǎn)發(fā)等功能备徐。
????NAT網(wǎng)絡(luò)的默認(rèn)地址是10.0.2.0/24衍菱,默認(rèn)的網(wǎng)關(guān)IP地址是10.0.2.1(x.x.x.1的ip模版通常被用于設(shè)置默認(rèn)網(wǎng)關(guān)IP)脊串,比如琼锋,如果你在virtualbox中配置了基于NAT網(wǎng)絡(luò)模式的虛擬網(wǎng)絡(luò)祟昭,設(shè)置了192.168.22.0/24的網(wǎng)絡(luò)地址斩例,則這個(gè)網(wǎng)絡(luò)的網(wǎng)關(guān)地址會(huì)是192.168.22.1从橘。在NAT網(wǎng)絡(luò)模式下,你不能改變網(wǎng)關(guān)的IP地址叉谜,也不能改變由DHCP服務(wù)器分配的IP地址范圍停局。類似的董栽,DHCP服務(wù)器的IP地址默認(rèn)是10.0.2.3(使用x.x.x.3的模版)。
????下面圖7是一個(gè)運(yùn)行在virtualbox中基于win7系統(tǒng)的虛擬機(jī)的NAT網(wǎng)絡(luò)模式下IP地址的配置情況:
????如果你不想使用virtualbox的GUI界面編輯網(wǎng)絡(luò)設(shè)置推汽,你可以通過以下命令增加一個(gè)新的NAT網(wǎng)絡(luò):
????VBoxManage natnetwork add --netname natnet1 --network “192.168.22.0/24” --enable
這里:natnet1是NAT網(wǎng)絡(luò)的名稱歹撒,192.168.22.0/24是NAT網(wǎng)絡(luò)的地址
????如果你想配置虛擬機(jī)網(wǎng)絡(luò)適配器以便能通過VBoxManage使用NAT網(wǎng)絡(luò)模式诊胞,可以運(yùn)行以下命令:
????VBoxManage modifyvm VM_name --nic1 natnetwork
????這里:nic1是第一個(gè)虛擬網(wǎng)絡(luò)適配器(網(wǎng)絡(luò)控制接口)撵孤,natnetwork是VirtualBox網(wǎng)絡(luò)模式的名稱早直,VirtualBox網(wǎng)絡(luò)模式的名稱選項(xiàng)有:none, null, nat, natnetwork, bridged, intnet, hostonly, generic霞扬。應(yīng)用這些設(shè)置前需要先關(guān)閉虛擬機(jī)枫振。
????端口轉(zhuǎn)發(fā)是另外一個(gè)可以從這個(gè)窗口訪問和配置的選項(xiàng)粪滤。端口轉(zhuǎn)發(fā)可以用來配置從宿主機(jī)以及與宿主機(jī)同一物理網(wǎng)絡(luò)的其他主機(jī)訪問虛擬機(jī)內(nèi)操作系統(tǒng)上運(yùn)行的服務(wù)的路徑(詳見下文)杖小。正如你所看到的予权,在VirtualBox GUI中扫腺,NAT模式和NAT網(wǎng)絡(luò)模式的端口轉(zhuǎn)發(fā)設(shè)置的位置是不同的。NAT模式的端口轉(zhuǎn)發(fā)設(shè)置在VM > 設(shè)置 > 網(wǎng)絡(luò)中可用攒至,而NAT網(wǎng)絡(luò)模式的端口轉(zhuǎn)發(fā)設(shè)置可以在文件 > 首選項(xiàng) > 網(wǎng)絡(luò)中配置迫吐。這是因?yàn)镹AT模式的端口轉(zhuǎn)發(fā)規(guī)則對每個(gè)虛擬機(jī)來說是單獨(dú)的渠抹,而NAT網(wǎng)絡(luò)模式的端口轉(zhuǎn)發(fā)規(guī)則對多個(gè)虛擬機(jī)來說是共同的梧却,這些虛擬機(jī)的適配器都連接到相應(yīng)的NAT網(wǎng)絡(luò)放航。請參閱下面的 "端口轉(zhuǎn)發(fā) "部分中關(guān)于配置端口轉(zhuǎn)發(fā)的詳細(xì)信息广鳍。
4、橋接適配器
????該模式用于將虛擬機(jī)的虛擬網(wǎng)絡(luò)適配器與VirtualBox主機(jī)的物理網(wǎng)絡(luò)適配器相連吨铸。虛擬機(jī)的虛擬網(wǎng)絡(luò)適配器使用主機(jī)網(wǎng)絡(luò)接口進(jìn)行網(wǎng)絡(luò)連接诞吱。簡單地說房维,虛擬網(wǎng)絡(luò)適配器直接發(fā)送或接收網(wǎng)絡(luò)數(shù)據(jù)包咙俩,不使用額外的路由(譯者注:此時(shí)的虛擬機(jī)的地位就像是與宿主機(jī)在同一個(gè)局域網(wǎng)的一臺(tái)獨(dú)立的物理服務(wù)器一樣)阿趁。橋接網(wǎng)絡(luò)模式使用一個(gè)特殊的網(wǎng)絡(luò)過濾器驅(qū)動(dòng)程序坛猪,以過濾來自主機(jī)的物理網(wǎng)絡(luò)適配器的數(shù)據(jù)砚哆。
????這種網(wǎng)絡(luò)模式下,宿主機(jī)所在的物理本地局域網(wǎng)的服務(wù)器都能獨(dú)立卵史、對等地訪問跑在虛擬機(jī)上的服務(wù)器以躯。在VirtualBox中使用橋接網(wǎng)絡(luò)模式時(shí)忧设,你可以從虛擬機(jī)訪問宿主機(jī)址晕、宿主機(jī)所在物理網(wǎng)絡(luò)的其他主機(jī)以及外部網(wǎng)絡(luò)顿锰,包括互聯(lián)網(wǎng)硼控。虛擬機(jī)也可以被同一物理局域網(wǎng)中的宿主機(jī)以及其他主機(jī)(或虛擬機(jī))所訪問牢撼。
????如果你在宿主機(jī)上有多個(gè)物理網(wǎng)絡(luò)適配器熏版,你應(yīng)該在VirtualBox網(wǎng)絡(luò)設(shè)置中選擇正確的適配器纳决。在下面的圖8中阔加,你可以看到兩個(gè)物理網(wǎng)絡(luò)適配器--1個(gè)以太網(wǎng)適配器和1個(gè)Wi-Fi適配器胜榔。如果你對無線網(wǎng)絡(luò)適配器使用橋接模式夭织,你就不能在虛擬機(jī)操作系統(tǒng)中使用該Wi-Fi適配器的底層特性吠撮。例如,你不能選擇要連接的Wi-Fi網(wǎng)絡(luò)题禀,啟用監(jiān)控模式等迈嘹。相反秀仲,你需要連接到宿主機(jī)上的Wi-Fi網(wǎng)絡(luò)神僵。如果你必須在虛擬機(jī)的客戶操作系統(tǒng)中使用Wi-Fi適配器的所有功能挑豌,請使用USB Wi-Fi適配器和USB Pass-through功能氓英,詳細(xì)說明見Kali Linux的博文铝阐。
????在 VirtualBox 中吹害,使用橋接模式時(shí)它呀,虛擬機(jī)的虛擬網(wǎng)絡(luò)適配器的 IP 地址可以與宿主機(jī)的物理網(wǎng)絡(luò)適配器的 IP 地址在同一個(gè)網(wǎng)段纵穿。如果物理網(wǎng)絡(luò)中有DHCP服務(wù)器谓媒,虛擬機(jī)的虛擬網(wǎng)絡(luò)適配器將在橋接模式下自動(dòng)獲得IP地址(如果在虛擬機(jī)操作系統(tǒng)的網(wǎng)絡(luò)接口設(shè)置中設(shè)置了自動(dòng)獲得IP地址)句惯。因此,在橋接模式下運(yùn)行的虛擬網(wǎng)絡(luò)適配器的默認(rèn)網(wǎng)關(guān)與主機(jī)的默認(rèn)網(wǎng)關(guān)相同脯燃。讓我們看看一個(gè)有IP地址的簡單例子辕棚,如下圖9。
1唆香、物理網(wǎng)絡(luò)的地址段是:10.10.10.0
2、物理網(wǎng)絡(luò)的默認(rèn)網(wǎng)關(guān)IP地址是:10.10.10.1
3挽铁、DHCP服務(wù)器的IP地址是:10.10.10.1
4叽掘、宿主機(jī)的IP地址配置是:IP地址:10.10.10.72更扁;子網(wǎng)掩碼:255.255.255.0浓镜;默認(rèn)網(wǎng)關(guān):10.10.10.1
5膛薛、虛擬機(jī)的IP地址配置是:IP地址:10.10.10.91哄啄;子網(wǎng)掩碼:255.255.255.0增淹;默認(rèn)網(wǎng)關(guān):10.10.10.1
????有時(shí)你可能發(fā)現(xiàn)物理網(wǎng)絡(luò)中有多個(gè)網(wǎng)關(guān)加酵。你可以通過一個(gè)網(wǎng)關(guān)將宿主機(jī)接入某個(gè)必要的網(wǎng)絡(luò)猪腕,然后使用另一個(gè)網(wǎng)關(guān)將虛擬機(jī)接入其他的網(wǎng)絡(luò)陋葡。你也可以修改虛擬機(jī)的路由表腐缤,使用兩個(gè)網(wǎng)關(guān)接入到合適的網(wǎng)絡(luò)岭粤。正如你所見剃浇,橋接網(wǎng)絡(luò)模式是Virtualbox網(wǎng)絡(luò)設(shè)置中非常強(qiáng)大的選項(xiàng)虎囚,可以應(yīng)用在許多的場景下溜宽。
????混雜模式适揉。這種模式允許網(wǎng)絡(luò)適配器中轉(zhuǎn)所有接收到的流量嫉嘀,無論流量是尋址哪個(gè)適配器的剪侮。在正常模式下瓣俯,網(wǎng)絡(luò)適配器只接收包括該特定網(wǎng)絡(luò)適配器的MAC地址作為目標(biāo)地址的幀彩匕。在正常模式下驼仪,被尋址到與所選適配卡的MAC地址不同的MAC地址的幀(當(dāng)流量不是廣播時(shí))會(huì)被丟棄≈婀ィ混雜模式使一個(gè)物理網(wǎng)絡(luò)適配器有多個(gè)MAC地址成為可能座掘,允許所有傳入的流量通過主機(jī)的物理網(wǎng)絡(luò)適配器雹顺,到達(dá)虛擬機(jī)的虛擬網(wǎng)絡(luò)適配器嬉愧,該虛擬機(jī)有自己的MAC地址没酣,并被認(rèn)為是宿主機(jī)物理適配器上的另一個(gè)mac地址,即使該流量并不是尋址該特定虛擬機(jī)的虛擬網(wǎng)絡(luò)適配器偿衰。
????大多數(shù)無線網(wǎng)絡(luò)適配器不支持混雜模式下翎。與Wi-Fi適配器的橋接是通過以下方式完成的--VirtualBox在必須傳送到虛擬機(jī)的虛擬網(wǎng)絡(luò)適配器的以太網(wǎng)幀頭中替換了適當(dāng)?shù)腗AC地址(該流量必須使用主機(jī)Wi-Fi適配器的MAC地址)视事±混雜模式對網(wǎng)絡(luò)測試和安全審計(jì)很有用虏辫。你可以在VirtualBox網(wǎng)絡(luò)設(shè)置中啟用混雜模式砌庄,并用嗅探器監(jiān)測網(wǎng)絡(luò)流量鹤耍。
使用混雜模式有三個(gè)選項(xiàng):
1稿黄、Deny杆怕。任何不以虛擬機(jī)的虛擬網(wǎng)卡為目的地的流量都將被屏蔽。這個(gè)選項(xiàng)是默認(rèn)設(shè)置互纯。
2留潦、Allow VMs兔院。除了去向或來自于虛擬機(jī)的流量坊萝,其他流量都將被屏蔽十偶。
3扯键、Allow ALL荣刑。這一模式下沒有限制,虛擬機(jī)的網(wǎng)卡可以看到所有進(jìn)來爱只、出去的流量恬试。
????混雜模式不僅可以用于橋接網(wǎng)絡(luò)模式训柴,也可以用于NAT網(wǎng)絡(luò)模式幻馁,Internal網(wǎng)絡(luò)模式和Host-only適配器模式仗嗦。
5稀拐、Internal Network
????VirtualBox中的虛擬機(jī)網(wǎng)卡被配置成Internal network模式的時(shí)候贡翘,他們會(huì)被接入一個(gè)隔離的虛擬網(wǎng)絡(luò)鸣驱。在這個(gè)隔離的虛擬網(wǎng)絡(luò)中蝠咆,虛擬機(jī)之間可以互相通信踊东,但是他們不能和Virtualbox中的宿主機(jī)通信,不能和宿主機(jī)所在的局域網(wǎng)中的其他主機(jī)通信刚操,也不能外部網(wǎng)絡(luò)通信闸翅。宿主機(jī)或其他設(shè)備可以訪問接入到Internal Network中的虛擬機(jī)。Virtualbox中的Internal network可以用來模擬真實(shí)網(wǎng)絡(luò)菊霜。
????例如,你可以創(chuàng)建3個(gè)虛擬機(jī)鉴逞,每個(gè)虛擬機(jī)都有一個(gè)連接到internal network的虛擬網(wǎng)絡(luò)適配器(適配器1)记某。這些網(wǎng)絡(luò)適配器的IP地址是被定義為VirtualBox internal network的子網(wǎng)中的IP(你應(yīng)該手動(dòng)定義子網(wǎng))。其中一個(gè)虛擬機(jī)(VM1)也有2個(gè)虛擬網(wǎng)絡(luò)適配器构捡,第2個(gè)網(wǎng)絡(luò)適配器被配置為在NAT模式下運(yùn)行液南。VM1虛擬機(jī)被配置為一個(gè)路由器(創(chuàng)建路由器的最佳解決方案之一是安裝Linux和配置IPTABLES,但在VirtualBox網(wǎng)絡(luò)測試的情況下勾徽,第一次可以使用更簡單的路由解決方案)滑凉。
????如果 VM1 運(yùn)行internal network模式下的網(wǎng)絡(luò)適配器的 IP 地址在 VM2 和 VM3 的網(wǎng)絡(luò)設(shè)置中被設(shè)置為網(wǎng)關(guān), 那么VM2 和 VM3 就可以訪問外部網(wǎng)絡(luò)。
這個(gè)例子的網(wǎng)絡(luò)配置如下:
1畅姊、VM1:IP地址-192.168.23.1(internal network模式)咒钟;10.0.2.15(NAT模式);網(wǎng)關(guān)10.0.2.2(Virtualbox 內(nèi)置NAT設(shè)備的IP地址)
2若未、VM2:IP地址:192.168.23.2(internal network)朱嘴,網(wǎng)關(guān)-192.168.23.1
3、VM3:IP地址:192.168.23.3(internal network)陨瘩,網(wǎng)關(guān)-192.168.23.1
4、VirtualBox internal network 子網(wǎng)設(shè)置:192.168.23.0
詳見下圖10:
注意:您也可以部署這樣的虛擬基礎(chǔ)設(shè)施來進(jìn)行防火墻規(guī)則測試舌劳,但在連接外部網(wǎng)絡(luò)時(shí),更好的方案是為VM1的第2個(gè)虛擬網(wǎng)絡(luò)適配器設(shè)置橋接模式而不是NAT模式玫荣。
6甚淡、Host-only Adapter
????這種網(wǎng)絡(luò)模式用于在宿主機(jī)和虛擬機(jī)之間進(jìn)行通信。一個(gè)虛擬機(jī)可以與連接到host-only網(wǎng)絡(luò)的其他虛擬機(jī)通信捅厂,也可以與宿主機(jī)通信贯卦。VirtualBox宿主機(jī)可以訪問所有連接到host-only網(wǎng)絡(luò)的虛擬機(jī),如下圖11:
????VirutalBox Host-only虛擬網(wǎng)絡(luò)適配器在宿主機(jī)的操作系統(tǒng)中創(chuàng)建撵割,在Host-only網(wǎng)絡(luò)中使用,你可以在文件-宿主機(jī)網(wǎng)絡(luò)管理菜單中編輯這個(gè)virtual box網(wǎng)絡(luò)的設(shè)置辙芍,如下圖12:
????在我們的例子中,Host-only網(wǎng)絡(luò)的默認(rèn)網(wǎng)絡(luò)段是192.168.56.0/24故硅,宿主機(jī)上的虛擬網(wǎng)絡(luò)適配器的IP地址是192.168.56.1庶灿。你可以在適配器標(biāo)簽中手動(dòng)編輯這些IP地址〕孕疲可以通過勾選適當(dāng)?shù)膹?fù)選框來啟用或禁用DHCP服務(wù)器往踢。在DHCP服務(wù)器選項(xiàng)卡中,你可以設(shè)置DHCP服務(wù)器的IP地址徘层、網(wǎng)絡(luò)掩碼以及DHCP發(fā)布的IP地址范圍峻呕。
????虛擬機(jī)的虛擬網(wǎng)絡(luò)適配器在其IP配置中沒有網(wǎng)關(guān)趣效,因?yàn)閔ost-only模式不允許你連接到host-only網(wǎng)絡(luò)以外的任何設(shè)備山上。也可以創(chuàng)建1個(gè)以上的VirtualBox host-only網(wǎng)絡(luò)適配器,以便使用不同的host-only網(wǎng)絡(luò)--只需按下“創(chuàng)建”按鈕即可英支。如果不再需要host-only網(wǎng)絡(luò)佩憾,只需選擇適配器并點(diǎn)擊刪除即可。
7、Generic Driver
????這種網(wǎng)絡(luò)模式允許你共享通用網(wǎng)絡(luò)接口妄帘,用戶可以選擇一個(gè)擴(kuò)展包中分發(fā)的或VirtualBox自帶的合適的驅(qū)動(dòng)楞黄。
????Generic Driver模式有兩個(gè)可用的子模式:UDP隧道和VDE(虛擬分布式以太網(wǎng))網(wǎng)絡(luò)。
1抡驼、UDP隧道鬼廓。運(yùn)行在不同宿主機(jī)上的虛擬機(jī)可以通過使用現(xiàn)有的網(wǎng)絡(luò)基礎(chǔ)設(shè)施進(jìn)行透明的通信。
2致盟、VDE網(wǎng)絡(luò)碎税。虛擬機(jī)可以連接到 Linux 或 FreeBSD 主機(jī)上的虛擬分布式交換機(jī)。你需要從源代碼編譯VirtualBox來使用VDE網(wǎng)絡(luò)馏锡,因?yàn)闃?biāo)準(zhǔn)的VirtualBox包不包括這個(gè)功能雷蹂。
8、VirtualBox網(wǎng)絡(luò)模式比較
為了方便杯道,我們使用下邊對Virtualbox支持的各網(wǎng)絡(luò)模式進(jìn)行了一個(gè)匯總總結(jié)匪煌,如下圖14:
9党巾、端口轉(zhuǎn)發(fā)
????端口轉(zhuǎn)發(fā)是將尋址向某個(gè)IP地址和端口的流量轉(zhuǎn)發(fā)到另一個(gè)不同的IP地址和端口的處理操作萎庭。服務(wù)器和其他路由設(shè)備上可以使用專門應(yīng)用程序來實(shí)現(xiàn)端口轉(zhuǎn)發(fā)。端口轉(zhuǎn)發(fā)最常用的一個(gè)應(yīng)用場景是為隱藏在NAT后邊的特定的網(wǎng)絡(luò)設(shè)備提供外部網(wǎng)絡(luò)訪問入口齿拂。配置完端口轉(zhuǎn)發(fā)規(guī)則后驳规,客戶端可以通過連接路由器(或主機(jī))外部IP地址和專用端口來訪問特定的服務(wù)。
????網(wǎng)絡(luò)包會(huì)首先被路由器上的一個(gè)應(yīng)用程序所截獲署海,然后這個(gè)應(yīng)用程序會(huì)讀取網(wǎng)絡(luò)包頭中的目的IP地址和端口號(hào)(IP包頭达舒,含有TCP或UDP段的包頭)。如果包頭中目的IP地址和端口號(hào)的組合能與端口轉(zhuǎn)發(fā)規(guī)則集合中的某個(gè)條件匹配上叹侄,路由器程序就會(huì)重寫包頭中的信息(IP地址和/或端口號(hào))巩搏,并根據(jù)端口轉(zhuǎn)發(fā)規(guī)則將包/段發(fā)送給另一個(gè)網(wǎng)絡(luò)接口。
????默認(rèn)情況下趾代,VirtualBox宿主機(jī)和其他局域網(wǎng)中的主機(jī)不能訪問網(wǎng)絡(luò)適配器被設(shè)置成NAT或NAT Network模式的VirtualBox虛擬機(jī)贯底,但是VirutalBox提供了內(nèi)置的端口轉(zhuǎn)發(fā)特性支持了這種類型的訪問。
四撒强、Example 1 – SSH 訪問
????現(xiàn)在讓我們考慮配置連接到VirtualBox虛擬機(jī)的端口轉(zhuǎn)發(fā)的示例禽捆,使用的例子是連接到運(yùn)行在Ubuntu Linux虛擬機(jī)上的SSH服務(wù)器,該虛擬機(jī)通過NAT模式連接到網(wǎng)絡(luò)飘哨。你可以在這篇博文中閱讀如何在VirtualBox上安裝Ubuntu胚想。(https://www.nakivo.com/blog/install-ubuntu-on-virtualbox-virtual-machine/),輸入數(shù)據(jù):
1芽隆、宿主機(jī)IP地址:10.10.10.72(一個(gè)物理的NIC)
2浊服、Ubuntu虛擬機(jī)IP地址:10.0.2.15(NAT模式)
3统屈、用戶名稱:user1
操縱步驟如下:
1、在Ubuntu虛擬機(jī)上安裝SSH服務(wù)器
????apt-get install openssh-server
2牙躺、編輯SSH服務(wù)器配置文件
????vim /etc/ssh/sshd_config
3愁憔、去掉下邊語句的注釋,打開使用密碼認(rèn)證的功能
????PasswordAuthentication yes
4孽拷、重啟SSH進(jìn)程服務(wù)
????/etc/init.d/ssh restart
5吨掌、確認(rèn)SSH服務(wù)器正常工作并嘗試從localhost(Ubuntu虛擬機(jī))連接到SSH服務(wù)器
6、如果一切順利脓恕,你就可以開始在virtualbox中配置端口轉(zhuǎn)發(fā)了
????正如你所記得的膜宋,你應(yīng)該打開虛擬機(jī)設(shè)置,選擇網(wǎng)絡(luò)部分炼幔。選擇被配置為在NAT模式下工作的虛擬網(wǎng)絡(luò)適配器秋茫,展開高級設(shè)置,點(diǎn)擊端口轉(zhuǎn)發(fā)按鈕江掩。點(diǎn)擊 "+"圖標(biāo)学辱,在虛擬機(jī)的VirtualBox網(wǎng)絡(luò)設(shè)置中添加一個(gè)新的端口轉(zhuǎn)發(fā)規(guī)則乘瓤,如下圖15:
????SSH服務(wù)器默認(rèn)監(jiān)聽22端口。讓我們創(chuàng)建一個(gè)規(guī)則允許你將virtual box宿主機(jī)8022端口的連接請求轉(zhuǎn)發(fā)到Ubuntu虛擬機(jī)SSH服務(wù)器監(jiān)聽的22端口衙傀。首先抬吟,你可以創(chuàng)建一條規(guī)則允許來自Virtualbox宿主機(jī)的連接,如下圖16:
VirtualBox GUI中配置端口轉(zhuǎn)發(fā)規(guī)則的窗口視圖如下圖17所示:
????在Virtualbox的宿主機(jī)上打開SSH客戶端(如windows下的PuTTY)并連接127.0.0.1的8022端口。
????如果你創(chuàng)建了一個(gè)類似的端口轉(zhuǎn)發(fā)規(guī)則聪建,其中將定義VirtualBox宿主機(jī)的物理網(wǎng)絡(luò)適配器的真實(shí)IP地址钙畔,而不是localhost的IP地址(127.0.0.1),那么宿主機(jī)所在物理網(wǎng)絡(luò)中的其他主機(jī)將能夠通過SSH連接到VirtualBox主機(jī)的8022端口來訪問Ubuntu 虛擬機(jī)金麸。在這個(gè)例子中擎析,VirtualBox宿主機(jī)上的物理網(wǎng)卡的IP地址是10.10.10.72。
????在你的virtualbox宿主機(jī)或同一局域網(wǎng)的其他主機(jī)上打開一個(gè)SSH客戶端揍魂,連接到你的virtualbox宿主機(jī)IP的8022端口,你就可以訪問virtualbox上的虛擬機(jī)了棚瘟。
五现斋、Example 2 – HTTP access
????如果你想在你的虛擬機(jī)上部署一個(gè)Web服務(wù)器,并提供從外部訪問你的網(wǎng)站偎蘸,你可以添加另一個(gè)端口轉(zhuǎn)發(fā)規(guī)則庄蹋。讓我們考慮如何配置該端口轉(zhuǎn)發(fā)規(guī)則瞬内,以便從VirtualBox宿主機(jī)和連接到物理局域網(wǎng)(LAN)的其他機(jī)器訪問部署在Ubuntu虛擬機(jī)上的網(wǎng)站。在這個(gè)例子中蔓肯,使用Apache作為web服務(wù)器遂鹊。
????首先,在Virtualbox上運(yùn)行的Ubuntu虛擬機(jī)部署Apache軟件蔗包。
????apt-get install apache2
????默認(rèn)情況下Ubuntu的ufw防火墻是關(guān)閉的秉扑。如果你Ubuntu虛擬機(jī)上的防火墻是打開的,要確钡飨蓿可以訪問TCP80端口舟陆。
????安裝完Apache后,在Ubuntu虛擬機(jī)上打開一個(gè)Web瀏覽器耻矮,輸入http://127.0.0.1訪問apache的默認(rèn)頁面秦躯。如果一切順利,我們將能看到Apache的默認(rèn)頁面裆装。
????這意味著踱承,現(xiàn)在你可以在VirtualBox網(wǎng)絡(luò)設(shè)置中配置一個(gè)端口轉(zhuǎn)發(fā)規(guī)則,用于訪問Ubuntu虛擬機(jī)上托管的網(wǎng)站哨免。打開端口轉(zhuǎn)發(fā)設(shè)置窗口茎活,進(jìn)入虛擬機(jī)設(shè)置>網(wǎng)絡(luò)>[選擇你的適配器]>端口轉(zhuǎn)發(fā)(與上述解釋類似)。你可以通過以下方式添加一個(gè)新規(guī)則琢唾,如下圖19:
????在宿主機(jī)或連接到物理網(wǎng)絡(luò)的任何其他機(jī)器上打開Web瀏覽器,輸入VirtualBox宿主機(jī)的IP地址和上面創(chuàng)建的端口轉(zhuǎn)發(fā)規(guī)則中定義的端口:
????http://10.10.10.72:8080
????在當(dāng)前的例子中:10.10.10.72是VirtualBox宿主機(jī)的IP地址采桃,8080是VirtualBox宿主機(jī)上監(jiān)聽的TCP端口懒熙。配置端口轉(zhuǎn)發(fā)的結(jié)果顯示在下面的圖20上:
????你也可以為通過RDP普办、FTP和其他協(xié)議訪問虛擬機(jī)創(chuàng)建類似的規(guī)則工扎。為虛擬網(wǎng)絡(luò)適配器在NAT網(wǎng)絡(luò)模式下工作的虛擬機(jī)配置端口轉(zhuǎn)發(fā)的功能類似(見上面解釋NAT網(wǎng)絡(luò)模式的部分)。
六衔蹲、結(jié)論
????VirtualBox是一個(gè)強(qiáng)大的虛擬化解決方案肢娘,它很靈活,提供了廣泛的網(wǎng)絡(luò)設(shè)置踪危。每個(gè)虛擬機(jī)最多可以使用8個(gè)虛擬網(wǎng)絡(luò)適配器蔬浙,每個(gè)網(wǎng)絡(luò)適配器都可以被模擬成相應(yīng)型號(hào)的真實(shí)英特爾和AMD網(wǎng)絡(luò)接口控制器(NIC)。VirtualBox網(wǎng)絡(luò)適配器設(shè)置允許你改變每個(gè)虛擬網(wǎng)卡的MAC地址贞远,插入或拔出虛擬網(wǎng)線畴博,并選擇網(wǎng)絡(luò)模式。為虛擬網(wǎng)絡(luò)適配器設(shè)置網(wǎng)絡(luò)模式是VirtualBox網(wǎng)絡(luò)設(shè)置中最有趣和重要的部分之一蓝仲。有六種網(wǎng)絡(luò)模式俱病,每一種都可以用于不同的使用情況官疲。可以配置端口轉(zhuǎn)發(fā)亮隙,以便外部服務(wù)器訪問網(wǎng)絡(luò)適配器以NAT或NAT網(wǎng)絡(luò)模式運(yùn)行的虛擬機(jī)途凫。
????今天的blog已經(jīng)涵蓋了VirtualBox所有的網(wǎng)絡(luò)設(shè)置,如果你想了解更多關(guān)于VirtualBox的信息溢吻,歡迎你查看我們關(guān)于VirtualBox使用维费、安裝VirtualBox擴(kuò)展包和更新VirtualBox的博文。你也可以閱讀關(guān)于VirtualBox與VMware和Hyper-V比較的博文促王,其中也討論了這些虛擬化平臺(tái)的網(wǎng)絡(luò)設(shè)置犀盟。
翻譯自NAKIVO Blog?,文章地址:https://www.nakivo.com/blog/virtualbox-network-setting-guide/