Vmware 虚拟机网络通讯

本文详细介绍VMware Workstation的三种网络模式:桥接、NAT及仅主机模式的特点及适用场景。并针对网络配置中常见的问题提供了实用的解决方案。

原文地址 :https://blog.youkuaiyun.com/u011127242/article/details/83684972 

VMware Workstation(中文名“威睿工作站”)是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。其使用过程中的网络连接是一个比较重要的问题,笔者本文针对VM的网络通信的几种不同情况加以说明。

1、三种通信模式简介

打开VMware的虚拟网络编辑器,可以发现有三种网络连接类型,别为桥接模式,仅主机模式,NAT模式,其对应的名称依次为VMnet0,VMnet1,VMnet8,如下图所示。

从图中可以看到桥接对外通过本机网卡Realtec***可以实现外网访问,主机模式外部连接为 - 不能实现外网访问 ,NAT模式可以通过NAT来实现外网访问。

笔者台式机A通过静态ip和本地局域网连接,虚拟机B通过仅主机模式进行网络连接,虚拟机C通过NAT方式进行网络连接,各系统间网络连接和通信情况如下表所示:
--------------------- 

当A为静态时候,若存在D为桥接模式,那么网络启动会失败(通常表现为2、常见问题中的1)),导致无法虚拟机分配IPv4网络,从而D无法访问外网,也无法和上述ABC通信,由于没有IPv4导致ABC也无法和D通信。

以下1)、2)、3)内容来源于博文 Linux虚拟机的三种网络连接方式,该文总结的比较到位,笔者就不画蛇添足了。

1)桥接:

桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段。所以当我们要在局域网使用虚拟机,对局域网其他pc提供服务时,例如提供ftp,提供ssh,提供http服务,那么就要选择桥接模式。

2)NAT模式

NAT模式中,就是让虚拟机借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。NAT模式中,虚拟机的网卡和物理网卡的网络,不在同一个网络,虚拟机的网卡,是在vmware提供的一个虚拟网络。
 NAT和桥接的比较:
 (1) NAT模式和桥接模式虚拟机都可以上外网。
 (2) 由于NAT的网络在vmware提供的一个虚拟网络里,所以局域网其他主机是无法访问虚拟机的,而宿主机可以访问虚拟机,虚拟机可以访问局域网的所有主机,因为真实的局域网相对于NAT的虚拟网络,就是NAT的虚拟网络的外网,不懂的人可以查查NAT的相关知识。

 (3) 桥接模式下,多个虚拟机之间可以互相访问;NAT模式下,多个虚拟机之间也可以相互访问。
如果你建一个虚拟机,只是给自己用,不需要给局域网其他人用,那么可以选择NAT,毕竟NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,只要虚拟机的网路配置是DHCP,那么你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可,就可以让虚拟机联网了。

3)仅主机模式

在Host-Only模式下,虚拟网络是一个全封闭的网络,它唯一能够访问的就是主机。其实Host-Only网络和NAT网络很相似,不同的地方就是Host-Only网络没有NAT服务,所以虚拟网络不能连接到Internet。主机和虚拟机之间的通信是通过VMware Network Adepter VMnet1虚拟网卡来实现的。Host-Only的宗旨就是建立一个与外界隔绝的内部网络,来提高内网的安全性。这个功能或许对普通用户来说没有多大意义,但大型服务商会常常利用这个功能

2、常见问题
该章节主要记录笔者使用时候遇见的一些问题,以及解决方案,后续遇到新问题都会在此处续更。

1)登录Ubuntu系统时候出现A start job is running for Raise network interfaces(xxs /5min xxs)

如下图所示出现该问题后,系统需要等待5min 3s后才能进入系统中,进入后也无法上网且没有分配ipv4地址,该问题产生的原因为网络服务服务没有正常启动,直到网络启动最大时间到达后才启动系统,系统启动后也无法正常分配ipv4地址,导致无法联网,也无法和局域网内机器互ping。

 

其解决方法为:将本机电脑连接到某个局域网或者路由器,然后本机使用动态分配ip的方法即可正常给虚拟机分配ip,重启虚拟机就不会出现该问题;若本机必须使用静态ip连接到外部网络中,则可以使用nat的方法进行网络连接,也可解决该问题其正常访问网络。

注:笔者在网上看到有相当一部分博文介绍修改参数使Raise network interfaces最长时间缩短,使用参数修改的方法笔者试了一下没有成功,且修改参数也没有解决后续无ipv4的问题,治标不治本,笔者几次尝试后发现该方法可以解决上述问题。若有更好的方法还请留言,以便于相互学习。

2)桥接模式无法上网排查方法

首先查看service中的dhcp、nat等服务是否开启,若未开启则手动开启;其次查看本机是否为静态ip,若本机为静态ip则使用nat方式连接外网。

3)本机没有任何外网连接的情况下建立主机和虚拟机之间的网络通信方法

该情况下无法正常桥接,需要使用host only方法,可为虚拟机建立静态ip,具体方法如下:
当电脑无任何网络的连接的时候,使用nat启动时候也会出现A start job is running for Raise network interfaces(xmin xs / 5min xs)的异常,登录后发现ens33无ipv4网络,此时可以通过配置host only实现网络访问,并且可以使用shell登录主机。
其设置方法为:修改/etc/network/interfaces 配置文件
 

auto ens33
#iface ens33 inet dhcp #将此处屏蔽,笔者服务器默认网络没春节后为ens33,其它版本系统可能不完全相同,但是只需要更改其对应的内容即可
iface ens33 inet static #新添加内容
address 169.254.78.152 #新添加内容

 修改后重启虚拟机,ens33就可以正常分配ip了,windows下可以通过ssh等工具访问虚拟机了,下图左边为windows下cmd的ipconfig网络信息,右图为host only模式下ifconfig的网络信息。

需要注意的是此处address必须和windows下ipconfig中VMnet8(host only)的网段相同,否则无法访问。

4)VMware DHCP Service和VMware NAT Service的服务项找不到

出现该问题后,不论net还是桥接都无法动态分配ip,即都无法正常通信,此时只需要恢复虚拟机默认的VMnet配置即可,方法如下:vmware菜单栏——编辑——虚拟网络设置——(左下角)还原默认配置,还原后正常情况下vmnet0-1-8都会重新配置,如果没哟重新配置就重启电脑,重启不成功的话就只有重装下VM了;笔者在win10+vm12pro上亲测可用。

参考文献:

Linux虚拟机的三种网络连接方式:https://blog.youkuaiyun.com/jx232515/article/details/51892106

实例讲解虚拟机3种网络模式(桥接、nat、Host-only):http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646007.html

 

### VMware虚拟机NAT网络设置方法 在VMware虚拟机中,NAT(Network Address Translation)是一种常见的网络模式,它允许虚拟机通过宿主机的IP地址访问外部网络。以下是关于如何配置和解决NAT网络的相关问题。 #### 1. 默认NAT配置 大多数情况下,VMware会在创建虚拟机时自动为其分配NAT网络模式。在这种模式下,虚拟机会共享宿主机的IP地址来访问互联网[^1]。因此,除非遇到特殊需求或问题,建议保持默认配置而不手动调整网络参数。 #### 2. 手动启用NAT模式 如果需要手动将虚拟机切换到NAT模式,可以按以下步骤操作: - **打开VMware软件**并选中目标虚拟机。 - 进入`编辑虚拟机设置`选项。 - 在硬件列表中找到`网络适配器`部分。 - 将其更改为`NAT模式`即可完成基本配置。 #### 3. 宿主机端口映射支持 当虚拟机处于NAT模式时,默认情况下无法直接从外界访问该虚拟机的服务(如Web服务器)。此时可以通过VMware自带工具实现特定端口的转发功能。具体做法如下: - 编辑位于Windows系统的路径 `C:\Program Files (x86)\VMware\VMware Workstation\nat.conf` 或 Linux下的 `/etc/vmware/nat.conf` 文件。 - 添加类似下面的内容以开放HTTP服务监听请求: ```bash # Example of port forwarding rule inside the configuration file. 80 = 192.168.x.y:80 ``` 其中,“192.168.x.y”代表内部虚拟机的实际局域网地址;而左侧数字表示要暴露给公网的具体端口号[^4]。 #### 4. 处理常见联网失败情况 有时即使设置了正确的NAT模式,仍然可能出现无法正常上网的现象。这时可尝试执行下列命令重启网络管理器服务恢复连接状态[^5]: ```bash sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service network-manager start ``` 以上指令能够清除缓存数据重新初始化环境变量从而修复潜在错误。 #### 5. 替代方案考虑 对于频繁调整多台设备间通讯场景而言,单纯依赖于单一形式可能会显得不够灵活高效。于是有人提出了结合仅主机加桥接混合型架构作为备选策略之一[^2]。这种方法理论上既保留了独立子网隔离优势又兼顾跨平台互访便利性,不过实际部署复杂度有所提升需权衡利弊后再决定采用与否。 ```python def check_vm_network_mode(vm_name, desired_mode="NAT"): """Check whether a given VM uses specified networking mode.""" import pyVim.connect as connect si = connect.SmartConnectNoSSL(host='your_host', user='username', pwd='password') content = si.RetrieveContent() vm_view = content.viewManager.CreateContainerView(content.rootFolder,[vim.VirtualMachine],True).view target_vms = [v for v in vm_view if v.name == vm_name] if not target_vms: raise ValueError(f"No such virtual machine named {vm_name}") current_net_adapter_info = str(target_vms[0].config.hardware.device) return 'networkName' in current_net_adapter_info and desired_mode.lower() in current_net_adapter_info.lower() if __name__ == "__main__": result = check_vm_network_mode('Test_VM_Example') print(result) ``` 上述脚本片段展示了利用Python API查询指定名称虚机当前所使用的网络类型是否匹配预期设定值"NAT"的例子供参考扩展用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值