问题:
打开虚拟机发现并没有网络选项 或者连上网有图标也是访问不了外网

 

(1)虚拟机:还原VMnet8的默认设置
1.找到虚拟网络编辑器

9521d2333dd441b9ef56132a7f72c3a8
2.点击更改设置

330c55c2b080450e70598e5774f868c2
3. 点击还原默认设置

ec59535e90c6b27c1075de2c762a3456
(2) 宿主机:启动VMware DHCP Service 和 VMware NAT Service服务
1.使用win+R输入services.msc 查看主机的服务

 

dceb1eb006ca382ec2b408a4ab64231d
2. 找到VMware DHCP Service 和VMware NAT Service 将两个服务启动

8ee12b6d57ee5fd93cf6f33c78ce5f87

c97820239845eea582f8f6ae2076315c
(3)更改适配器选项
1.点击电脑右下角的图表再进入所有设置

614ecbc98d4af52444b8889dfd889ace
2.点击网络和Internet

b5ee3305577dec780cd1cc5606d01dae
3.点击更改适配器选项

bb9b44f18a80cf5a8143371baed00709
4.将下面两个虚拟网络适配器启动

76d55eca49780572b202cb3192da3eef
(4)配置虚拟机网卡:(启动虚拟机注意要切换为NAT模式)
1.切换为root用户(root用户才能更改虚拟网卡文件)
2.先切换到目录:cd /etc/sysconfig/network-scripts/
cd /etc/sysconfig/network-scripts/
AI写代码
3.再查看:
ls
AI写代码
4.找到一个ifcfg-ens开头的文件: 我的文件是ifcfg-ens33然后打开这个文件

6ecd2c168f8b1737f2bee115b5c00a44
5.使用vi / vim 编辑文件
vim ifcfg-ens33
AI写代码
6.将BOOTPROTO改为dhcp,ONBOOT改为yes

ceeff86cdf4a3699dbf0c0005c97d572

BOOTPROTO:指定引导协议。no表示不使用引导协议(如DHCP或BOOTP)来获取IP地址。

ONBOOT:指定是否在系统启动时自动启动网络接口。no表示在系统启动时不会自动启动这个接口。

7.重启虚拟网卡
systemctl restart network.service
AI写代码
bash
(5)自动分配ip地址
1.自动分配ip地址
nmcli connection modify ens33 ipv4.method auto
AI写代码
bash
2.激活网卡
nmcli connection up ens33
AI写代码
bash
经过前面的几个步骤基本上虚拟机已经可以上网了,如果还不能就是其他的原因。

检验:虚拟机ping主机
1.查看主机的ip地址,win+R打开搜索框,输入cmd

676f0b3d0aad2c122a9d96cdf714d6b5
2.输入ipconfig查看网络配置信息
ipconfig
AI写代码
3.找到 VMware Network Adapter VMnet8: IPv4 地址的ip地址

4a0507dabd9190d75a6121c40880c518
4.看虚拟机是否能ping通主机 (发现可以ping通)

12f3522742625c7d21003e4af97bb741如果虚拟机不能ping通主机,可以试试关闭宿主机的防火墙
1.搜索控制面板并打开
2.点击系统和安全

ee2625ac4ad9e2d7970e4d158c6b3c79
3.进入防火墙

92d6019be5a60f679ab47b3e100b9f0d
4.点击启用或关闭选项

f112ed17212214936a1821361a395317
5.点击关闭再确定

d44e3bdc8b12f27184673055a5a4419a
6.最后回到虚拟机看是否能ping通主机
检验:宿主机ping通虚拟机
(1)打开终端输入ifconfig命令查看虚拟机的网络配置信息(主要是查看虚拟机的ip地址)
ifconfig

662acca0a397889e962ac535ceb0445d
在宿主机的终端检验 结果如下: (发现可以ping通)

8585b490e92765ec2640700bd748391d
如果宿主机不能ping通虚拟机,可以试试关闭虚拟机防火墙
1.打开虚拟机终端,输入systemctl stop firewalld.service //停止firewall
systemctl stop firewalld.service
AI写代码
2.输入:systemctl disable firewalld.service //禁止firewall开机启动
systemctl disable firewalld.service
AI写代码
3.关闭后再试试能不能ping通
注意可能出现的情况 !!!
当你的电脑重启后,进入虚拟机如果出现如下图的情况:网络连接选项都没有!!!(天塌了)

别急!!!问题就是主机没有开启 VMware DHCP Service 和 VMware NAT Service 自启动!!!

(1)再次进入服务

(2) 找到 VMware DHCP Service 和 VMware NAT Service 先进行启动

 

(3) 单机鼠标右键选择属性

(4) 将手动启动类型改为自动

(5) 选择自动类型后点击应用再确定即可

(6)回到虚拟机,发现网络连接选项出来了

(7)点击连接即可

原理介绍
在NAT(网络地址转换)模式下,虚拟机能够连上网的原理涉及以下几个关键点:

1. NAT的工作原理
NAT是一种网络地址转换技术,它允许一个网络中的多个设备共享一个公共IP地址访问外部网络。在NAT模式下,虚拟化软件在宿主机上创建了一个虚拟的NAT路由器,用于将虚拟机的私有IP地址转换为宿主机的公共IP地址。

2. 虚拟网络适配器
虚拟机通过虚拟网络适配器(vNIC)与宿主机的虚拟网络交换机(如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. 端口转发
如果虚拟机需要提供网络服务,可以通过端口转发将宿主机的某个端口映射到虚拟机的特定端口,从而允许外部网络访问虚拟机上的服务。

3f85fd4b7c547520d07ffd42bb1e4924

虚拟机联网的详细过程:
虚拟网络接口:

假设我们在宿主机上使用VirtualBox或VMware等虚拟化软件创建了一个虚拟机,并为该虚拟机分配了一个虚拟网络接口(通常是虚拟网卡)。
NAT转换器:

宿主机上会运行一个NAT转换器,它负责将虚拟机的内部IP地址转换为主机的外部IP地址。
以下是具体的联网过程:

步骤1:虚拟机发起网络请求

虚拟机内部的应用程序发起一个网络请求,比如尝试访问一个网站
步骤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转换器隐藏了虚拟机的内部网络结构,这为虚拟机提供了一定程度的安全保护。
————————————————
版权声明:本文为CSDN博主「程序员阿鹏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2401_83418369/article/details/144067604