打开虚拟机发现并没有网络选项
一、解决虚拟机ping通主机
解决方法1: 启动VMware NAT Service
(1)首先查看主机的ip地址,win+R打开搜索框,输入cmd
(2)输入ipconfig查看网络配置信息
ipconfig
(3)找到 VMware Network Adapter VMnet8: IPv4 地址的ip地址
(4)接着在虚拟机的终端使用ping命令,看是否能通主机,结果是网络不可达
(5)使用win+R输入services.msc 查看主机的服务
(6) 找到VMware NAT Service 并启动服务
(7)回到虚拟机,发现网络连接选项出来了
(8)点击进行连接即可
(9)如果出现了这个标志说明成功连接网络
(10)进入虚拟机的终端再次进行ping命令,发现可以连通主机
解决方法2:打开公用配置文件的入站连接
如果虚拟机还是不能ping通主机可能被主机的防火墙拦截了。
(1)打开主机的控制面板,如果桌面没有的可以直接搜
(2)点击系统和安全
(3)点击 Windows Defender 防火墙
(4)点击高级设置
(5)点击Windows Defender 防火墙属性
(6)将公共配置文件的入站连接改为允许
(7)改成允许,点击应用并确定
(8)最后回到虚拟机看是否能ping通主机
解决方法3:关闭防火墙
如果虚拟机还是不能ping通主机,可以试试直接关闭防火墙
(1)点击启用或关闭选项
(2)点击关闭再确定
(3)最后回到虚拟机看是否能ping通主机
二、解决主机ping通虚拟机
(1)打开终端输入ifconfig命令查看虚拟机的网络配置信息(主要是查看虚拟机的ip地址)
ifconfig
(2)打开主机终端,使用ping命令看是否能ping通虚拟机
如果出现以下问题:
#注意:如果你用下面的方式查找虚拟机的ip地址可能是错误的!!!
结果如下:
解决方法1:网络配置文件更改
(1)打开主机的控制面板,如果桌面没有的可以直接搜
(2)点击 网络和Internet
(3)点击网络和共享中心
(4)点击更改高级共享设置
(5)点击所有网络
(6)点击启动 后保存更改
(7)使用ping命令,发现主机可以连通虚拟机
解决方法2:关闭虚拟机防火墙的命令
(1)打开虚拟机终端,输入systemctl stop firewalld.service //停止firewall
systemctl stop firewalld.service
(2)输入:systemctl disable firewalld.service //禁止firewall开机启动
systemctl disable firewalld.service
(3)检查虚拟机网卡:
1.先切换到目录:cd /etc/sysconfig/network-scripts/
cd /etc/sysconfig/network-scripts/
2.再查看:
ls
3.找到一个ifcfg-ens开头的文件: 我的文件是ifcfg-ens33然后打开这个文件
4.使用vi / vim 编辑文件
vim ifcfg-ens33
5.将ONBOOT=no改为yes ,这文件我之前修改过。
内容如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=466a31dc-3485-4d97-bcae-a3fd15fd2f5d
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.226.50
PREFIX=24
GATEWAY=192.168.226.2
DNS1=8.8.8.8
(4)使用ping命令,发现主机可以连通虚拟机
注意可能出现的情况 !!!
(1)当你的电脑重启后,进入虚拟机如果出现如下图的情况:网络连接选项都没有!!!(天塌了)
别急!!!问题就是主机没有开启 VMware NAT Service 自启动!!!
(1)再次进入服务
(2) 找到 VMware NAT Service 先进行启动
(3) 单机鼠标右键选择属性
(4) 将手动启动类型改为自动
(5) 选择自动类型后点击应用再确定即可
(6)回到虚拟机,发现网络连接选项出来了
(7)点击连接即可
三、原理介绍
在NAT(网络地址转换)模式下,虚拟机能够连上网的原理涉及以下几个关键点:
1. NAT的工作原理
NAT是一种网络地址转换技术,它允许一个网络中的多个设备共享一个公共IP地址访问外部网络。在NAT模式下,虚拟化软件在宿主机上创建了一个虚拟的NAT路由器,用于将虚拟机的私有IP地址转换为宿主机的公共IP地址。
2. 虚拟网络适配器
虚拟机通过虚拟网络适配器(vNIC)与宿主机的虚拟网络交换机(如VirtualBox的VirtualBox Host-Only Network或VMware的VMnet8)连接。
3. 虚拟NAT设备
在NAT模式下,宿主机的虚拟化软件会创建一个虚拟NAT设备,这个设备负责将虚拟机的私有IP地址转换为宿主机的公共IP地址,并管理数据包的转发。
以下是NAT模式下虚拟机连网的详细原理:
3.1 私有网络
虚拟机被分配一个私有IP地址,这个地址通常来自一个专门为内部网络保留的IP地址范围,如RFC 1918地址(例如192.168.x.x, 10.x.x.x, 172.16.x.x等)。
3.2 虚拟NAT路由器
- 源地址转换(SNAT):当虚拟机发送数据包到外部网络时,NAT路由器会修改数据包的源IP地址,将其从虚拟机的私有IP地址转换为宿主机的公共IP地址。
- 端口映射:NAT路由器还会跟踪每个数据包的源端口,确保返回的数据包能够正确地转发回相应的虚拟机。
3.3 数据包传输流程
以下是虚拟机通过NAT模式发送和接收数据包的流程:
-
发送数据包:
- 虚拟机产生一个数据包,数据包的源IP地址是虚拟机的私有IP地址,目标IP地址是外部网络的一个地址。
- 数据包首先被发送到虚拟网络适配器,然后到达宿主机的虚拟网络交换机。
- NAT路由器接收到数据包后,修改数据包的源IP地址为宿主机的公共IP地址,并记录源端口和虚拟机的私有IP地址及端口的映射关系。
- 修改后的数据包被发送到宿主机的物理网络适配器,并最终到达外部网络。
-
接收数据包:
- 外部网络返回的数据包的目标IP地址是宿主机的公共IP地址。
- 宿主机的物理网络适配器接收到数据包后,根据目标端口查找之前建立的映射关系。
- NAT路由器根据映射关系将数据包的目标IP地址和端口转换回虚拟机的私有IP地址和端口。
- 数据包被转发到虚拟机的虚拟网络适配器,最终到达虚拟机。
4. DHCP服务
在NAT模式下,通常还会有一个DHCP服务器为虚拟机自动分配IP地址、子网掩码、默认网关和DNS服务器地址。
5. 端口转发
如果虚拟机需要提供网络服务,可以通过端口转发将宿主机的某个端口映射到虚拟机的特定端口,从而允许外部网络访问虚拟机上的服务。
虚拟机联网的详细过程:
-
虚拟网络接口:
- 假设我们在宿主机上使用VirtualBox或VMware等虚拟化软件创建了一个虚拟机,并为该虚拟机分配了一个虚拟网络接口(通常是虚拟网卡)。
-
NAT转换器:
- 宿主机上会运行一个NAT转换器,它负责将虚拟机的内部IP地址转换为主机的外部IP地址。
以下是具体的联网过程:
步骤1:虚拟机发起网络请求
- 虚拟机内部的应用程序发起一个网络请求,比如尝试访问一个网站(例如
http://www.example.com
)。
步骤2:虚拟机内部网络栈处理
- 虚拟机的操作系统将请求发送到其网络栈,然后通过虚拟网络接口发出。
步骤3:NAT转换
- NAT转换器接收到虚拟机的网络请求,它将虚拟机的内部IP地址(例如
192.168.56.101
)和端口(例如12345
)转换为主机的对外IP地址(例如203.0.113.1
)和一个随机的高端口(例如54321
)。
步骤4:外部网络通信
- 转换后的请求现在看起来像是从宿主机发出的。宿主机的网络栈将请求发送到外部网络。
步骤5:响应返回
- 目标服务器(
www.example.com
)处理请求并返回响应。响应的目的地是宿主机的对外IP地址和端口(203.0.113.1:54321
)。
步骤6:NAT转换器接收响应
- 宿主机的网络栈接收到响应后,NAT转换器识别出这是之前虚拟机请求的响应。
步骤7:NAT转换器转发响应
- NAT转换器将响应的目的地IP地址和端口转换回虚拟机的内部IP地址和端口(
192.168.56.101:12345
),然后将响应转发给虚拟机。
步骤8:虚拟机接收响应
- 虚拟机的网络栈接收到响应,并将其传递给发起请求的应用程序。
通过这个过程,虚拟机能够在NAT模式下访问外部网络,同时外部网络无法直接访问虚拟机,因为NAT转换器隐藏了虚拟机的内部网络结构,这为虚拟机提供了一定程度的安全保护。