配置环境
使用镜像:CentOS-7-x86_64-Minimal-2009.iso
问题描述
当虚拟机需要配置多个网卡的时候,有时候如果更改完配置后,重启网络服务会发生失败的情况,
如以下情况
[root@localhost santi]# systemctl restart network
Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
官方提示启动network服务失败,原因是控制进程存在失败代码。
可以通过查看network.service服务状态查看具体信息:
[root@localhost santi]# systemctl status network.service
● network.service - LSB: Bring up/down networkingLoaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)Active: failed (Result: exit-code) since Mon 2024-10-14 08:21:28 EDT; 49s agoDocs: man:systemd-sysv-generator(8)Process: 8669 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)Oct 14 08:21:28 localhost network[8669]: RTNETLINK answers: File exists
Oct 14 08:21:28 localhost network[8669]: RTNETLINK answers: File exists
Oct 14 08:21:28 localhost network[8669]: RTNETLINK answers: File exists
Oct 14 08:21:28 localhost network[8669]: RTNETLINK answers: File exists
Oct 14 08:21:28 localhost network[8669]: RTNETLINK answers: File exists
Oct 14 08:21:28 localhost network[8669]: RTNETLINK answers: File exists
Oct 14 08:21:28 localhost systemd[1]: network.service: control process exited, code...s=1
Oct 14 08:21:28 localhost systemd[1]: Failed to start LSB: Bring up/down networking.
Oct 14 08:21:28 localhost systemd[1]: Unit network.service entered failed state.
Oct 14 08:21:28 localhost systemd[1]: network.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
提示"Failed to start LSB: Bring up/down networking." , 报错开启LSB失败,LSB全称Linux Standards Base,是Linux标准化领域所遵循的标准,制定了应用程序与运行环境之间的二进制接口。
Active:Failed ,状态是失败。
一般情况开启的状态是 active(exited) 一般关闭的状态是 inactive(dead)
[root@localhost santi]# systemctl status network
● network.service - LSB: Bring up/down networkingLoaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)Active: active (exited) since Mon 2024-10-14 08:28:49 EDT; 6h agoDocs: man:systemd-sysv-generator(8)Process: 8858 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)
从提示信息可以看出, Process: 8669 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE),进程服务存在,但状态是失败的。
问题解析
在Linux系统中,NetworkManager是一个网络管理工具,主要负责管理网络接口(device)和连接配置(connection),它可以用于配置和管理网络连接。配置文件用于定义网络接口、IP地址、DNS设置等,配置文件在/etc/sysconfig/network-scripts/ifcfg-networkcardname中。
当网卡重新配置的时候,会因为NetworkManager服务的开启,发生新增配置和旧有配置相矛盾,就会导致网络服务器异常。
解决方案
1、修改网卡MAC地址配置
[root@localhost santi]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:47:73:2e brd ff:ff:ff:ff:ff:ffinet 172.168.100.10/24 brd 172.168.100.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::b437:74fc:3ee4:147f/64 scope link noprefixroute valid_lft forever preferred_lft forever
link/ether 后面的地址为网卡mac地址,需要将该网卡地址添加到/etc/sysconfig/network-scripts/ifcfg-networkcardname中。
HWADDR=xxxxxxxxxx
然后 systemctl restart network 即可。
2、关闭NetworkManager服务
因为NetworkManager服务中的配置问题,所以可以将NetworkManager服务关闭即可。
[root@localhost santi]# systemctl stop NetworkManager
[root@localhost santi]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.[root@localhost santi]# systemctl status NetworkManager
● NetworkManager.service - Network ManagerLoaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)Active: inactive (dead) since Tue 2024-10-15 09:13:11 EDT; 10s agoDocs: man:NetworkManager(8)Process: 711 ExecStart=/usr/sbin/NetworkManager --no-daemon (code=exited, status=0/SUCCESS)Main PID: 711 (code=exited, status=0/SUCCESS)Oct 15 09:11:39 localhost.localdomain NetworkManager[711]: <info> [1728997899.5866] device (ens33): stat...d')
Oct 15 09:11:39 localhost.localdomain NetworkManager[711]: <info> [1728997899.5888] manager: NetworkMana...CAL
Oct 15 09:11:39 localhost.localdomain NetworkManager[711]: <info> [1728997899.5904] manager: NetworkMana...ITE
Oct 15 09:11:39 localhost.localdomain NetworkManager[711]: <info> [1728997899.5905] policy: set 'ens33' ...DNS
Oct 15 09:11:39 localhost.localdomain NetworkManager[711]: <info> [1728997899.5926] device (ens33): Acti...ed.
Oct 15 09:11:39 localhost.localdomain NetworkManager[711]: <info> [1728997899.5931] manager: NetworkMana...BAL
Oct 15 09:13:11 localhost.localdomain systemd[1]: Stopping Network Manager...
Oct 15 09:13:11 localhost.localdomain NetworkManager[711]: <info> [1728997991.7828] caught SIGTERM, shut...ly.
Oct 15 09:13:11 localhost.localdomain NetworkManager[711]: <info> [1728997991.7844] manager: NetworkMana...ITE
Oct 15 09:13:11 localhost.localdomain systemd[1]: Stopped Network Manager.
Hint: Some lines were ellipsized, use -l to show in full.
通过以上两种方式即可解决“Job for network.service failed because the control process exited with error code. See “systemctl status network.service” and “journalctl -xe” for details”的问题。