草庐IT

Vmware虚拟机网络模式原理及配置详解

Ant Brother 2023-07-18 原文

概述

    VMware为我们提供了三种网络工作模式,它们分别是:bridged(桥接模式)、host-only(仅主机模式)、nat(网络地址转换模式)。

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

同时,在主机对应的有VMware Network Adapter VMnet1和VMware Network Adapter VMnet8两块虚拟网卡,在“网络连接”中我们可以看到,如下图(2)。如果将这两块虚拟网卡卸载了,可以在Vmware的“编辑”下的“虚拟网络编辑器”中点击“还原默认设置”,则可重新将主机虚拟网卡还原。

    虚拟网络命名方式:在VMware中,虚拟机的网络通信主要是由VMware Workstation创建的虚拟交换机(又名虚拟网络)实现的。通常,windows系统主机上,VMware最多可创建20个虚拟网络,其默认命名规则为“VMnet+数字”,每个可连接任意数量虚拟网络设备。linux系统主机上最多可以创建255个,但每个虚拟网络仅能连32个虚拟网络设备,其默认命名规则为“vmnet+数字”。

1. bridged(桥接模式)

    定义:桥接模式就是将主机网卡与虚拟机虚拟网卡利用虚拟网桥进行通信,虚拟机中的虚拟网络适配器就可以通过主机中的物理网络适配器直接访问到外部互联网。在桥接作用下,类似于将物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个“交换机”的一个端口上,物理主机也同样插在这个“交换机”上,这样桥接下的网卡和网卡之间都是交换模式的,可以相互访问而不干扰,具体网络拓扑图如图(3)。且能支持有线和无线主机网络适配器。

    操作流程:1)开启虚机系统前,通过点击“编辑虚拟机设置”->“网络适配器”->“桥接模式”->"确定"来设置网卡模式,如下图(4)。

2)通过“win+R快捷键”打开运行框,输入“cmd”进入命令框,输入“ipconfig”回车,即可确定主机的IP地址、网关、DNS等信息,如下图(5)。其中IP为192.168.199.145,网关为192.168.199.1,DNS为192.168.199.1。另一种查看主机IP信息的方法如下图(6)。


3)进入虚机系统,打开终端,确认网络连接情况,如下图(7)。本例中可以看出至此虚机已经可以连接外网了,其中BOOTPROTO=dhcp是动态获取IP的,对应还有BOOTPROTO=static(静态IP,需指定IP,方法如下),none(不指定)。

vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static #这里将dhcp修改成 static  
ONBOOT=yes #这里将 no 修改成 yes  
IPADDR=192.168.199.144 #静态 IP  
GETWAY=192.168.199.1 # 默认网关  
DNS1=8.8.8.8  
NETMASK=255.255.255.0 #子网掩码  

2.nat(网络地址转换模式)

​ 当网络IP资源紧缺时,又希望虚拟机能够联网,可利用nat模式借助虚拟nat设备和虚拟dhcp服务器达到目的。具体网络拓扑如图(8)。

在连接VMnet8虚拟交换机时,虚拟机会将虚拟NAT设备和虚拟DHCP服务器连接到虚拟交换机上,同时也会将主机上的虚拟网卡VMware Network Adapter VMnet8连接到VMnet8虚拟交换机上,虚拟网卡VMware Network Adapter VMnet8只是作为主机与虚拟机通信的接口,虚拟机并不是依赖虚拟网卡VMware Network Adapter VMnet8来联网的。

​ 操作流程:1)开启虚机系统前,通过点击“编辑”->"虚拟网络编辑器”->“NAT模式”->“NAT设置”->"DHCP设置"来设置网卡模式,如下图(9)。


2)选择虚拟机Ant01,点击“编辑虚拟机设置”->“网络适配器”->“NAT模式”->“确定”,如下图(10)。

3)开启虚拟机,打开终端,确认连接外网情况,正常。

3. host-Only(仅主机模式)

​ host-only模式其实就是nat模式去除了虚拟nat设备,然后使用VMware Network VMnet1虚拟网卡连接VMnet1虚拟交换机来和虚拟机进行通信的,host-only模式将虚拟机与外网隔离开,成为了一个封闭的局域网络。如果具体网络拓扑如图(11)。

​ 当然,如果在host-only模式下想要访问外网,可以将主机网卡共享给VMware Network VMnet1虚拟网卡。

​ 操作流程:1)开启虚机系统前,通过点击“编辑“->""虚拟网络编辑器”->“仅主机模式->"DHCP设置"来设置网卡模式,如下图(12)

2)选择虚拟机Ant01,点击“编辑虚拟机设置”->“网络适配器”->“仅主机模式”->“确定”,如下图(13)。

3)开启虚拟机,确认和主机通信情况,正常。

4)如果想让虚机能访问外网,可在物理主机上按下图(14)操作,“网络连接”->“WLAN属性”->“共享”->“允许其他网络***”->选择“VMware Network VMnet1”->“确定”。

5)选择“VMware Network VMnet1”右击属性,选择“Internet协议版本4(TCP/IPv4)“查看其IP地址,192.168.137.1,如下图(15)。

6)需改虚拟机的DHCP的子网和起始地址,与VMware Network VMnet同一网段。操作流程同图12。验证网络情况。

有关Vmware虚拟机网络模式原理及配置详解的更多相关文章

  1. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  4. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  5. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  6. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  7. ruby - 是否有用于序列化和反序列化各种格式的对象层次结构的模式? - 2

    给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最

  8. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  9. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  10. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

随机推荐