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