Linux学习,CentOS虚拟机网络存在问题,主网络接口 ens33没有分配到 IP 地址,按照这个流程,99% 的虚拟机无网络访问问题都能得到解决。请从第一

如果你也遇到这种情况,输入了 ip addr命令以后,从输出结果来看,CentOS 虚拟机网络存在问题 。核心问题是:​主网络接口 ens33没有分配到 IP 地址。

虽然接口状态是 UP(已开启),但没有 inet地址行,这意味着它无法与网络通信。virbr0是虚拟化桥接接口,通常由 KVM/libvirt 创建,与您当前的上网问题关系不大。

别担心,这个问题很常见,通常由虚拟机软件的网络配置或 CentOS 自身的网络服务导致。请按照以下步骤排查和解决:


​第一步:检查虚拟机软件的网络设置(最常见原因)​​

这是最可能的问题所在。请先关闭您的 CentOS 虚拟机,然后检查虚拟机软件(如 VMware Workstation 或 VirtualBox)的设置。

  1. ​网络连接模式 ​:确保虚拟机的网络适配器处于 ​​「NAT 模式」​ ​ 或 ​​「桥接模式」​。

    • NAT 模式 :虚拟机通过宿主机的网络上网,会由虚拟机软件内置的 DHCP 服务器自动分配 IP。这是最简单推荐的模式。
    • 桥接模式:虚拟机会像一台真实设备一样接入您家的局域网,由您的路由器分配 IP。
    • 请勿选择「仅主机模式」​,此模式下虚拟机只能与宿主机通信,无法上网。
  2. ​连接状态 ​:确保网络适配器选项已勾选 ​​「启动时连接」​。

  3. ​还原设置​:如果之前修改过高级网络设置,可以尝试将其恢复默认。

​修改完虚拟机设置后,重启 CentOS 虚拟机 ,再次运行 ip addr查看 ens33是否获取到 IP 地址。


​第二步:在 CentOS 内部重启网络服务​

如果虚拟机网络设置正确但问题依旧,请在系统内部尝试重启网络。

  1. ​使用 root 权限​:在终端中执行以下命令(需要输入 root 密码):

    复制代码
    su -

    或者使用 sudo:

    css 复制代码
    sudo -i
  2. ​重启网络服务​(CentOS 7):

    复制代码
    systemctl restart network
  3. ​或者尝试重启 NetworkManager​(较新版本):

    复制代码
    systemctl restart NetworkManager
  4. ​再次检查​:

    sql 复制代码
    ip addr show ens33

    查看是否出现了 inet地址(通常是 192.168.x.x或 10.x.x.x)。


​第三步:强制 DHCP 客户端重新获取 IP​

如果重启服务无效,可以命令网络接口主动去请求一个 IP 地址。

  1. 先释放当前可能的无效配置:

    复制代码
    dhclient -r ens33
  2. 然后重新请求:

    复制代码
    dhclient ens33
  3. 再次运行 ip addr检查结果。


​第四步:检查并手动配置网络(前述方法均无效时)​​

如果以上方法都失败,可能是 DHCP 获取失败,您可以尝试手动配置一个静态 IP。

  1. 编辑网络配置文件(需要使用 sudo或 root权限):

    bash 复制代码
    sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
  2. 确保文件中有以下关键配置(如果不存在就添加,如果存在就修改):

    ini 复制代码
    BOOTPROTO=dhcp        # 如果是DHCP自动获取,就保持这样
    ONBOOT=yes            # 这一项必须为yes,表示开机自启

    如果您想改用静态IP​(例如在桥接模式下),可以修改为:

    ini 复制代码
    BOOTPROTO=static      # 改为静态
    ONBOOT=yes
    IPADDR=192.168.1.150  # 您想设置的IP,需在路由器网段内且未被占用
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1   # 您的路由器网关地址
    DNS1=8.8.8.8          # DNS服务器地址
  3. 保存退出后,​重启网络服务​:

    复制代码
    sudo systemctl restart network

​总结与排查顺序​

  1. 首要检查 :虚拟机软件的 ​「网络适配器」​ 是否设置为 NAT 并勾选了 ​「启动时连接」​。
  2. 内部重启 :在 CentOS 内以 root 身份执行 systemctl restart network。
  3. 强制获取 :执行 dhclient -r ens33和 dhclient ens33。
  4. 最终手段 :检查 /etc/sysconfig/network-scripts/ifcfg-ens33文件中的 ONBOOT=yes配置,或改为静态 IP。

按照这个流程,99% 的虚拟机无网络访问问题都能得到解决。请从第一步开始尝试。

相关推荐
硅基手札1 天前
操作系统设计思想系列 13 · NuttX 深度 — POSIX 飞控底座 + RTOS 群像
架构·操作系统·嵌入式开发·ecos·sel4·nuttx
2CM_Embed2 天前
μC/OS-II 任务管理详解(三):任务创建、任务栈、删除、优先级修改与挂起恢复
操作系统
硅基手札2 天前
操作系统设计思想系列 11 · ThreadX 深度 — 预抢占阈值·认证型设计
操作系统·开源项目·嵌入式开发·嵌入式操作系统·设计思想·threadx
云计算练习生2 天前
什么是 Bash?Linux 默认 Shell 的核心功能
linux·操作系统·bash·shell·命令解释器
硅基手札3 天前
操作系统设计思想系列 10 · VxWorks 深度 — 硬实时旗舰·完全抢占内核
操作系统·实时操作系统·嵌入式开发·vxworks·设计思想
m0_547486663 天前
《Ubuntu Linux操作系统与实验教程》全套PPT课件2026
linux·ubuntu·操作系统
kyle~3 天前
C++ 原子操作、内存模型与无锁并发编程
linux·开发语言·c++·操作系统
硅基手札3 天前
Android 系统全景专栏 00 · 总目录
android·操作系统·嵌入式开发
m0_547486663 天前
《Linux操作系统应用项目教程》全套PPT课件2026
linux·运维·操作系统
Lucis__4 天前
Redis持久化机制解析
redis·缓存·操作系统·文件·非关系型数据库·1024程序员节