广告位联系
返回顶部
分享到

Linux之虚拟机和主机互通实现方式

linux 来源:互联网 作者:佚名 发布时间:2024-07-08 20:57:43 人浏览
摘要

诸如以下问题,解决问题的思路都是一样的,看完此文后都能找到答案: 主机为何 ping 不通 虚拟机?请检查是否在同一网段?Linux 防火墙是否为开启状态? 虚拟机为何 ping 不通主机?请检查

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

主机为何 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 地址。这样你就可以通过网线,使笔记本连接上服务器了。

期望配置:

1

2

3

4

5

6

7

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 使用命令行方式直接配置,不修改配置文件。

1

ifconfig eth1 10.10.10.10 netmask 255.255.255.0

笔记本网卡设置好后,进入 Linux 终端界面, ping VMnet1 上设置的 IP,来确认网络是否连通。

方式二:永久配置

直接修改配置文件。

在 /etc/sysconfig/network-scripts/ 目录下,存放着关于 Linux 机器中的网卡配置文件。

第一步:新建一个配置文件名为 ifcfg-eth1

该配置文件作为空闲网卡 eth1 的配置文件。

1

cp ifcfg-eth0 ifcfg-eth1

在配置 ifcfg-eth1 之前可以先把 eth1 的硬件地址拷贝下来。硬件地址(HWaddr)可以使用 ifconfig 命令查看。

第二步:修改配置文件 ifcfg-eth1

1

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地址(重启后失效)

到其中一台虚拟机的终端输入命令:

1

ifconfig eth0:1 192.168.1.130 netmask 255.255.255.0

然后添加一条可以访问任意 IP的路由:

1

route add default gw 192.168.1.1

需要注意的是,192.168.1.130 这个 IP 在重启 Linux 后就失效了。网关同样如此。

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

1

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 没有添加进配置文件,所以机器重启后就失效了,每次重启机器后要再次添加默认网关。

如果要永久添加默认网关,则执行下列命令:

1

vim /etc/sysconfig/network-scripts/route-eth0

然后添加如下代码:

1

2

3

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 和 虚拟机的网卡处在同一网段下。

版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Nginx动静分离的代码
    为了加快网站的解析速度,就是把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。 简单来说,就
  • Nginx访问控制的原理及实现
    什么是访问控制? 访问控制是一种安全机制,旨在限制系统或网络资源的访问权限,确保只有经过授权的用户或系统可以访问这些资源。对
  • Nginx超时时间的配置介绍
    Nginx是一款自由、开源、高性能的HTTP和反向代理服务器,它可以通过不同的设置来提高网站的性能和安全性。其中,设置Nginx超时时间非常重
  • Nginx配置及热升级的介绍

    Nginx配置及热升级的介绍
    Nginx详解 Nginx与Apache一样,都是web服务器,但是Nginx比Apache多一些功能,比如Nginx可以做代理,可以做负载均衡 1. Nginx关键特性 支持高并发
  • Linux之虚拟机和主机互通实现方式

    Linux之虚拟机和主机互通实现方式
    诸如以下问题,解决问题的思路都是一样的,看完此文后都能找到答案: 主机为何 ping 不通 虚拟机?请检查是否在同一网段?Linux 防火墙是
  • 使用Apache Kafka构建实时数据处理应用
    Apache Kafka的基本概念 Apache Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者和生产者的所有实时消息。以下是一些Apache
  • linux服务器本地开启visdom
    linux服务器本地开启visdom 需要用pytorch的visdom在服务器上跑程序,并把图片显示出来,但是服务器上打不开网页,如何将visdom.server转到本地。
  • Ubuntu中apt和apt-get命令的区别
    在Ubuntu及其他基于Debian的Linux发行版中,软件包管理是系统维护的一个重要方面。apt和apt-get是两个常用的命令行工具,用于安装、更新、删
  • 前端加载访问速度优化详细指南(Nginx)
    1. gzip压缩 往nginx.conf 的http内容段落中加入 1 2 3 4 5 6 7 # gzip config gzip on; gzip_min_length 1k; gzip_comp_level 9; gzip_types text/plain application/javascript app
  • linux编写同步文件的脚本
    linux编写同步文件的脚本 搭集群最麻烦的就是修改配置文件,如果只用修改一个机器上的配置文件,然后用一个脚本就可以把配置文件同步
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计