Ubuntu 22虚拟机【网络故障】快速解决指南
Ubuntu22虚拟机突然无法连接网络了,以下是故障排除步骤记录。
Ubuntu 22虚拟机网络故障快速解决指南
当在虚拟机中安装的 Ubuntu 22 系统出现 ping: connect: 网络不可达
和 ping: www.baidu.com: 域名解析出现暂时性错误
的报错时,通常意味着虚拟机无法正常连接到外部网络。这可能是由虚拟机软件的网络设置、Ubuntu 内部的网络配置或宿主机的网络状况引起的。
本教程将引导一步步排查并解决这些问题。
所需环境与准备
- 安装了 Ubuntu 22 的虚拟机(如 VirtualBox, VMware Workstation/Fusion)。
- 宿主机(运行虚拟机的电脑)能够正常访问互联网。
- 具备基本的 Linux 命令行操作知识。
排查和解决步骤
第一步:检查虚拟机软件的网络适配器设置 (在您的宿主机上操作)
这是最常见的问题原因。错误的虚拟机网络配置会导致虚拟机无法与宿主机或外部网络建立连接。
- 关闭您的Ubuntu虚拟机。
- 打开您的虚拟机软件 (如 VirtualBox 或 VMware)。
- 找到您的 Ubuntu 虚拟机,选中它,然后进入设置 (Settings)。
- 导航到“网络 (Network)”或“网络适配器 (Network Adapter)”部分。
- 检查并确认以下关键设置:
- 适配器已启用/已连接 (Adapter Enabled/Connected): 确保“启用网络适配器”或“已连接”选项是勾选的。
- “数据线已连接 (Cable connected)”或“在启动时连接 (Connect at power on)”: 确保这个选项是勾选的。
- 连接方式 (Attached to/Network Connection Type):
- 推荐首选:NAT (网络地址转换)。 这是最常用和最简单的设置,它允许虚拟机通过宿主机的网络连接访问互联网,无需复杂的配置。虚拟机通常能自动获取IP地址。
- 备选方案:桥接模式 (Bridged Adapter)。 如果NAT不起作用,或者您希望虚拟机在您的物理网络中获得一个独立的IP地址(就像一台真实的电脑一样),可以尝试“桥接模式”。选择此项后,请确保选择正确的宿主机物理网卡进行桥接。
- 保存设置并重新启动Ubuntu虚拟机。
第二步:在Ubuntu虚拟机内部检查网络接口状态 (使用 ip a
)
虚拟机重启后,进入Ubuntu系统,打开终端,执行以下命令来检查网络接口的状态。
-
检查网卡状态和IP地址:
ip a
- 查看结果: 寻找一个网络接口(通常是
ens33
、enp0s3
、eth0
或类似名称)。 - 确认:
- 该接口后面是否有
UP,BROADCAST,RUNING,MULTICAST
字样,表明网卡处于运行状态。 - 是否有
inet
行,后面跟着一个IP地址(例如inet 192.168.x.x/24
或inet 10.0.x.x/24
)。
- 该接口后面是否有
- 常见问题: 如果您的网卡显示
state DOWN
且没有inet
IP 地址,说明网卡未被激活或未获取到IP。这正是您最初遇到的问题。
- 查看结果: 寻找一个网络接口(通常是
第三步:手动激活网卡 (如果网卡是 DOWN
状态)
如果第二步中发现您的网卡(例如 ens33
)显示 state DOWN
且没有 IPv4 地址,需要手动将其激活。
-
手动将网卡激活:
在Ubuntu终端中输入以下命令(请将
sudo ip link set <接口名称> up
注:<接口名称> # 替换为实际的网卡名称,例如 ens33
-
再次检查网卡状态:
激活后,等待几秒钟,然后再次运行
ip a
命令:
ip a
- 预期结果: 此时,网卡(例如
ens33
)应该显示UP,BROADCAST,RUNNING,MULTICAST
。这表示网卡已激活。 - 注意: 此时它可能仍然没有 IPv4 地址 (
inet
行),这是正常现象,我们将在下一步解决。
- 预期结果: 此时,网卡(例如
第四步:强制获取 IPv4 地址 (DHCP 续租)
即使网卡已处于 UP
状态,如果没有获取到 IPv4 地址,仍然无法进行网络通信。我们需要强制网卡通过 DHCP 协议请求一个 IP 地址。
-
释放当前的IP地址(如果有的话)并重新获取:
在Ubuntu终端中输入以下命令(别忘了将 <接口名称> 替换为实际网卡名称):
sudo dhclient -r <接口名称> sudo dhclient <接口名称>
sudo dhclient -r <接口名称>
:这个命令会释放当前网卡可能持有的任何 DHCP 租约。sudo dhclient <接口名称>
:这个命令会强制网卡向 DHCP 服务器请求一个新的 IP 地址。
-
再次检查网卡状态和IP地址:
执行完上述两条命令后,等待几秒钟,然后再次运行 ip a 命令,查看网卡的状态:
ip a
- 预期结果: 应该能看到在自己的网卡(例如
ens33
)下方出现了一行inet
,后面跟着一个有效的 IPv4 地址(例如inet 192.168.220.128/24
),这表明已经成功获取到了 IP 地址。
- 预期结果: 应该能看到在自己的网卡(例如
第五步:检查默认网关和 DNS 服务器 (确认基础网络配置)
现在虚拟机就有 IP 地址了,接下来我们需要确保它有正确的路由和 DNS 配置来访问互联网。
-
检查默认网关 (Default Gateway):
运行以下命令来查看您的默认网关地址:
ip r
-
查看结果: 寻找一行以
default via
开头的记录,例如default via 192.168.220.1 dev ens33
。这里的192.168.220.1
就是自己的默认网关地址。 -
尝试 ping 自己的默认网关:
ping <自己的网关IP地址> # 例如:ping 192.168.220.1
- 预期结果: 如果能正常ping通,说明自己的虚拟机与虚拟路由器之间连接正常。
-
-
检查 DNS 服务器 (域名解析):
即使可以 ping 通 IP 地址,如果 DNS 服务器有问题,则仍然无法通过域名访问网站。
resolvectl status
-
查看结果: 在输出中找到自己的网络接口(如
ens33
),在其下方查找DNS Servers
字段。它应该显示至少一个DNS服务器的IP地址(例如8.8.8.8
或自己的路由器的IP)。 -
如果DNS服务器为空或不正确,或者
ping 8.8.8.8
成功但ping www.baidu.com
仍然失败:可以尝试手动编辑
/etc/resolv.conf
来添加公共 DNS 服务器。
sudo nano /etc/resolv.conf
在文件中添加或修改为:
nameserver 8.8.8.8 nameserver 114.114.114.114
保存文件(按
Ctrl+O
,回车,然后按
Ctrl+X
退出)。
-
第六步:最终验证网络连接
完成上述所有步骤后,再次尝试ping以验证网络是否完全恢复。
-
测试外部 IP 地址连通性:
ping 8.8.8.8
- 预期结果: 应该能看到数据包正常返回。
-
测试域名解析和外部网络连通性:
ping www.baidu.com
- 预期结果: 应该能看到
www.baidu.com
被解析成一个 IP 地址并且数据包正常返回。
- 预期结果: 应该能看到
第七步:配置静态IP(可选)
可参考教程:(2024年最新)Linux(Ubuntu) 中配置静态IP(包含解决每次重启后配置文件失效问题)
- 打开 netplan 配置文件
# 找到配置文件名
hua@hua-vm:~$ ls /etc/netplan/
01-network-manager-all.yaml# 打开配置文件
hua@hua-vm:~$ sudo vim /etc/netplan/01-network-manager-all.yaml
- 编辑 netplan 配置文件
network:version: 2renderer: networkd # 使用 systemd-networkd 作为后端,对于静态 IP 配置,networkd 通常更为直接和稳定# renderer: NetworkManager # 使用 NetworkManager 作为后端ethernets:ens33:dhcp4: false # 使用静态 IP addresses:- 192.168.220.128/24 # 静态 IP 和子网掩码routes:- to: defaultvia: 192.168.220.2 # 默认路由nameservers:addresses:- 8.8.8.8 # DNS 服务器 1- 114.114.114.114 # DNS 服务器 2
执行以下命令将权限设置为安全值:
sudo chmod 600 /etc/netplan/01-static-net.yaml
- 处理潜在的配置文件冲突
方案 (推荐 - 如果只使用静态 IP):删除或禁用默认的网络管理文件。
如果自己的 01-static-net.yaml
已经包含了所有必要的配置(包括 renderer: NetworkManager
,因为自 己的静态配置依赖它),那么默认的 01-network-manager-all.yaml
文件可能会导致冲突,或者至少是多余 的。可以将其删除或重命名以禁用它:
# 备份着不用
sudo mv /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.backup
# 或者直接删除,如果确定不需要它:
# sudo rm /etc/netplan/01-network-manager-all.yaml
这样做可以确保自己的 01-static-net.yaml
是唯一控制 ens33
的 Netplan 配置。
-
重新应用 Netplan 配置
在完成权限修正和可能的冲突处理后,再次尝试应用配置:
# 先检测配置,再根据提示应用配置
sudo netplan try# 或者,如果确信配置无误,可以直接应用(不提供回滚选项)
sudo netplan apply
额外提示与注意事项
- 宿主机网络检查: 确保自己的宿主机(运行虚拟机的电脑)可以正常访问互联网。如果宿主机本身没有网络,虚拟机自然也无法上网。
- 防火墙: 极少数情况下,Ubuntu 内置的防火墙 UFW 可能会阻止连接。自己可以临时禁用它进行测试:
sudo ufw disable
。如果网络恢复,说明是防火墙问题,需要配置防火墙规则而不是禁用它。测试完记得sudo ufw enable
重新启用。 - Netplan 配置: Ubuntu 22.04 使用 Netplan 管理网络配置,文件通常在
/etc/netplan/*.yaml
。虽然我们的方法通过dhclient
解决了问题,但如果将来出现持久性问题,可以检查这些文件内容(如cat /etc/netplan/*.yaml
),确保dhcp4: true
配置正确。不过,在桌面版Ubuntu上,通常由NetworkManager
负责管理,其配置文件非常简洁。 - 重启虚拟机: 在某些情况下,简单地重启整个虚拟机可以解决一些临时的网络问题。
希望这份详细的教程能帮助您顺利解决 Ubuntu 虚拟机网络问题!
相关文章:
Ubuntu 22虚拟机【网络故障】快速解决指南
Ubuntu22虚拟机突然无法连接网络了,以下是故障排除步骤记录。 Ubuntu 22虚拟机网络故障快速解决指南 当在虚拟机中安装的 Ubuntu 22 系统出现 ping: connect: 网络不可达 和 ping: www.baidu.com: 域名解析出现暂时性错误的报错时,通常意味着虚拟机无法…...

C++23 新特性:深入解析 std::views::join_with(P2441R2)
文章目录 std::views::join_with 基本用法处理字符串集合std::views::join_with 与其他视图的结合使用总结 随着C23标准的逐步推进,我们迎来了许多令人兴奋的新特性,其中之一就是 std::views::join_with。这个新特性是C23中引入的视图适配器,…...
购物车构件示例
通用购物车构件设计 注:代码仅用于演示原理,不可用于生产环境。 一、设计目标 设计一个高度可复用的购物车构件,具备以下特点: 与具体业务系统解耦支持多种应用场景(商城、积分系统等)提供标准化接口易于集成和扩展二、核心架构设计 1. 分层架构 ┌─────────…...

数据可视化大屏——智慧社区内网比对平台
综述分析: 智慧社区内网数据比对信息系统 这段代码实现了一个智慧社区内网数据比对信息系统的前端界面,采用三栏式布局展示各类社区安全相关数据。界面主要由左侧数据统计、中间地图展示和右侧数据分析三部分组成,使用了多种图表可视化技术…...
详解SLAM中的李群和李代数(中)
1 概述 在上一篇文章《详解SLAM中的李群和李代数(上)》中,我们已经通过对李群求导引出了李代数。在这篇文章中,我们就系统总结一下李代数的相关知识。 2 李代数 2.1 定义 李代数是一个向量空间 g \mathfrak{g} g与一个二元运算…...

Jenkins企业级实战
目标 在Windows操作系统上使用Jenkins完成代码的自动拉取、编译、打包、发布工作。 实施 1.安装Java开发工具包(JDK) Jenkins是基于Java的应用程序,因此需要先安装JDK。可以从Oracle官网或OpenJDK下载适合的JDK版本。推荐java17版本&#x…...

uniapp-商城-52-后台 商家信息(商家信息数据,云对象使用)
1、概述 已经通过好几个篇幅来说明商家信息,包括logo、商家名称,地址,电话以及商家简介。通过表单组件和标签,以及我们的文件上传标签,都做了说明。(logo上传,用的文件上传组件是上传到公共的数…...

MySQL 索引设计宝典:原理、原则与实战案例深度解析
目录 前言第一章:索引设计的基础原则 (知其然,更要知其所以然)第二章:实战案例:电商订单系统的索引设计第三章:索引设计的实践流程总结结语 🌟我的其他文章也讲解的比较有趣😁,如果喜…...

C#上传文件到腾讯云的COS
测试环境: vs2022 .net 6控制台应用程序 测试步骤如下: 1 添加子用户,目前是为了拿到secretId和secretKey,打开添加子用户界面链接:https://console.cloud.tencent.com/cam 并为子用户添加API 密钥 2 通过链接htt…...
java的Stream流处理
Java Stream 流处理详解 Stream 是 Java 8 引入的一个强大的数据处理抽象,它允许你以声明式方式处理数据集合(类似于 SQL 语句),支持并行操作,提高了代码的可读性和处理效率。 一、Stream 的核心概念 1. 什么是 Str…...

C PRIMER PLUS——第9节:动态内存分配、存储类别、链接和内存管理
目录 1.动态内存分配 1.1 malloc 函数 1.2 calloc 函数 1.3 realloc 函数 1.4 free 函数 1.5常见错误 1.6综合例题 2.C语言的内存结构 3.存储类别 3.1作用域(Scope) 3.2链接(Linkage) 3.3存储期(Storage Du…...

作业...
基础配置 RI R2 R3 R4 R5 例如R1 BGP配置 1,R1和R2之间使用直连接口IP地址来建立EBGP对等体关系 2、R2、R3、R4之间配置OSPF协议,保证各设备之间的网络互通,且通过重发布的方式发布路由 查看R2、R3、R4的OSPF路由表: \ R2、R3、R4使用环…...

IC ATE集成电路测试学习——电流测试的原理和方法
电流测试 我们可以通过电流来判断芯片的工作状态时,首先先了解下芯片的电流是如何产生的。 静态电流 理论上,CMOS结构的芯片静态时几乎不耗电 CMOS基本结构:Pmos Nmos 串联当逻辑电平稳定时: ➜ 要么Pmos导通,Nmo…...
redis数据结构-03 (HMSET、HGET、HGETALL)
Redis 哈希介绍:HMSET、HGET、HGETALL Redis 哈希是一种强大的数据结构,允许您在单个键内存储字段值对的集合。它们对于表示对象、配置或任何可以自然分组到字段中的数据非常有用。本课将向您介绍使用 Redis 哈希的基本命令: HMSET 、 HGET …...
2025年01月09日德美医疗前端面试
目录 vue2 的双向绑定的原理vue3 的双向绑定原理vue 的生命周期vue 子组件为何不能修改父组件的值js delete 删除数组的某一个值会怎么样vue 和 react 的 diff 算法什么是闭包原型链this指向 vue2 的双向绑定的原理 以下是 Vue 2 双向绑定的原理: 1. 核心概念 …...

快速理解动态代理
什么是动态代理(Java核心技术卷1的解释) 动态代理是一种运行时生成代理对象的技术,其本质是通过字节码增强在不修改原始类代码的前提下,动态拦截并扩展目标对象的行为。它通过代理对象对原始方法的调用进行拦截,并在方法执行前后注入自定义逻…...
实战演练:用 AWS Lambda 和 API Gateway 构建你的第一个 Serverless API
实战演练:用 AWS Lambda 和 API Gateway 构建你的第一个 Serverless API 理论千遍,不如动手一遍!在前面几篇文章中,我们了解了 Serverless 的概念、FaaS 的核心原理以及 BaaS 的重要作用。现在,是时候把这些知识运用起来,亲手构建一个简单但完整的 Serverless 应用了。 …...
spark算子介绍
目录 1. 转换算子(Transformation)1.1 常用转换算子 2. 行动算子(Action)2.1 常用行动算子 3. 转换算子与行动算子的区别4. 示例代码5. 总结 在Spark中,算子(Operator)是对数据集(RD…...

AugmentCode 非常昂贵的新定价
AugmentCode 现在的价格比 Cursor 和 Windsurf 的总和还要贵。 AugmentCode 曾是我开发工作流程的常用工具。出乎意料的是,他们改变了定价结构,让开发者们震惊不已。 原来的30 美元月费已经增长为50 美元月费,这是一个67%的增长。 改变我看法的不仅仅是价格上涨,还有他…...

前端面试2
1. 面试准备 1. 建立自己的知识体系 思维导图ProcessOn框架Vue elementUI自查 https://zh.javascript.info/ 借鉴 https://juejin.cn/post/6844904103504527374http://conardli.top/blog/article/https://github.com/mqyqingfeng/Bloghttp://47.98.159.95/my_blog/#html 2.技能…...

大疆卓驭嵌入式面经及参考答案
FreeRTOS 有哪 5 种内存管理方式? heap_1.c:这种方式简单地在编译时分配一块固定大小的内存,在整个运行期间不会进行内存的动态分配和释放。它适用于那些对内存使用需求非常明确且固定,不需要动态分配内存的场景,优点是…...
RAID磁盘阵列的概念(自用留档)
概念 RAID磁盘阵列是由若干个磁盘组成的磁盘组。 磁盘组可以恢复意外丢失的数据,保证了数据的安全性。 种类 根据实际情况的不同,RAID有若干种,以一个具有三块硬盘的硬盘组为例: RAID 0:将文件拆分成三份分别放到三…...
设计模式简述(十八)享元模式
享元模式 描述基本组件使用 描述 当内存中存在大量类似的对象时,可以考虑使用享元模式减少整体内存占用。 可以将相同的部分和不同的部分进行拆分,以达到多个对象共享相同部分内存的目的。 基本组件 通常享元对象通过共享的属性映射一个享元对象。 公…...

架构进阶:74页数据架构设计总体规划方案【附全文阅读】
本文讨论了数据资源规划在信息化战略规划中的重要性,详细阐述了数据资源规划的方法与过程,包括系统架构、业务能力模型、数据架构等。 文章指出,数据资源规划需要梳理企业级数据模型,明确数据分布和流向,建立统一的数据…...

情书大全v3.0.1
《情书大全》是一款致力于情书写作的手机应用程序,内置了丰富的情书范本及定制化服务。用户无论是想要倾诉爱意、交流友情还是传递亲情,都能在这款应用中寻得合适的情书样本。用户还可以根据自己的需求对模板进行编辑和调整,轻松创作出感人至…...

基于OpenCV的人脸识别:LBPH算法
文章目录 引言一、概述二、代码实现1. 代码整体结构2. 导入库解析3. 训练数据准备4. 标签系统5. 待识别图像加载6. LBPH识别器创建7. 模型训练8. 预测执行9. 结果输出 三、 LBPH算法原理解析四、关键点解析五、改进方向总结 引言 人脸识别是计算机视觉领域的一个重要应用&…...

鸿蒙 使用动画 简单使用
鸿蒙 使用动画 简单使用 动画就两个,属性动画和转场动画 属性动画只是组件的属性发生变化,而转场动画是指对将要出现或消失的组件做动画,而文档的其他动画只是给这两个动画效果锦上添花罢了 这篇文章简单介绍这两个动画,其他的…...
MySQL数据库迁移SQL语句指南
MySQL数据库迁移SQL语句指南 一、基础迁移方法 1. 使用mysqldump进行全量迁移 -- 导出源数据库(在命令行执行) mysqldump -u [源用户名] -p[源密码] --single-transaction --routines --triggers --events --master-data2 [数据库名] > migration…...

arcgis和ENVI中如何将数据输出为tif
一、arcgis中转换为tif 右键图层: Data -> Export Data, 按照图示进行选择,选择tiff格式导出即可,还可以选择其他类型的格式,比如envi。 二、 ENVI中转换为tif File -> Save As -> Save As (ENVI, NITF, TIFF, DTED) …...

RagFlow 完全指南(一):从零搭建开源大模型应用平台(Ollama、VLLM本地模型接入实战)
文章目录 1. 相关资源2. 核心特性3. 安装与部署3.1 环境准备3.2 部署RagFlow3.3 更新RagFlow3.4 系统配置 4. 接入本地模型4.1 接入 Ollama 本地模型4.1.1 步骤4.1.2 常见问题 4.2 接入 VLLM 模型 5. 应用场景6. 总结 1. 相关资源 官网GitHub文档中心 2. 核心特性 …...