0


Linux 虚拟机和主机互通 [万能方法]

VMware Linux 虚拟机和主机互通 [万能方法]

前言:诸如以下问题,解决问题的思路都是一样的,看完此文后都能找到答案:

主机为何 ping 不通 虚拟机?

请检查是否在同一网段?Linux 防火墙是否为开启状态?

虚拟机为何 ping 不通主机?

请检查是否在同一网段?Windows 防火墙是否已经关闭?

主机能 ping 通虚拟机,但是虚拟机 ping 不通主机?

Windows 防火墙是否已经关闭?

虚拟机和主机能互相 ping 通,但 ping 不通外网?

检查 VMware 虚拟网络编辑器中对应的虚拟网卡是否已设置为同一网段?检查 Linux DNS 是否和 物理机 DNS 设置成一致?

等等等等。。。

在三种网络配置方式中(桥接、NAT、host_only),最容易出错的也就是 NAT 模式,本文将会介绍三种网络配置模式下虚拟机和主机的互通,并且会着重介绍 NAT 模式下的互通。

注意:NAT模式下,如果不打算让 Linux 连接互联网,而只需要 Linux 和物理机互通的话,就从第一个大标题下的第二步开始配置就可以了。


文章目录


一、虚拟机配置的网络连接方式为 NAT

简述:NAT 模式下的虚拟机只需要配置在和主机同一个网段,即可和主机进行通讯。而虚拟机此时要连接互联网的话,还需要把VMware 的虚拟网络编辑器中的 NAT 网络也设置为同一个网段才行。

主机和虚拟机的期望配置如下:

主机:192.168.1.51
虚拟机:192.168.1.52
子网掩码:255.255.255.0
网关:192.168.1.X

配置之前,检查 Linux 虚拟机是否已设置为 NAT 模式:
在这个地方选择 NAT 模式,或者在自定义里选择 VMnet8 都是可以的。

但是也有例外情况,如果你打开虚拟网络适配器的时候,发现自己 NAT 模式下的虚拟网卡名字不是 VMnet8,而是 VMnetN,那么就进入 VMware 虚拟机设置,再网络适配器设置中选择

自定义

,然后再选择 VMnetN 就可以了。(N 代表一个数字)
在这里插入图片描述

第一步:配置虚拟网络编辑器
打开 VMware Workstation --> 编辑 --> 虚拟网络编辑器

众所周知,一旦在安装 Linux 的时候选择了以 NAT 方式进行通信,那么Linux 和主机建立连接所使用的网卡就是虚拟网卡 VMnet8。

如图所示,我有两张虚拟网卡分别是 VMnet1 和 VMnet8,此时我以管理员身份配置 VMnet8 就可以了。
在这里插入图片描述
下一步。如图所示,一共有四个步骤需要依次配置。

  • 检查 Windows 是否勾选了将主机虚拟适配器连接到此网络,勾选了此选项,Windows 的“网络连接”界面中才会出现 VMnet8 这张虚拟网卡。
  • 将子网 IP 这一栏配置到 1 网段(和物理机中的 VMnet8 同一个网段),所以这里将其配置成 192.168.1.0
  • 子网掩码和主机保持一致就行在这里插入图片描述

下一步,进入 NAT 设置,配置网关:

网关按需配置在同一个网段即可

,这里我配置成 192.168.1.2
一般来说大众的做法是,Linux 的网关需要和 Windows 一致,所以也可以把网关设置为 192.168.1.5。
在这里插入图片描述
配置完成之后点击确定。
在主配置界面点击应用,再点击确定。

第二步:配置虚拟网卡 VMnet8

进入如图所示的界面后
在这里插入图片描述

右键VMnet8 --> 属性 --> 配置 IPV4 --> 选择使用下面的 IP 地址一栏,然后手动填入如图所示的参数:
在这里插入图片描述

  • 说明1:子网掩码各位可以按需填写,我这里填 255.255.255.0,大家伙跟着我填就行。
  • 说明2:保持在同一网段说的是什么呢?在上图中,IP 地址就处于 192.168.1 网段,网关也必须处于同一个网段下,因此网关可以和 Linux 配置成一模一样,也可以配置成任意的处于同一网段下的网关。
  • 说明3:虚拟机要想访问外网,需要设置 DNS 用于解析 IP 和 域名(把 Windows 和 Linux 的 DNS 设置为同一个也是可以的。一般都是设置为同一个 DNS)。上图的 DNS 是阿里的 DNS,大伙儿按需配置就行。
注意:有的 Windows 系统硬件比较老旧,建议配置完之后重启一遍 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 虚拟机(如果发现 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地址需要在同一个网段,并且虚
拟机要占据局域网中的一个ip地址。此时,不管是虚拟机和虚拟机之间还是

虚拟机和其他真实主机之间,只要处于同一个网段,他们之间都可以进行相互通信。

如此推理:如果你将虚拟机的 IP 地址设置为局域网中一个正在使用的 IP 地址,那么你在测试 Windows 是否能 ping 通虚拟机的时候,局域网内的另一台计算机就会和你的虚拟机发生 IP 地址互相抢占的情况。因此,在配置 Linux IP 地址时,请确认该 IP 地址在局域网中没有被占用。

让虚拟机和物理机连通的思路和 NAT 模式下的思路一样,重点已经标红显示了。这里我就不测试了,因为我是懒狗 。

三、虚拟机配置的网络连接方式为 Host_only(仅主机模式)

hostonly 模式下,虚拟机和主机之间少了地址转换服务(NAT),所以虚拟机只可以单独访问主机,且不能访问互联网。

此时,虚拟机要想和主机互通,配置 VMnet1 这张虚拟网卡,让 VMnet1 的 IP 地址和 虚拟机的 IP 地址处于同一网段就可以了。

让虚拟机和物理机连通的思路和 NAT 模式下的思路一样,互通重点已标红。所以这里也不写测试了。

四、其他说明

如果安装 Linux 的时候预装了图形界面的小伙伴,可以在第一个大标题的第三步使用

startx

命令进入可视化图形界面,对 IP、网关、子网掩码、DNS 进行修改。

五、在运维时候的实际应用

 场景1

:产品经理在下班后和你悄悄说:这些个客户真的把自己当成上帝,把我们当牛马一样使,这样子不行啊,我们太被动了!要不这样吧,小王你帮我个忙,明天你到机房里去,给客户的服务器安一个病毒包,等项目上线的时候,客户一开机就把他心态给搞崩。

于是,明儿一早你屁颠屁颠的来到机房,接了一根网线到交换机上。
结果发现连不上 Linux 系统?这下子尴尬了。

如何把客户解决掉?方法如下:
把客户解决的第一步,是个神仙都得让自己的电脑先连上服务器对不对?

公司的服务器中一般都会有好几块网卡,而真正用到的网卡往往只有那么几块。
这时候,你可以找一块闲置的网卡,

比如现在有一块闲置网卡名为 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

:现在公司有一套成熟的软件系统,需要把系统分布式部署在3台虚拟机上。由于考虑到部署的过程中需要用到yum来安装许多软件,因此需要让虚拟机暂时先连上互联网。

三台虚拟机的IP分别为:192.168.0.44、46、47
路由器分配出可上网的网段为192.168.1 网段。

此时,需要让笔记本在联网的同时能访问内网虚拟机,那么笔记本的真实网卡配置如下:
需要配置一个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 后就失效了。网关同样如此。

如果机器有默认的网关,导致连不上互联网,可以先临时删除默认的网关。
route del default gw xxx.xxx.xxx.xxx

同样的,在另外两台虚拟机上也执行上面的操作。不过不能和 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 没有添加进配置文件,所以机器重启后就失效了,每次重启机器后要再次添加默认网关。

如果要永久添加默认网关,则执行下列命令:
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 运维

本文转载自: https://blog.csdn.net/weixin_44412244/article/details/126025190
版权归原作者 核桃胡子 所有, 如有侵权,请联系我们删除。

“Linux 虚拟机和主机互通 [万能方法]”的评论:

还没有评论