CentOS 7 网络服务起不来?一文教你彻底排查与解决

admin

在运维工作中,CentOS 7 作为一个经典的 Linux 发行版,依然被广泛使用,由于系统版本较老以及网络配置的复杂性,很多新手或老手在使用过程中经常会遇到“网络服务起不来”的问题,当你运行 systemctl start networkservice network restart 却发现服务无法启动时,该如何应对?

本文将为你提供一套系统的排查思路和解决方案,助你快速恢复网络连接。

初步诊断:查看服务状态

我们需要确认问题的具体表现,打开终端,输入以下命令查看网络服务的当前状态:

CentOS 7 网络服务起不来?一文教你彻底排查与解决

systemctl status network

如果看到类似以下的输出,说明服务确实挂了:

  • Failed to start Network.service: Unit Network.service failed to load: No such file or directory.
  • Job for network.service failed because the control process exited with error code.
  • Active: inactive (dead)

核心原因一:配置文件中缺少 ONBOOT

这是最常见的原因,CentOS 7 的网卡配置文件通常位于 /etc/sysconfig/network-scripts/ 目录下,文件名通常以 ifcfg- 开头,ifcfg-ens33

请检查该文件的内容,重点寻找 ONBOOT 这一行:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

常见错误:

BOOTPROTO=dhcp
DEVICE=ens33
ONBOOT=no   <-- 这里被设置为 no,导致开机不自启

解决方案:ONBOOT 修改为 yes,并保存退出(Esc + wq)。

BOOTPROTO=dhcp
DEVICE=ens33
ONBOOT=yes  <-- 修改为 yes

修改完成后,再次执行 systemctl restart network 即可启动网络。

核心原因二:NetworkManager 与 network 服务冲突

CentOS 7 默认使用 NetworkManager 服务来管理网络,而不是传统的 network 服务,如果你的系统中 NetworkManager 正在运行,它可能会接管网络控制权,导致传统的 network 服务无法启动。

排查方法: 输入 systemctl status NetworkManager,如果显示 Active: active (running),说明 NetworkManager 正在运行。

解决方案: 如果你想使用传统的 network 服务,可以尝试禁用 NetworkManager:

systemctl disable NetworkManager
systemctl stop NetworkManager

然后重新启动 network 服务:

systemctl start network

注意: 禁用 NetworkManager 后,修改网卡配置文件(如 ifcfg-ens33)可能不会自动生效,你需要重启网络服务或重启机器才能生效。

核心原因三:IP 地址配置错误

ONBOOT 已开启,但网络依然起不来,可能是 IP 地址配置错误,导致系统无法获取 IP 或无法通信。

  1. 检查 IP 是否冲突: 使用 ip addr 查看当前分配的 IP,确保没有与局域网内其他设备重复。
  2. 检查静态 IP 配置: 如果你配置的是静态 IP,请检查子网掩码(NETMASK)和网关(GATEWAY)是否填写正确。
  3. 检查 DNS: 编辑 /etc/resolv.conf,确保有可用的 DNS 服务器地址,否则可能无法解析域名。

核心原因四:SELinux 或防火墙限制

虽然这种情况较少见,但有时 SELinux 或防火墙会阻止

文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码