Linux之虛擬機(jī)和主機(jī)互通實(shí)現(xiàn)方式
前言
諸如以下問題,解決問題的思路都是一樣的,看完此文后都能找到答案:
主機(jī)為何 ping 不通 虛擬機(jī)?請檢查是否在同一網(wǎng)段?Linux 防火墻是否為開啟狀態(tài)?
虛擬機(jī)為何 ping 不通主機(jī)?請檢查是否在同一網(wǎng)段?Windows 防火墻是否已經(jīng)關(guān)閉?
主機(jī)能 ping 通虛擬機(jī),但是虛擬機(jī) ping 不通主機(jī)?Windows 防火墻是否已經(jīng)關(guān)閉?
虛擬機(jī)和主機(jī)能互相 ping 通,但 ping 不通外網(wǎng)?檢查 VMware 虛擬網(wǎng)絡(luò)編輯器中對應(yīng)的虛擬網(wǎng)卡是否已設(shè)置為同一網(wǎng)段?檢查 Linux DNS 是否和 物理機(jī) DNS 設(shè)置成一致?
等等等等。。。
在三種網(wǎng)絡(luò)配置方式中(橋接、NAT、host_only),最容易出錯(cuò)的也就是 NAT 模式,本文將會介紹三種網(wǎng)絡(luò)配置模式下虛擬機(jī)和主機(jī)的互通,并且會著重介紹 NAT 模式下的互通。
注意:NAT模式下,如果不打算讓 Linux 連接互聯(lián)網(wǎng),而只需要 Linux 和物理機(jī)互通的話,就從第一個(gè)大標(biāo)題下的第二步開始配置就可以了。
一、虛擬機(jī)配置的網(wǎng)絡(luò)連接方式為 NAT
簡述:
NAT 模式下的虛擬機(jī)只需要配置在和主機(jī)同一個(gè)網(wǎng)段,即可和主機(jī)進(jìn)行通訊。
而虛擬機(jī)此時(shí)要連接互聯(lián)網(wǎng)的話,還需要把VMware 的虛擬網(wǎng)絡(luò)編輯器中的 NAT 網(wǎng)絡(luò)也設(shè)置為同一個(gè)網(wǎng)段才行。
主機(jī)和虛擬機(jī)的期望配置如下:
- 主機(jī):192.168.1.51
- 虛擬機(jī):192.168.1.52
- 子網(wǎng)掩碼:255.255.255.0
- 網(wǎng)關(guān):192.168.1.X
配置之前,檢查 Linux 虛擬機(jī)是否已設(shè)置為 NAT 模式:
在這個(gè)地方選擇 NAT 模式,或者在自定義里選擇 VMnet8 都是可以的。
但是也有例外情況,如果你打開虛擬網(wǎng)絡(luò)適配器的時(shí)候,發(fā)現(xiàn)自己 NAT 模式下的虛擬網(wǎng)卡名字不是 VMnet8,而是 VMnetN,那么就進(jìn)入 VMware 虛擬機(jī)設(shè)置,再網(wǎng)絡(luò)適配器設(shè)置中選擇自定義
,然后再選擇 VMnetN 就可以了。(N 代表一個(gè)數(shù)字)
第一步:配置虛擬網(wǎng)絡(luò)編輯器
打開 VMware Workstation --> 編輯 --> 虛擬網(wǎng)絡(luò)編輯器
眾所周知,一旦在安裝 Linux 的時(shí)候選擇了以 NAT 方式進(jìn)行通信,那么Linux 和主機(jī)建立連接所使用的網(wǎng)卡就是虛擬網(wǎng)卡 VMnet8。
如圖所示,我有兩張?zhí)摂M網(wǎng)卡分別是 VMnet1 和 VMnet8,此時(shí)我以管理員身份配置 VMnet8 就可以了。
下一步。如圖所示,一共有四個(gè)步驟需要依次配置。
- 檢查 Windows 是否勾選了將主機(jī)虛擬適配器連接到此網(wǎng)絡(luò),勾選了此選項(xiàng),Windows 的“網(wǎng)絡(luò)連接”界面中才會出現(xiàn) VMnet8 這張?zhí)摂M網(wǎng)卡。
- 將子網(wǎng) IP 這一欄配置到 1 網(wǎng)段(和物理機(jī)中的 VMnet8 同一個(gè)網(wǎng)段),所以這里將其配置成 192.168.1.0
- 子網(wǎng)掩碼和主機(jī)保持一致就行
下一步,進(jìn)入 NAT 設(shè)置,配置網(wǎng)關(guān):
網(wǎng)關(guān)按需配置在同一個(gè)網(wǎng)段即可,這里我配置成 192.168.1.2
一般來說大眾的做法是,Linux 的網(wǎng)關(guān)需要和 Windows 一致,所以也可以把網(wǎng)關(guān)設(shè)置為 192.168.1.5。
配置完成之后點(diǎn)擊確定。
在主配置界面點(diǎn)擊應(yīng)用,再點(diǎn)擊確定。
第二步:配置虛擬網(wǎng)卡 VMnet8
進(jìn)入如圖所示的界面后
右鍵VMnet8 --> 屬性 --> 配置 IPV4 --> 選擇使用下面的 IP 地址一欄,然后手動填入如圖所示的參數(shù):
- 說明1:子網(wǎng)掩碼各位可以按需填寫,我這里填 255.255.255.0,大家伙跟著我填就行。
- 說明2:保持在同一網(wǎng)段說的是什么呢?在上圖中,IP 地址就處于 192.168.1 網(wǎng)段,網(wǎng)關(guān)也必須處于同一個(gè)網(wǎng)段下,因此網(wǎng)關(guān)可以和 Linux 配置成一模一樣,也可以配置成任意的處于同一網(wǎng)段下的網(wǎng)關(guān)。
- 說明3:虛擬機(jī)要想訪問外網(wǎng),需要設(shè)置 DNS 用于解析 IP 和 域名(把 Windows 和 Linux 的 DNS 設(shè)置為同一個(gè)也是可以的。一般都是設(shè)置為同一個(gè) DNS)。上圖的 DNS 是阿里的 DNS,大伙兒按需配置就行。
注意:有的 Windows 系統(tǒng)硬件比較老舊,建議配置完之后重啟一遍 VMnet8,這個(gè)也是對老硬件以示尊重 - _ -
第三步:打開 Linux 虛擬機(jī),配置 IP 和網(wǎng)關(guān)
(1)使用ifconfig
命令確認(rèn)需要使用哪張網(wǎng)卡來配置網(wǎng)關(guān)
正常來說,Linux 剛裝好的時(shí)候,使用 ifconfig 查看網(wǎng)卡的時(shí)候是沒有 IP 地址的。這里我們使用第一張網(wǎng)卡 ens34 進(jìn)行配置。
(2)配置 ifcfg-ens34 這個(gè)配置文件
該配置文件為 ens34 這個(gè)網(wǎng)卡的配置文件,該配置文件存放于 /etc/sysconfig/network-scripts/
下:
使用 vim 命令編輯該文本,鍵入如下所示的代碼:
其中:IPADDR、PREFIX、GATEWAY、DNS1 為必填項(xiàng)。
- 說明1:IPADDR 是綁定在該網(wǎng)卡上的 IP 地址,通過 ping 該 IP 地址,就能確定該網(wǎng)卡是否連通。這里需要配置成和物理機(jī)(也就是 VMnet8)處于同一網(wǎng)段。
- 說明2:GATEWAY(網(wǎng)關(guān))也需要配置成和 VMnet8 處于同一網(wǎng)段。
- 說明3:DNS1 需要配置成和 VMnet8 一模一樣。
(3)配置完成之后,重啟 network 服務(wù)使網(wǎng)卡配置文件生效
- Linux 6.x 使用
service restart network
- Linux 7.x 使用
systemctl restart network.service
(4)檢查 IP 地址和默認(rèn)網(wǎng)關(guān)
- 使用 ifconfig 查看你修改的網(wǎng)卡是否已經(jīng)綁定上了 192.168.1.52 這個(gè) IP。
- 使用 route -n 命令檢查當(dāng)前所使用的默認(rèn)網(wǎng)關(guān)
可以看到配置好后,路由表中顯示默認(rèn)網(wǎng)關(guān)為 192.168.1.2
第四步:關(guān)閉 Windows 防火墻或者開放防火墻中的特定端口
自己上網(wǎng)去百度如何關(guān)閉,這里不再贅述。
第五步:嘗試在 Windows 上 ping 虛擬機(jī)(如果發(fā)現(xiàn) ping 不通,請轉(zhuǎn)到 額外 1中查看)
如果像下圖中一樣能 ping 通,那請到下一步。
第六步:嘗試在虛擬機(jī)上 ping Windows
如果不能 ping 通,請將 Windows 防火墻關(guān)閉后再試
如圖所示是能 ping 通時(shí)候的樣子:
第七步:測試是否可以連接外網(wǎng)
測試是否可以連接百度:ping -c 5 www.baidu.com
如圖所示是可以 ping 通:
額外1:
設(shè)置完上述所有的步驟之后,如果 Windows 無法 ping 通虛擬機(jī),可能是因?yàn)?Linux 內(nèi)置防火墻的問題。
- 關(guān)閉防火墻:
systemctl stop firewalld.service
- 如果要永久關(guān)閉防火墻,使用命令
systemctl disable firewalld.service
二、虛擬機(jī)配置的網(wǎng)絡(luò)連接方式為橋接
在橋接模式下,虛擬機(jī)與主機(jī)之間是同等地位的,就相當(dāng)于在同一個(gè)局域網(wǎng)
下添加了一臺 獨(dú)立的主機(jī),虛擬機(jī)和主機(jī)ip地址需要在同一個(gè)網(wǎng)段,并且虛
擬機(jī)要占據(jù)局域網(wǎng)中的一個(gè)ip地址。此時(shí),不管是虛擬機(jī)和虛擬機(jī)之間還是
虛擬機(jī)和其他真實(shí)主機(jī)之間,只要處于同一個(gè)網(wǎng)段,他們之間都可以進(jìn)行相互通信。
如此推理:如果你將虛擬機(jī)的 IP 地址設(shè)置為局域網(wǎng)中一個(gè)正在使用的 IP 地址,那么你在測試 Windows 是否能 ping 通虛擬機(jī)的時(shí)候,局域網(wǎng)內(nèi)的另一臺計(jì)算機(jī)就會和你的虛擬機(jī)發(fā)生 IP 地址互相搶占的情況。因此,在配置 Linux IP 地址時(shí),請確認(rèn)該 IP 地址在局域網(wǎng)中沒有被占用。
讓虛擬機(jī)和物理機(jī)連通的思路和 NAT 模式下的思路一樣,重點(diǎn)已經(jīng)標(biāo)紅顯示了。這里我就不測試了,因?yàn)槲覒?/s> 。
三、虛擬機(jī)配置的網(wǎng)絡(luò)連接方式為 Host_only(僅主機(jī)模式)
hostonly 模式下,虛擬機(jī)和主機(jī)之間少了地址轉(zhuǎn)換服務(wù)(NAT),所以虛擬機(jī)只可以單獨(dú)訪問主機(jī),且不能訪問互聯(lián)網(wǎng)。
此時(shí),虛擬機(jī)要想和主機(jī)互通,配置 VMnet1 這張?zhí)摂M網(wǎng)卡,讓 VMnet1 的 IP 地址和 虛擬機(jī)的 IP 地址處于同一網(wǎng)段就可以了。
讓虛擬機(jī)和物理機(jī)連通的思路和 NAT 模式下的思路一樣,互通重點(diǎn)已標(biāo)紅。所以這里也不寫測試了。
四、其他說明
如果安裝 Linux 的時(shí)候預(yù)裝了圖形界面的小伙伴,可以在第一個(gè)大標(biāo)題的第三步使用 startx
命令進(jìn)入可視化圖形界面,對 IP、網(wǎng)關(guān)、子網(wǎng)掩碼、DNS 進(jìn)行修改。
五、在運(yùn)維時(shí)候的實(shí)際應(yīng)用
場景1
產(chǎn)品經(jīng)理在下班后和你悄悄說:這些個(gè)客戶真的把自己當(dāng)成上帝,把我們當(dāng)牛馬一樣使,這樣子不行啊,我們太被動了!要不這樣吧,小王你幫我個(gè)忙,明天你到機(jī)房里去,給客戶的服務(wù)器安一個(gè)病毒包,等項(xiàng)目上線的時(shí)候,客戶一開機(jī)就把他心態(tài)給搞崩。
于是,明兒一早你屁顛屁顛的來到機(jī)房,接了一根網(wǎng)線到交換機(jī)上。
結(jié)果發(fā)現(xiàn)連不上 Linux 系統(tǒng)?這下子尷尬了。
如何把客戶解決掉?方法如下:
把客戶解決的第一步,是個(gè)神仙都得讓自己的電腦先連上服務(wù)器對不對?
公司的服務(wù)器中一般都會有好幾塊網(wǎng)卡,而真正用到的網(wǎng)卡往往只有那么幾塊。
這時(shí)候,你可以找一塊閑置的網(wǎng)卡,比如現(xiàn)在有一塊閑置網(wǎng)卡名為 eth1。那么在該網(wǎng)卡上綁定上一個(gè)臨時(shí)的、且和自己的筆記本的虛擬網(wǎng)卡在同一個(gè)網(wǎng)段的 IP 地址,并且自己的筆記本上也要手動設(shè)置一個(gè)和
Linux eth1 在同一個(gè)網(wǎng)段的 IP 地址。這樣你就可以通過網(wǎng)線,使筆記本連接上服務(wù)器了。
期望配置:
Windows VMnet1配置: IP: 10.10.10.1 掩碼:255.255.255.0 Linux 空閑網(wǎng)卡配置: IP: 10.10.10.10 掩碼:255.255.255.0
配置網(wǎng)卡有兩種方式:
方式一:臨時(shí)配置(重啟機(jī)器后會失效)
一般來說,筆記本和服務(wù)器連通使用 host-only 模式就可以了,所以Windows上要設(shè)置的網(wǎng)卡是 VMnet1。
Linux 使用命令行方式直接配置,不修改配置文件。
ifconfig eth1 10.10.10.10 netmask 255.255.255.0
筆記本網(wǎng)卡設(shè)置好后,進(jìn)入 Linux 終端界面, ping VMnet1 上設(shè)置的 IP,來確認(rèn)網(wǎng)絡(luò)是否連通。
方式二:永久配置
直接修改配置文件。
在 /etc/sysconfig/network-scripts/ 目錄下,存放著關(guān)于 Linux 機(jī)器中的網(wǎng)卡配置文件。
第一步:新建一個(gè)配置文件名為 ifcfg-eth1
該配置文件作為空閑網(wǎng)卡 eth1 的配置文件。
cp ifcfg-eth0 ifcfg-eth1
在配置 ifcfg-eth1 之前可以先把 eth1 的硬件地址拷貝下來。硬件地址(HWaddr)可以使用 ifconfig 命令查看。
第二步:修改配置文件 ifcfg-eth1
vi ifcfg-eth1
修改如圖所示的幾項(xiàng):
- DEVICE(設(shè)備名) 設(shè)置為 eth1
- ONBOOT(是否自啟)設(shè)為 yes
把 UUID 刪除,因?yàn)椴煌W(wǎng)卡的 UUID 是不一樣的,此項(xiàng)為非必填項(xiàng)。
- NM_CONTROLLED(是否可通過網(wǎng)絡(luò)控制)默認(rèn)就行
- BOOTPROTO(網(wǎng)絡(luò)分配方式)有 static、dhcp、none 幾種,none 代表由用戶自己決定如何分配。本例中默認(rèn)配成 none 就行。
- HWADDR(硬件地址)換成自己需要替換的網(wǎng)卡的硬件地址即可(為非必填項(xiàng))
- IPADDR(IP地址)你需要綁定哪個(gè) IP 到網(wǎng)卡上,就在這里填
- PREFIX(子網(wǎng)掩碼)默認(rèn)24位
- GATEWAY(網(wǎng)關(guān))一般和 IP 地址設(shè)置為同一個(gè)網(wǎng)段,本例中設(shè)置為 10.10.10.1
- DEFROUTE(默認(rèn)路由) 可以刪掉。為非必填項(xiàng)。
- IPV4_FAILURE_FATAL(IPV4獲取失敗的話就禁用當(dāng)前網(wǎng)卡)刪掉。為非必填項(xiàng)。
- IPV6INIT(是否打開IPV6)相關(guān)設(shè)置可以刪掉。
- NAME 本例中改為 System eth1,這里按需更改。
第三步:重啟網(wǎng)絡(luò)服務(wù)
重啟 network 服務(wù)之后,才可以使用 ifconfig 命令查看到新增加的 eth1 網(wǎng)卡配置。
- Linux 6.x 使用命令
service network restart
- Linux 7.x 使用命令
systemctl restart network.service
設(shè)置完成之后,可以通過在 Linux 終端 ping Windows 虛擬網(wǎng)卡VMnet1 的 IP 地址的方式,來測試 Linux 是否和 Windows 連通。
場景2
現(xiàn)在公司有一套成熟的軟件系統(tǒng),需要把系統(tǒng)分布式部署在3臺虛擬機(jī)上。由于考慮到部署的過程中需要用到y(tǒng)um來安裝許多軟件,因此需要讓虛擬機(jī)暫時(shí)先連上互聯(lián)網(wǎng)。
三臺虛擬機(jī)的IP分別為:192.168.0.44、46、47
路由器分配出可上網(wǎng)的網(wǎng)段為192.168.1 網(wǎng)段。
此時(shí),需要讓筆記本在聯(lián)網(wǎng)的同時(shí)能訪問內(nèi)網(wǎng)虛擬機(jī),那么筆記本的真實(shí)網(wǎng)卡配置如下:
需要配置一個(gè)192.168.0 網(wǎng)段的IP 和一個(gè) 192.168.1 網(wǎng)段的IP,同時(shí)綁定到真實(shí)網(wǎng)卡上。
第二步: 配置IP 地址綁定到網(wǎng)卡 eth0上
說明:該操作是讓虛擬機(jī)能夠連通外網(wǎng)。
- 方法一:臨時(shí)綁定IP地址(重啟后失效)
到其中一臺虛擬機(jī)的終端輸入命令:
ifconfig eth0:1 192.168.1.130 netmask 255.255.255.0
然后添加一條可以訪問任意 IP的路由:
route add default gw 192.168.1.1
需要注意的是,192.168.1.130 這個(gè) IP 在重啟 Linux 后就失效了。網(wǎng)關(guān)同樣如此。
如果機(jī)器有默認(rèn)的網(wǎng)關(guān),導(dǎo)致連不上互聯(lián)網(wǎng),可以先臨時(shí)刪除默認(rèn)的網(wǎng)關(guān)。
route del default gw xxx.xxx.xxx.xxx
同樣的,在另外兩臺虛擬機(jī)上也執(zhí)行上面的操作。不過不能和 192.168.1.130 沖突。
- 方法二:設(shè)置永久性配置
如果需要使配置的 IP 永久生效,我們需要在虛擬機(jī)的
/etc/sysconfig/network-scripts/ifcfg-eth0 中配置
IPADDR2=192.168.1.xxx 和 NETMASK2=255.255.255.0。
修改完成之后需要重啟 network 服務(wù)。
最后使用 route add default gw 192.168.1.1 就可以連通外網(wǎng)了。
注意:上述兩種方法中,由于新增的默認(rèn)網(wǎng)關(guān) 192.168.1.1 沒有添加進(jìn)配置文件,所以機(jī)器重啟后就失效了,每次重啟機(jī)器后要再次添加默認(rèn)網(wǎng)關(guān)。
如果要永久添加默認(rèn)網(wǎng)關(guān),則執(zhí)行下列命令:
vim /etc/sysconfig/network-scripts/route-eth0
然后添加如下代碼:
0.0.0.0/0 via 192.168.1.1 metric 20 或者 0.0.0.0/0 via 192.168.1.1 dev eth0
保存后重啟網(wǎng)絡(luò)服務(wù):systemctl restart network.service
一句話總結(jié)
要想讓虛擬機(jī)能和主機(jī)互通,一定要讓 虛擬機(jī) 和 主機(jī) 中的 IP、網(wǎng)關(guān)
處在同一個(gè)網(wǎng)段下。
- 如果是橋接模式,就讓主機(jī)的真實(shí)網(wǎng)卡和虛擬機(jī)的網(wǎng)卡處于同一網(wǎng)段下。
- 如果是 NAT 模式,就讓主機(jī)的 VMnet8 和 虛擬機(jī)的網(wǎng)卡處在同一網(wǎng)段下。
- 如果是 host-only 模式,就讓主機(jī)的 VMnet1 和 虛擬機(jī)的網(wǎng)卡處在同一網(wǎng)段下。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux Windows下設(shè)置定時(shí)執(zhí)行任務(wù)的方法
這篇文章主要介紹了Linux、windows下 設(shè)置定時(shí)執(zhí)行任務(wù)的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09使用nginx來負(fù)載均衡 本文在window與linux下配置nginx實(shí)現(xiàn)負(fù)載
使用nginx來負(fù)載均衡,本文在window與linux下配置nginx實(shí)現(xiàn)負(fù)載2010-03-03Linux環(huán)境下Apache服務(wù)器配置二級域名的方法詳解
這篇文章主要介紹了Linux環(huán)境下Apache服務(wù)器配置二級域名的方法,結(jié)合具體實(shí)例形式較為詳細(xì)的分析了Linux環(huán)境下Apache服務(wù)器配置二級域名的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2019-07-07Linux服務(wù)器升級GLIBC失敗導(dǎo)致shell命令不可用的情況怎么處理
在某些linux系統(tǒng)里面本身自帶的glibc版本過低,如果你直接更新系統(tǒng)的glibc版本會導(dǎo)致系統(tǒng)崩潰,shell中的大部分命令(ls,cat,rm,cp,ln,scp,vi,yum等)都執(zhí)行報(bào)錯(cuò),嘗試新的ssh連接時(shí)提示拒絕連接,筆者最近不幸遇到了這個(gè)問題2024-11-11Linux曝出Sudo提權(quán)漏洞 任意用戶亦可運(yùn)行root命令
近期曝出的一個(gè)提權(quán)漏洞,卻直指 sudo 的一個(gè)安全策略隱患 —— 即便配置中明確不允許 root 用戶訪問,該漏洞仍可允許惡意用戶或程序,在目標(biāo) Linux 系統(tǒng)上以 root 用戶身份執(zhí)行任意命令2019-10-10使用VMware 15 安裝虛擬機(jī)和使用CentOS 8的步驟詳解
這篇文章主要介紹了使用VMware 15 安裝虛擬機(jī)和使用CentOS 8的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01