Ubuntu 22虚拟机【网络故障】快速解决指南

Ubuntu22虚拟机突然无法连接网络了,以下是故障排除步骤记录。

Ubuntu 22虚拟机网络故障快速解决指南

当在虚拟机中安装的 Ubuntu 22 系统出现 ping: connect: 网络不可达ping: www.baidu.com: 域名解析出现暂时性错误的报错时,通常意味着虚拟机无法正常连接到外部网络。这可能是由虚拟机软件的网络设置、Ubuntu 内部的网络配置或宿主机的网络状况引起的。

本教程将引导一步步排查并解决这些问题。

所需环境与准备

  • 安装了 Ubuntu 22 的虚拟机(如 VirtualBox, VMware Workstation/Fusion)。
  • 宿主机(运行虚拟机的电脑)能够正常访问互联网。
  • 具备基本的 Linux 命令行操作知识。

排查和解决步骤

第一步:检查虚拟机软件的网络适配器设置 (在您的宿主机上操作)

这是最常见的问题原因。错误的虚拟机网络配置会导致虚拟机无法与宿主机或外部网络建立连接。

  1. 关闭您的Ubuntu虚拟机。
  2. 打开您的虚拟机软件 (如 VirtualBox 或 VMware)。
  3. 找到您的 Ubuntu 虚拟机,选中它,然后进入设置 (Settings)
  4. 导航到“网络 (Network)”或“网络适配器 (Network Adapter)”部分。
  5. 检查并确认以下关键设置:
    • 适配器已启用/已连接 (Adapter Enabled/Connected): 确保“启用网络适配器”或“已连接”选项是勾选的。
    • “数据线已连接 (Cable connected)”或“在启动时连接 (Connect at power on)”: 确保这个选项是勾选的。
    • 连接方式 (Attached to/Network Connection Type):
      • 推荐首选:NAT (网络地址转换)。 这是最常用和最简单的设置,它允许虚拟机通过宿主机的网络连接访问互联网,无需复杂的配置。虚拟机通常能自动获取IP地址。
      • 备选方案:桥接模式 (Bridged Adapter)。 如果NAT不起作用,或者您希望虚拟机在您的物理网络中获得一个独立的IP地址(就像一台真实的电脑一样),可以尝试“桥接模式”。选择此项后,请确保选择正确的宿主机物理网卡进行桥接。
  6. 保存设置并重新启动Ubuntu虚拟机。
第二步:在Ubuntu虚拟机内部检查网络接口状态 (使用 ip a)

虚拟机重启后,进入Ubuntu系统,打开终端,执行以下命令来检查网络接口的状态。

  1. 检查网卡状态和IP地址:

    ip a
    
    • 查看结果: 寻找一个网络接口(通常是 ens33enp0s3eth0 或类似名称)。
    • 确认:
      • 该接口后面是否有 UP,BROADCAST,RUNING,MULTICAST 字样,表明网卡处于运行状态。
      • 是否有 inet 行,后面跟着一个IP地址(例如 inet 192.168.x.x/24inet 10.0.x.x/24)。
    • 常见问题: 如果您的网卡显示 state DOWN 且没有 inet IP 地址,说明网卡未被激活或未获取到IP。这正是您最初遇到的问题。
第三步:手动激活网卡 (如果网卡是 DOWN 状态)

如果第二步中发现您的网卡(例如 ens33)显示 state DOWN 且没有 IPv4 地址,需要手动将其激活。

  1. 手动将网卡激活:

    在Ubuntu终端中输入以下命令(请将

    sudo ip link set <接口名称> up
    

    注:<接口名称> # 替换为实际的网卡名称,例如 ens33

  2. 再次检查网卡状态:

    激活后,等待几秒钟,然后再次运行

    ip a
    

    命令:

    ip a
    
    • 预期结果: 此时,网卡(例如 ens33)应该显示 UP,BROADCAST,RUNNING,MULTICAST。这表示网卡已激活。
    • 注意: 此时它可能仍然没有 IPv4 地址 (inet 行),这是正常现象,我们将在下一步解决。
第四步:强制获取 IPv4 地址 (DHCP 续租)

即使网卡已处于 UP 状态,如果没有获取到 IPv4 地址,仍然无法进行网络通信。我们需要强制网卡通过 DHCP 协议请求一个 IP 地址。

  1. 释放当前的IP地址(如果有的话)并重新获取:

    在Ubuntu终端中输入以下命令(别忘了将 <接口名称> 替换为实际网卡名称):

    sudo dhclient -r <接口名称>
    sudo dhclient <接口名称>
    
    • sudo dhclient -r <接口名称>:这个命令会释放当前网卡可能持有的任何 DHCP 租约。
    • sudo dhclient <接口名称>:这个命令会强制网卡向 DHCP 服务器请求一个新的 IP 地址。
  2. 再次检查网卡状态和IP地址:

    执行完上述两条命令后,等待几秒钟,然后再次运行 ip a 命令,查看网卡的状态:

    ip a
    
    • 预期结果: 应该能看到在自己的网卡(例如 ens33)下方出现了一行 inet,后面跟着一个有效的 IPv4 地址(例如 inet 192.168.220.128/24),这表明已经成功获取到了 IP 地址。
第五步:检查默认网关和 DNS 服务器 (确认基础网络配置)

现在虚拟机就有 IP 地址了,接下来我们需要确保它有正确的路由和 DNS 配置来访问互联网。

  1. 检查默认网关 (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通,说明自己的虚拟机与虚拟路由器之间连接正常。
  2. 检查 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以验证网络是否完全恢复。

  1. 测试外部 IP 地址连通性:

    ping 8.8.8.8
    
    • 预期结果: 应该能看到数据包正常返回。
  2. 测试域名解析和外部网络连通性:

    ping www.baidu.com
    
    • 预期结果: 应该能看到 www.baidu.com 被解析成一个 IP 地址并且数据包正常返回。
第七步:配置静态IP(可选)

可参考教程:(2024年最新)Linux(Ubuntu) 中配置静态IP(包含解决每次重启后配置文件失效问题)

  1. 打开 netplan 配置文件
# 找到配置文件名
hua@hua-vm:~$ ls /etc/netplan/
01-network-manager-all.yaml# 打开配置文件
hua@hua-vm:~$ sudo vim /etc/netplan/01-network-manager-all.yaml
  1. 编辑 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
  1. 处理潜在的配置文件冲突

方案 (推荐 - 如果只使用静态 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 配置。

  1. 重新应用 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 虚拟机网络问题!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实战springcloud alibaba

实战springcloud alibaba 前言 如何搭建一套最新的springcloud alibaba&#xff0c;以适配项目升级需求&#xff1f; 1.版本的选择 2.各组件的适配 3.新技术的敏感性 4.前瞻性&#xff0c;几年内不会被淘汰 参考资料&#xff1a;Spring Cloud Alibaba 参考文档 https://spring…

泰迪杯特等奖案例学习资料:基于卷积神经网络与集成学习的网络问政平台留言文本挖掘与分析

(第八届“泰迪杯”数据挖掘挑战赛A题特等奖案例深度解析) 一、案例背景与核心挑战 1.1 应用场景与行业痛点 随着“互联网+政务”的推进,网络问政平台成为政府与民众沟通的重要渠道。某市问政平台日均接收留言超5000条,涉及民生、环保、交通等20余类诉求。然而,传统人工…

DVWA靶场保姆级通关教程--06不安全验证机制

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 原理详解 1. 前后端验证逻辑不一致 2. 验证码值保存在客户端 3. 验证码可预测或重复 4. 验证码验证与逻辑解耦 一、处理关卡报错 二、low级别源…

【LeetCode Hot100 | 每日刷题】排序数组

912. 排序数组 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题&#xff0c;时间复杂度为 O(nlog(n))&#xff0c;并且空间复杂度尽可能小。 示例 1&…

Windows系统下使用Kafka和Zookeeper,Python运行kafka(二)

1.配置 Zookeeper 进入解压后的 Zookeeper 目录&#xff08;例如 F:\zookeeper\conf&#xff09;&#xff0c;复制 zoo_sample.cfg 文件并命名为 zoo.cfg&#xff08;如果 zoo.cfg 已经存在&#xff0c;则直接编辑该文件&#xff09;。 打开 zoo.cfg 文件&#xff0c;配置相关…

Web 自动化之 HTML JavaScript 详解

文章目录 一、HTML 常用标签二、javascript 脚本1、什么是 javascript(js)2、 js变量和函数3、js 弹窗处理4、js 流程控制语句和 switch 结构语句应用 一、HTML 常用标签 HTML&#xff1a;超文本标记语言 超文本&#xff1a;不仅只包含文字&#xff0c;还有超链接、视频…这些…

el-date-picker的type为daterange时仅对开始日期做限制

文章目录 前言绣球html代码一、正确代码二、错误代码 前言绣球 需求是这样的&#xff0c;开始日期需要限制只能选择今天的日期&#xff0c;结束日期只能选择今天之后的日期。结束日期很常见&#xff0c;但是单纯限制开始日期&#xff0c;还是蛮少见的&#xff0c;尤其是datera…

观测云:安全、可信赖的监控观测云服务

引言 近日&#xff0c;“TikTok 遭欧盟隐私监管机构调查并处以 5.3 亿欧元”一案&#xff0c;再次引发行业内对数据合规等话题的热议。据了解&#xff0c;仅 2023 年一年就产生了超过 20 亿美元的 GDPR 罚单。这凸显了在全球化背景下&#xff0c;企业在数据隐私保护方面所面临…

认识中间件-以及两个简单的示例

认识中间件-以及两个简单的示例 什么是中间件一个响应处理中间件老朋友 nest g如何使用为某个module引入全局引入编写逻辑一个日志中间件nest g mi 生成引入思考代码进度什么是中间件 官方文档 中间件是在路由处理程序之前调用的函数。中间件函数可以访问请求和响应对象,以及…

基于Flask、Bootstrap及深度学习的水库智能监测分析平台

基于Flask、Bootstrap及深度学习的水库智能监测分析平台 项目介绍 本项目是基于Flask框架构建的水库智能监测分析平台&#xff0c;集水库数据管理、实时监测预警、可视化分析和智能预测功能于一体。 预测水位的预警级别&#xff1a;蓝色预警没有超过正常水位且接近正常水位1米…

springboot生成二维码到海报模板上

springboot生成二维码到海报模板上 QRCodeController package com.ruoyi.web.controller.app;import com.google.zxing.WriterException; import com.ruoyi.app.domain.Opportunity; import com.ruoyi.app.tool.QRCodeGenerator; import com.ruoyi.common.core.page.TableDat…

如何使用极狐GitLab 软件包仓库功能托管 maven?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 Maven 包 (BASIC ALL) 在项目的软件包库中发布 Maven 产物。然后&#xff0c;在需要将它们用作依赖项时安装它…

企业如何将钉钉付款单高效集成到金蝶云星空?

钉钉数据集成到金蝶云星空&#xff1a;修改下推的付款单③ 在企业信息化系统中&#xff0c;数据的高效流转和准确对接是实现业务流程自动化的关键。本文将分享一个实际案例&#xff0c;展示如何通过轻易云数据集成平台&#xff0c;将钉钉中的付款单数据无缝集成到金蝶云星空系…

python 实现文件批量重命名

以下是使用Python实现文件批量重命名的示例代码。该代码可以将指定目录下的文件按照一定规则进行重命名,这里以将文件重命名为带有编号的文件名为例: import osdef batch_rename(directory):if not os.path.isdir(directory):print(

Pandas学习笔记(四)

DataFrame对象 文章目录 DataFrame对象导入本文需要的包DataFrame与Series的相似之处使用read_csv函数导入DataFrameSeries和DataFrame的共享与专有属性Series和DataFrame的共有方法 对DataFrame进行排序按照单列进行排序按照多列进行排序按照索引进行排序对列索引进行排序 设置…

DA14585墨水屏学习(2)

一、user_svc2_wr_ind_handler函数 void user_svc2_wr_ind_handler(ke_msg_id_t const msgid,struct custs1_val_write_ind const *param,ke_task_id_t const dest_id,ke_task_id_t const src_id) {// sprintf(buf2,"HEX %d :",param->length);arch_printf("…

树莓派5+Ubuntu24.04 LTS串口通信 保姆级教程

【背景】 各位&#xff0c;除了树莓派4B之外&#xff0c;我又搞了个树莓派5, 装的也是Ubuntu24.04 LTS服务器版。装系统的方法跟树莓派4B一样&#xff0c;没什么好说的。装完了系统之后&#xff0c;我就想装个wiringPi来试试串口&#xff0c;却发现这个树莓派5的串口和树莓派4…

【QT】UDP通讯本地调试

qt已经写好了udp通讯代码&#xff0c;现在要进行测试。 1、终端输入ipconfig查看本机网卡的ipv4地址 2、 用udpBind函数&#xff0c;绑定到此ip和自定义的端口号。 3、 打开网络调试助手&#xff0c;自动检测到本机的ip地址&#xff0c;输入任意一个和程序里不一样的端口号。 …

在 Elasticsearch 中连接两个索引

作者&#xff1a;来自 Elastic Kofi Bartlett 解释如何使用 terms query 和 enrich processor 来连接 Elasticsearch 中的两个索引。 更多有关连接两个索引的查询&#xff0c;请参阅文章 “Elastic&#xff1a;开发者上手指南” 中的 “丰富数据及 lookup” 章节。 Elasticsea…

LabVIEW的PID参数自适应控制

在工业控制领域&#xff0c;PID 控制凭借结构简单、稳定性好、工作可靠等优点被广泛应用。然而&#xff0c;传统固定参数的 PID 控制在面对复杂多变的工况时&#xff0c;控制效果往往难以达到最优。基于 LabVIEW 实现 PID 控制根据情况选择参数&#xff08;即参数自适应调整&am…