一、分析如下
从日志提供的信息来看,network.service(一个用于管理网络的传统SysV init脚本)试图启动,但失败了,退出代码是exit-code,状态是1/FAILURE。重复的RTNETLINK answers: File exists消息表明在尝试设定网络配置时,系统试图创建一个已经存在的网络路由或规则。
RTNETLINK是Linux内核和用户空间软件之间交换网络相关信息的API。当你看到"File exists"这样的信息时,它通常表示一个网络接口或路由已经配置好了,但是服务试图再次创建它。
- 查看NetworkManager的状态
[root@localhost network-scripts]# systemctl status NetworkManager
- 停止NetworkManager
[root@localhost network-scripts]# systemctl stop NetworkManager.service
[root@localhost network-scripts]# service NetworkManager status
- 重启network成功
二、总结
1. 让我们用一个比喻来说明 NetworkManager 在 Linux 中的作用
想象一下,你有一个不断变化的音乐播放列表,你希望能够顺畅地在不同的音乐源(比如广播电台、CD、在线音乐服务)之间切换,而且你希望每次切换都是自动的,不需要你亲自去调整每个设备的设置。NetworkManager 就像是一个聪明的音乐经理,它知道你的喜好,自动为你调整和连接到最佳的音乐源。
现在,让我们把这个比喻应用到网络上:NetworkManager 是 Linux 系统中的一个工具,它帮助你自动连接到互联网。无论是通过 Wi-Fi 还是有线网络,它都能自动找到并连接到网络,就像你进入家里,手机自动连接到 Wi-Fi 一样。如果你去了一个新的地方,NetworkManager 会帮你搜索附近的 Wi-Fi,并记住你输入过的密码,这样下一次你还要连接时,它会自动帮你连上。就像你的朋友家的 Wi-Fi,你输入一次密码后,下次再去他家时,你的手机就会自动连接。
如果你的网络连接中断了,比如 Wi-Fi 信号突然不好了,NetworkManager 就会像一个机智的助手那样,立刻帮你寻找其他可用的网络连接,尽量不让你的互联网使用受到影响。而对于那些经常移动的人,比如经常出差的商务人士,NetworkManager 就像一个旅行助手,无论他们去哪里,都能帮他们找到并连接到最好的网络,让他们始终保持在线。简单来说,NetworkManager 是 Linux 中的一个“网络连接向导”,它帮助你无缝地在不同的网络之间流转,让你几乎不需要操心网络的连接问题。
2. 为什么会启动失败
启动 NetworkManager 后如果 network (传统的网络服务) 启动失败,尤其是在你设置了静态 IP 地址的情况下,这通常是因为 NetworkManager 和传统的 network 服务之间存在冲突。当两者同时尝试管理同一网络接口时,就可能发生这种情况。具体来说,原因可能包括:
-
服务冲突:NetworkManager 和传统的 network 服务(例如,在 CentOS/RHEL 系统中的 network 或在 Debian/Ubuntu 系统中的 networking 服务)都试图控制网络接口。由于两者的管理方式不同,它们可能会互相干扰,导致配置不正确或服务启动失败。
-
配置覆盖:如果你手动配置了静态 IP 地址,NetworkManager 启动时可能会尝试应用它的配置,这可能会覆盖你手动设置的静态 IP 配置。这种情况下,网络服务可能因为配置冲突或缺失必要的配置信息而无法启动。
-
自动化管理:NetworkManager 设计用来自动化网络配置,包括自动获取 IP 地址(通过 DHCP)。如果你指定了静态 IP,但 NetworkManager 配置未正确更新以反映这一点,它可能会尝试分配另一个 IP 地址,导致网络服务启动失败。
解决办法:
-
禁用一个服务:一般建议只让 NetworkManager 或传统的 network 服务中的一个来管理网络。如果你偏好使用 NetworkManager,那么可以考虑停用并禁用传统的 network 服务。
-
正确配置 NetworkManager:确保 NetworkManager 的配置正确反映了你的网络设置,包括静态 IP 地址。你可以通过图形界面工具或
nmcli
(NetworkManager 的命令行工具)来检查和修改配置。 -
检查网络配置文件:对于静态 IP 配置,确保 NetworkManager 的配置文件正确设置,并且没有其他旧的配置遗留在系统中可能造成冲突。
-
查看日志:检查系统日志(如使用
journalctl
命令)可以提供为何 network 服务启动失败的线索。特别是查看 NetworkManager 和网络服务的日志,可能会发现具体的错误信息或冲突提示。
处理这类问题时,最重要的是确定哪个服务(NetworkManager 或传统 network 服务)应该负责网络管理,并确保系统配置反映了这一选择。