问题:
打开虚拟机发现并没有网络选项 或者连上网有图标也是访问不了外网
(1)虚拟机:还原VMnet8的默认设置
1.找到虚拟网络编辑器

2.点击更改设置

3. 点击还原默认设置

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

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


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

2.点击网络和Internet

3.点击更改适配器选项

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

(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然后打开这个文件

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

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

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

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

3.进入防火墙

4.点击启用或关闭选项

5.点击关闭再确定

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

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

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

虚拟机联网的详细过程:
虚拟网络接口:
假设我们在宿主机上使用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