【Linux系列】vmware虚拟机网络配置详解

非原创

原文地址[1]

首发博客地址[2]

系列文章地址[3]


vmware 为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。

打开 vmware 虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器”中看到 VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8(NAT 模式),那么这些都是有什么作用呢?其实,我们现在看到的 VMnet0 表示的是用于桥接模式下的虚拟交换机;VMnet1 表示的是用于仅主机模式下的虚拟交换机;VMnet8 表示的是用于 NAT 模式下的虚拟交换机。

虚拟网络编辑器
虚拟网络编辑器

同时,在主机上对应的有 VMware Network Adapter VMnet1 和 VMware Network Adapter VMnet8 两块虚拟网卡,它们分别作用于仅主机模式与 NAT 模式下。在“网络连接”中我们可以看到这两块虚拟网卡,如果将这两块卸载了,可以在 vmware 的“编辑”下的“虚拟网络编辑器”中点击“还原默认设置”,可重新将虚拟网卡还原。

网络连接
网络连接

小伙伴看到这里,肯定有疑问,为什么在真机上没有 VMware Network Adapter VMnet0 虚拟网卡呢?那么接下来,我们就一起来看一下这是为什么。

一、Bridged(桥接模式)

什么是桥接模式?桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机 ip 地址需要与主机在同一个网段,如果需要联网,则网关与 DNS 需要与主机网卡一致。其网络结构如下图所示:

桥接模式网络结构
桥接模式网络结构

接下来,我们就来实际操作,如何设置桥接模式。

首先,安装完系统之后,在开启系统之前,点击“编辑虚拟机设置”来设置网卡模式。

编辑虚拟机设置
编辑虚拟机设置

点击“网络适配器”,选择“桥接模式”,然后“确定”

网络适配器设置
网络适配器设置

在进入系统之前,我们先确认一下主机的 ip 地址、网关、DNS 等信息。

主机网络信息
主机网络信息

然后,进入系统编辑网卡配置文件,命令为 vi /etc/sysconfig/network-scripts/ifcfg-eth0

编辑网卡配置文件
编辑网卡配置文件

添加内容如下:

网卡配置内容
网卡配置内容

编辑完成,保存退出,然后重启虚拟机网卡,使用 ping 命令 ping 外网 ip,测试能否联网。

测试联网
测试联网

能 ping 通外网 ip,证明桥接模式设置成功。

那主机与虚拟机之间的通信是否正常呢?我们就用远程工具来测试一下。

远程连接测试
远程连接测试

主机与虚拟机通信正常。

这就是桥接模式的设置步骤,相信大家应该学会了如何去设置桥接模式了。桥接模式配置简单,但如果你的网络环境是 ip 资源很缺少或对 ip 管理比较严格的话,那桥接模式就不太适用了。如果真是这种情况的话,我们该如何解决呢?接下来,我们就来认识 vmware 的另一种网络模式:NAT 模式。

二、NAT(地址转换模式)

刚刚我们说到,如果你的网络 ip 资源紧缺,但是你又希望你的虚拟机能够联网,这时候 NAT 模式是最好的选择。NAT 模式借助虚拟 NAT 设备和虚拟 DHCP 服务器,使得虚拟机可以联网。其网络结构如下图所示:

NAT模式网络结构
NAT模式网络结构

在 NAT 模式中,主机网卡直接与虚拟 NAT 设备相连,然后虚拟 NAT 设备与虚拟 DHCP 服务器一起连接在虚拟交换机 VMnet8 上,这样就实现了虚拟机联网。那么我们会觉得很奇怪,为什么需要虚拟网卡 VMware Network Adapter VMnet8 呢?原来我们的 VMware Network Adapter VMnet8 虚拟网卡主要是为了实现主机与虚拟机之间的通信。在之后的设置步骤中,我们可以加以验证。

首先,设置虚拟机中 NAT 模式的选项,打开 vmware,点击“编辑”下的“虚拟网络编辑器”,设置 NAT 参数及 DHCP 参数。

虚拟网络编辑器设置
虚拟网络编辑器设置
NAT参数设置
NAT参数设置
DHCP参数设置
DHCP参数设置

将虚拟机的网络连接模式修改成 NAT 模式,点击“编辑虚拟机设置”。

编辑虚拟机设置
编辑虚拟机设置

点击“网络适配器”,选择“NAT 模式”

网络适配器设置
网络适配器设置

然后开机启动系统,编辑网卡配置文件,命令为 vi /etc/sysconfig/network-scripts/ifcfg-eth0

编辑网卡配置文件
编辑网卡配置文件

具体配置如下:

网卡配置内容
网卡配置内容

编辑完成,保存退出,然后重启虚拟机网卡,动态获取 ip 地址,使用 ping 命令 ping 外网 ip,测试能否联网。

测试联网
测试联网

之前,我们说过 VMware Network Adapter VMnet8 虚拟网卡的作用,那我们现在就来测试一下。

测试虚拟机与主机通信
测试虚拟机与主机通信
测试主机与虚拟机通信
测试主机与虚拟机通信

如此看来,虚拟机能联通外网,确实不是通过 VMware Network Adapter VMnet8 虚拟网卡,那么为什么要有这块虚拟网卡呢?

之前我们就说 VMware Network Adapter VMnet8 的作用是主机与虚拟机之间的通信,接下来,我们就用远程连接工具来测试一下。

测试主机与虚拟机通信
测试主机与虚拟机通信

然后,将 VMware Network Adapter VMnet8 启用之后,发现远程工具可以连接上虚拟机了。

那么,这就是 NAT 模式,利用虚拟的 NAT 设备以及虚拟 DHCP 服务器来使虚拟机连接外网,而 VMware Network Adapter VMnet8 虚拟网卡是用来与虚拟机通信的。

三、Host-Only(仅主机模式)

Host-Only 模式其实就是 NAT 模式去除了虚拟 NAT 设备,然后使用 VMware Network Adapter VMnet1 虚拟网卡连接 VMnet1 虚拟交换机来与虚拟机通信的,Host-Only 模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。其网络结构如下图所示:

Host-Only模式网络结构
Host-Only模式网络结构

通过上图,我们可以发现,如果要使得虚拟机能联网,我们可以将主机网卡共享给 VMware Network Adapter VMnet1 网卡,从而达到虚拟机联网的目的。接下来,我们就来测试一下。

首先设置“虚拟网络编辑器”,可以设置 DHCP 的起始范围。

虚拟网络编辑器设置
虚拟网络编辑器设置

设置虚拟机为 Host-Only 模式。

虚拟机网络适配器设置
虚拟机网络适配器设置

开机启动系统,然后设置网卡文件。

编辑网卡配置文件
编辑网卡配置文件

保存退出,然后重启网卡,利用远程工具测试能否与主机通信。

测试主机与虚拟机通信
测试主机与虚拟机通信

主机与虚拟机之间可以通信,现在设置虚拟机联通外网。

虚拟网络编辑器设置
虚拟网络编辑器设置

我们可以看到上图有一个提示,强制将 VMware Network Adapter VMnet1 的 ip 设置成 192.168.137.1,那么接下来,我们就要将虚拟机的 DHCP 的子网和起始地址进行修改,点击“虚拟网络编辑器”

虚拟网络编辑器设置
虚拟网络编辑器设置

重新配置网卡,将 VMware Network Adapter VMnet1 虚拟网卡作为虚拟机的路由。

虚拟机网络适配器设置
虚拟机网络适配器设置

重启网卡,然后通过远程工具测试能否联通外网以及与主机通信。

测试联网和通信
测试联网和通信

测试结果证明可以使得虚拟机连接外网。

参考资料

[1]

原文地址: https://blog.51cto.com/u_15169172/2710721

[2]

首发博客地址: https://blog.zysicyj.top/

[3]

系列文章地址: https://blog.zysicyj.top/categories/技术文章/后端技术/系列文章/Linux/

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/68662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【能用Python就可以轻松解决这5个常见运维!】

许多运维工程师会使用 Python 脚本来自动化运维任务。Python 是一种流行的编程语言,具有丰富的第三方库和强大的自动化能力,适用于许多不同的领域。 在运维领域,Python 脚本可以用来实现各种自动化任务,例如: 连接远…

Cyber RT学习笔记---7、Component组件认知与实践

7、Component组件认知与实践 前言 本文是对Cyber RT的学习记录,文章可能存在不严谨、不完善、有缺漏的部分,还请大家多多指出。 课程地址: https://apollo.baidu.com/community/course/outline/329?activeId10200 更多还请参考: [1] Apollo星火计划学习笔记——第…

网络渗透day12-高级问题2

当然,继续提供更多高级网络渗透测试问题和回答: 在渗透测试中,您如何评估目标系统的人工智能(AI)模型的隐私保护机制,以查找可能的隐私泄露和数据滥用风险? - 回答:我会分析AI模型的…

Web自动化 —— Selenium元素定位与防踩坑

1. 基本元素定位一 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By # selenium Service("../../chromedriver.exe") # driver webdriver.Chrome(serviceService) # driver.…

【Unity3D】UI Toolkit元素

1 前言 UI Toolkit简介 中介绍了 UI Builder、样式属性、UQuery、Debugger,UI Toolkit容器 中介绍了 VisualElement、ScrollView、ListView、GroupBox 等容器,UI Toolkit样式选择器 中介绍了简单选择器、复杂选择器、伪类选择器等样式选择器,…

宝塔面板linux在终端使用命令开启服务保持服务不关闭

我们经常在宝塔面板终端开启服务(比如socket等服务时),如果关闭面板标签页或者关闭终端,服务也随之关闭了,要保持服务一直运行,就需要把终端进程放在linux后台执行,方法如下: 1、先…

Linux入门之进程信号|信号产生的方式

文章目录 一、信号入门 1.linux信号的基本概念 2.使用kill -l 命令可以查看系统定义的信号列表 3.信号处理常见方式 二、产生信号 1.通过终端按键产生信号 2.通过调用系统函数向进程发信号 3.由软条件产生信号 4.硬件异常产生信号 1. /0异常 2.模拟野指针 一、信号入门…

华为数通方向HCIP-DataCom H12-821题库(单选题:221-240)

第201题 BGP 协议用​​ beer default-route-advertise​​ 命令来给邻居发布缺省路由,那么以下关于本地 BGP 路由表变化的描述,正确的是哪一项? A、在本地 BGP 路由表中生成一条活跃的缺省路由并下发给路由表 B、在本地 BGP 路由表中生成一条不活跃的缺省路由,但不下发给…

【ES6】Promise.all用法

Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。 const p Promise.all([p1, p2, p3]);上面代码中,Promise.all()方法接受一个数组作为参数,p1、p2、p3都是 Promise 实例,如果不是,就会先调…

Vue2+Vue3笔记(尚硅谷张天禹老师)day02

声明:只是记录,初心是为了让页面更好看,会有错误,我并不是一个会记录的人,所以有点杂乱无章的感觉,我先花点时间把视频迅速过掉,再来整理这些杂乱无章的内容 组件化编程 按照视频来的话,这里应该有一些概念的东西&…

Java设计模式之适配器模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子&#xff0…

数据结构零基础入门篇(C语言实现)

前言:数据结构属于C学习中较难的一部分,对应学习者的要求较高,如基础不扎实,建议着重学习C语言中的指针和结构体,万丈高楼平地起。 一,链表 1)单链表的大致结构实现 用C语言实现链表一般是使…

PCL点云处理之快速计算多个点到同一直线的距离(二百零五)

PCL点云处理之快速计算多个点到同一直线的距离(二百零五) 一、算法简介二、具体实现1.代码2.结果一、算法简介 点到直线的距离计算,是一种常用的算法,在点云处理中,经常遇到需要计算多个点云到同一条直线的距离计算需求,此时若是逐点计算将耗费大量的时间,熟悉点到直线…

入选VLDB 2023! OceanBase 4.0单机分布式一体化研究成果获国际顶会认可

近日,国际顶级数据库学术会议 VLDB 2023 在加拿大温哥华开幕。OceanBase 研究成果论文 “OceanBase Paetica: A Hybrid Shared-nothing/Shared-everything Database for Supporting Single Machine and Distributed Cluster” 被 VLDB 2023 收录!相继 20…

【ES6】Promise常用的方法

JavaScript中的Promise对象常用于处理异步操作,它具有以下常用的方法: 1、Promise.resolve(value):返回一个已解析的Promise对象。如果value是一个thenable对象(即具有then方法的对象),返回的Promise将&qu…

ACL 访问控制 过滤数据 维护网络安全(第七课)

一 ACL 简介 ACL是Access Control List(访问控制列表)的缩写,是一种用于控制文件、目录、网络设备等资源访问权限的方法。ACL可以对每个用户或用户组设置不同的访问权,即在访问控制清单中为每个用户或用户组指定允许或禁止访问该资源的权限。它通常由一系列规则组成,规则…

Qt 定时器放在线程中执行,支持随时开始和停止定时器。

前言:因为项目需要定时检查网络中设备是否能连通,需要定时去做ping操作,若是网络不通,则ping花费时间比较久(局域网大概4秒钟才能结束,当然如果设置超时时间啥的,也能很快返回,就是会…

vue3 判断包含某个字符

<img v-if"node.level 1 && checkIfIncludeSubStr(node.label, 人口)"src"/assets/images/icon-convention-01.png" width"16"class"inlineBlock Vmiddle" style"margin-right: 8px;"/>const data reactive…

【前端】webpack打包去除console.log

0 问题 需要在打包的时候&#xff0c;自动地去除掉所有console.log 1 方法 // vue.config.js //... module.exports {//...config.optimization.minimizer[0].iptions.terserOptions.compress.drop_console true//... } //...也可以用if(process.env.NODE_ENV production…

算法通关村十三关-青铜:数字与数学基础问题

1.数字统计专题 统计特定场景下的符号或数字个数等 1.1符号统计 LeetCode1822 数组元素积的符号 https://leetcode.cn/problems/sign-of-the-product-of-an-array/description/ 思路分析 如果将所有的数都乘起来&#xff0c;再判断正负&#xff0c;工作量大&#xff0c;还…