文章目录
说明【必看】
- 环境和系统说明
环境是openstack,镜像是centos7.6的qcow2格式。
[root@xz-sms-2 yum.repos.d]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@xz-sms-2 yum.repos.d]#
- 现在有一批qocw2安装的cenots7.6的虚拟机,将dhcp网络改为none静态ip的时候,启动网卡报错了
- 我还以为是我改静态ip的原因导致的网卡启动错误。
- 但实际上我用新申请的虚拟机,还没动网卡文件的时候,直接重启网卡也是报错。
- 新创建的虚拟机报错信息如下
[root@xz-sms-2 ~]#
[root@xz-sms-2 ~]# 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.
[root@xz-sms-2 ~]# systemctl status network
● network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2022-05-27 09:54:50 UTC; 55s ago
Docs: man:systemd-sysv-generator(8)
Process: 23535 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)
CGroup: /system.slice/network.service
└─3585 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient--eth0.lease -pf /var/run/dhclient-eth0.pid -H xz-sms-2 eth0
- 但又有一个神奇的问题,我们实验中应该知道,如果网络服务状态为failed的话,那么此时网络是无法使用的,但是我们这是能正常使用的,如下
下面ip打码了。 这个问题其实挺离谱的,也颠覆了我的认知,网络服务为failed,ip能正常使用。
- 而且我把配置文件改为手动的静态ip,ip依然存在并且也能ping通网关,那么理论上不用可以处理,也不用管咯,反正ip能正常使用。
可是,秉着严谨的工作态度,这个问题必须处理,没遇到过,就百度咯,百度了许多文章,发现都是那两三种处理方法,没啥屁用,还浪费了我不少时间百度,那么百度不行,又得根据已有的经验一步步排查咯,开搞。
报错日志
报错日志如下
[root@xz-sms-2 ~]# tail -f /var/log/messages
....
May 27 09:54:49 xz-sms-2 network: Determining IP information for eth0...dhclient(3585) is already running - exiting.
May 27 09:54:49 xz-sms-2 network: This version of ISC DHCP is based on the release available
May 27 09:54:49 xz-sms-2 network: on ftp.isc.org. Features have been added and other changes
May 27 09:54:49 xz-sms-2 network: have been made to the base software release in order to make
May 27 09:54:49 xz-sms-2 network: it work better with this distribution.
May 27 09:54:49 xz-sms-2 network: Please report for this software via the CentOS Bugs Database:
May 27 09:54:49 xz-sms-2 network: http://bugs.centos.org/
May 27 09:54:49 xz-sms-2 network: exiting.
May 27 09:54:49 xz-sms-2 dhclient[23664]: This version of ISC DHCP is based on the release available
May 27 09:54:49 xz-sms-2 network: failed.
May 27 09:54:49 xz-sms-2 dhclient[23664]: on ftp.isc.org. Features have been added and other changes
May 27 09:54:49 xz-sms-2 network: [FAILED]
May 27 09:54:49 xz-sms-2 dhclient[23664]: have been made to the base software release in order to make
May 27 09:54:49 xz-sms-2 dhclient[23664]: it work better with this distribution.
May 27 09:54:49 xz-sms-2 dhclient[23664]: ution.
May 27 09:54:49 xz-sms-2 dhclient[23664]: Please report for this software via the CentOS Bugs Database:
May 27 09:54:49 xz-sms-2 dhclient[23664]: http://bugs.centos.org/
May 27 09:54:49 xz-sms-2 dhclient[23664]: centos.org/
May 27 09:54:49 xz-sms-2 dhclient[23664]: exiting.
May 27 09:54:50 xz-sms-2 network: Bringing up interface eth1: ERROR : [/etc/sysconfig/network-scripts/ifup-eth] Device eth1 does not seem to be present, delaying initialization.
May 27 09:54:50 xz-sms-2 /etc/sysconfig/network-scripts/ifup-eth: Device eth1 does not seem to be present, delaying initialization.
May 27 09:54:50 xz-sms-2 network: [FAILED]
May 27 09:54:50 xz-sms-2 network: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2 network: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2 network: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2 network: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2 network: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2 network: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2 network: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2 network: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2 network: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2 systemd: network.service: control process exited, code=exited status=1
May 27 09:54:50 xz-sms-2 systemd: Failed to start LSB: Bring up/down networking.
May 27 09:54:50 xz-sms-2 systemd: Unit network.service entered failed state.
May 27 09:54:50 xz-sms-2 systemd: network.service failed.
- 虽然报错很多,但实际可用参考的就下面几行
状态是failed
[root@xz-sms-2 ~]# systemctl status network
● network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2022-05-27 09:54:50 UTC; 55s ago
Docs: man:systemd-sysv-generator(8)
Process: 23535 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)
CGroup: /system.slice/network.service
└─3585 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient--eth0.lease -pf /var/run/dhclient-eth0.pid -H xz-sms-2 eth0
May 27 09:54:50 xz-sms-2.novalocal network[23535]: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2.novalocal network[23535]: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2.novalocal network[23535]: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2.novalocal network[23535]: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2.novalocal network[23535]: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2.novalocal network[23535]: RTNETLINK answers: File exists
May 27 09:54:50 xz-sms-2.novalocal systemd[1]: network.service: control process exited, code=exited status=1
May 27 09:54:50 xz-sms-2.novalocal systemd[1]: Failed to start LSB: Bring up/down networking.
May 27 09:54:50 xz-sms-2.novalocal systemd[1]: Unit network.service entered failed state.
May 27 09:54:50 xz-sms-2.novalocal systemd[1]: network.service failed.
[root@xz-sms-2 ~]#
处理Failed to start LSB: Bring up/down networking.流程
网上方法
- 下面3个方法来自网上,如果你能直接处理最好,因为假单省事。
第一种方法:修改MAC地址
-
这样造成的原因是配置文件中MAC与当前网卡MAC不一致,只需要修改一下配置文件即可。
-
1、用
ip addr show
命令查看当前MAC地址【ifconfig和ip a都是可以的】
-
2、修改/etc/sysconfig/network-scripts/下以ifcfg开头的网络链接文件
例如vim /etc/sysconfig/network-scripts/ifcfg-eth1
将HWADDR=”00:0c:29:7f:76:e8″
改为HWADDR=”00:0c:29:5d:6f:01″
-
3、
systemctl restart network.servic
重启网络成功,这样状态既可正常。
第二种方法、禁用NetworkManager
-
1、
systemctl stop NetworkManager
-
2、
systemctl disable NetworkManager
-
重启之后,网络恢复正常
第三种方法、修改网卡文件名【警示作用】
- 下面方法是不可取法,完全不建议这么搞,我放这是当做警示作用,我后面也会新建一个文件名,会放标准且简单的方法。
- 装完系统后网卡默认都是有名称的,例如eno9、eno17…等等,如果你之前修改过网卡名称的话,例如修改成eth0名称的话,可以按照以下方法修改配置文件:
1、修改网卡名和配置文件
# mv /etc/sysconfig/network-scripts/ifcfg-enoeno9 /etc/sysconfig/network-scripts/ifcfg-eth0
修改配置文件里面name和device
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
UUID=d890d6e6-01f6-4063-bf70-cd4e1787d0a8
HWADDR=00:50:56:8b:57:82 #这里原文件没有,手动添加上去
DEVICE=eth0
ONBOOT=yes
IPADDR=IP
NETMASK=掩码
GATEWAY=网关
2、修改/etc/sysconfig/grub,添加net.ifnames=0 biosdevname=0
# vi /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=”$(sed ‘s, release .*$,,g’ /etc/system-release)”
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT=”console”
GRUB_CMDLINE_LINUX=”crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap net.ifnames=0 biosdevname=0 rhgb quiet”
GRUB_DISABLE_RECOVERY=”true”
3、手动生成70-persistent-net.rules以及其他方法
查看接口的MAC地址
# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777728: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:28:ac:54 brd ff:ff:ff:ff:ff:ff
生成文件
# vi /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{
address}==”00:0c:29:28:ac:54″, ATTR{
type}==”1″, KERNEL==”eth*”, NAME=”eth0″
我的方法
- 上面方法都无效以后,来跟着我的方法来弄吧,不成功私信我,免费给处理!
- 敢这么自信的原因是因为,当你了解所有虚机网络的东西以后,会发现网卡启动失败就这么几个原因,常规无法解决,就只剩下那么一两种可能。
- 注:下面ip都是经过修改的。
配置yum源并安装NetworkManager
- 如果你是公网跳过配置。
- 我这是内网,公网不能用,所以需要先准备一个yum源,因为我直接在这个段搭建了一个http源,所以我直接用的http源,你配置本地源,不会的,去我之前文档中翻翻。
[root@xz-sms-2 ~]# cd /etc/yum.repos.d/
[root@xz-sms-2 yum.repos.d]# ls
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
[root@xz-sms-2 yum.repos.d]# mkdir bak
[root@xz-sms-2 yum.repos.d]# mv * bak
mv: cannot move ‘bak’ to a subdirectory of itself, ‘bak/bak’
[root@xz-sms-2 yum.repos.d]# ls
bak
[root@xz-sms-2 yum.repos.d]#
# 下面ip有修改
[root@xz-sms-2 yum.repos.d]# cat http.repo
[http]
name=http
baseurl=http://1.1.1.41/yumrepo/
gpgcheck=0
enabled=1
[root@xz-sms-2 yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
http | 2.9 kB 00:00:00
http/primary_db | 3.1 MB 00:00:00
repo id repo name status
http http 4,021
repolist: 4,021
[root@xz-sms-2 yum.repos.d]#
- 安装NetworkManager
[root@xz-sms-2 yum.repos.d]# yum -y install NetworkManager
。。。
Installed:
NetworkManager.x86_64 1:1.12.0-6.el7
Dependency Installed:
NetworkManager-libnm.x86_64 1:1.12.0-6.el7
Complete!
- 启动服务
可以不需要enable的
[root@xz-sms-2 yum.repos.d]# systemctl start NetworkManager
[root@xz-sms-2 yum.repos.d]# systemctl is-active NetworkManager
active
[root@xz-sms-2 yum.repos.d]#
nmcli操作
查看
- 先简单做个对比,下面2个命令可以看到,ip设备只有eth0,但nmcli con show中看到有2个设备名称,我这有如下问题
- 1、System eth0的NAME名称和DEVICE名称没有对齐,需要修改为和DEVICE一致。
- 2、多了一个System eth1,需要删除。
[root@xz-sms-2 yum.repos.d]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 1.2.3.48 netmask 255.255.255.0 broadcast 1.2.3.255
inet6 fe80::f816:3eff:fedf:7bcf prefixlen 64 scopeid 0x20<link>
ether fa:16:3e:df:7b:cf txqueuelen 1000 (Ethernet)
RX packets 60295 bytes 10943742 (10.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4754 bytes 648523 (633.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 6 bytes 416 (416.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6 bytes 416 (416.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@xz-sms-2 yum.repos.d]# nmcli con show
NAME UUID TYPE DEVICE
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
System eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet --
[root@xz-sms-2 yum.repos.d]#
删除没有DEVICE名称的信息
- 如我这需要删除System eth1
root@xz-sms-2 yum.repos.d]# nmcli con show
NAME UUID TYPE DEVICE
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
System eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet --
[root@xz-sms-2 ~]# nmcli con del 'System eth1'
Connection 'System eth1' (9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04) successfully deleted.
[root@xz-sms-2 ~]# nmcli con show
NAME UUID TYPE DEVICE
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
[root@xz-sms-2 ~]#
修改NAME名称
修呢呢,就是将NAME名称修改为和DEVICE名称一致。
[root@xz-sms-2 ~]# nmcli con show
NAME UUID TYPE DEVICE
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
[root@xz-sms-2 ~]# nmcli con modify 'System eth0' con-name eth0
[root@xz-sms-2 ~]#
[root@xz-sms-2 ~]# nmcli con show
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
[root@xz-sms-2 ~]#
重启网卡失败及处理【重启网卡会自动生成多余网络信息】
- 现在有个问题,重启网卡会报错,而且每次重启后,之前删除的网卡名称都会重新生成。
- 后面我进入到网卡配置文件,发现我删除了eth1以后,网卡配置文件并不行,所以我怀疑是这个配置文件存在的原因导致我重启网络nmcli里面会重新生成行信息并导致我重启失败。
- 所以解决方法就是: 删除网卡文件里面的eth1文件【要确定该网卡是不存在的,ifconfig查看有没有eth1这个网卡】,移动到其他路径也可以【我就是用的这个方法】
- 然后重新删除nmcli里面的eth1
[root@xz-sms-2 ~]# 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.
[root@xz-sms-2 ~]#
[root@xz-sms-2 ~]# nmcli con show
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
System eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet --
[root@xz-sms-2 ~]#
[root@xz-sms-2 ~]# cd /etc/sysconfig/network-scripts/
[root@xz-sms-2 network-scripts]# ls | grep ifcfg-et
ifcfg-eth0
ifcfg-eth1
[root@xz-sms-2 network-scripts]# mv ifcfg-eth1 /root
[root@xz-sms-2 network-scripts]# nmcli con show
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
System eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet --
[root@xz-sms-2 network-scripts]# nmcli con del 'System eth1'
Connection 'System eth1' (9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04) successfully deleted.
[root@xz-sms-2 network-scripts]# nmcli con show
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
最终调整IP为静态并重启网卡
- 改为静态呢,一般我们就只改BOOTPROTO为none或static,然后直接加上ip网关掩码3大内容即可,其他的可以不用动,然后重启网络就好了
做了上面修改,此时重启网卡就不会报错了
[root@xz-sms-2 network-scripts]# cat ifcfg-
ifcfg-eth0 ifcfg-lo
[root@xz-sms-2 network-scripts]# cat ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=none
DEVICE=eth0
HWADDR=FA:16:3E:DF:7B:CF
MTU=1500
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=eth0
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
IPADDR=1.2.3.48
NETMASK=255.255.255.0
GATEWAY=1.2.3.254
[root@xz-sms-2 network-scripts]#
[root@xz-sms-2 network-scripts]# systemctl restart network
[root@xz-sms-2 network-scripts]#
[root@xz-sms-2 network-scripts]# ping 1.2.3.254
PING 1.2.3.254 (1.2.3.254) 56(84) bytes of data.
64 bytes from 1.2.3.254: icmp_seq=1 ttl=254 time=1.55 ms
64 bytes from 1.2.3.254: icmp_seq=2 ttl=254 time=1.47 ms
^C
--- 1.2.3.254 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.470/1.513/1.557/0.058 ms
[root@xz-sms-2 network-scripts]#
生成网卡配置文件信息
-
我们这是有一批机器嘛,同是centos7.6的系统同一个镜像,但是问题却不重样,真是离谱他妈给离谱开门,离谱到家了。
-
之前第一个操作系统我只顾着处理问题,没有记录,我这篇文章内容是用的第二台来做的记录,但发现最后这个系统的配置文件又没有消失,但是上面的nmcli信息又会因为重启而自动生成,哎。
-
反正问题就是: 重启网卡以后【没有报错】,/etc/sysconfig/network-scripts目录里面的ifcfg-eth0这个网卡配置文件没了,但是ip是有的,而且网络也能正常使用,就是单纯的配置文件没了。
网卡信息没了呢,是不能手动vi给新建一个呢,这样会有问题,必须用命令生成,命令如下- 71: 创建一个名称和设备都为eth0的文件信息【eth0用你ifconfig看到的设备名称】
- 72-74,修改网络为静态ip
- 75-76:重启网络并测试网络
-
通过上面方式生成的配置文件如下,可以看到前面没有2行注释内容,如果是openstack自动生成的虚拟机,该文件开头是有2行注释信息的。
[root@xz-sms-1 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@xz-sms-1 network-scripts]# cat ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=8b7314d9-49de-4db3-b3d8-6178e350dbf9
DEVICE=eth0
ONBOOT=yes
IPADDR=1.2.3.55
NETMASK=255.255.255.0
GATEWAY=1.2.3.254
[root@xz-sms-1 network-scripts]#
网卡配置文件重启自动还原问题
我这没有遇到这个问题,但如果你遇到了,可以去看我之前写的这篇文章
完美解决linux网卡配置文件重启自动还原问题【如/etc/sysconfig/network-scripts/ifcfg-eth0配置文件重启后信息被还原】