【Linux】解决由于 network和 NetworkManager不兼容,导致的网络服务错误

今天尝试启动在虚拟机中启动一些中间件环境(用docker管理),使用ssh连接虚拟机,却始终无法连接
在这里插入图片描述

我怀疑是不是虚拟机的ip地址改变了,但是之前我的虚拟机ip已经在 /etc/sysconfig/network-scripts 目录下,创建了对应的局域网网卡设置ifcfg-ens33

通过ipconfig,可以看到,这里并没有ens33,前三个都是docker网桥接口的名称,每个docker网络都会创建一个对应的虚拟网桥接口。
在这里插入图片描述

  • 所以我通过 ip addr 指令,查看真实的虚拟网卡的信息。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
   valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host
   valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
   link/ether 00:0c:29:d7:b5:4c brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
   link/ether 52:54:00:b0:a8:63 brd ff:ff:ff:ff:ff:ff
   inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
   valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
   link/ether 52:54:00:b0:a8:63 brd ff:ff:ff:ff:ff:ff
5: br-04540592dade: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
   link/ether 02:42:d0:bf:51:92 brd ff:ff:ff:ff:ff:ff
   inet 172.19.0.1/16 brd 172.19.255.255 scope global br-04540592dade
   valid_lft forever preferred_lft forever
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
   link/ether 02:42:1a:43:91:f2 brd ff:ff:ff:ff:ff:ff
   inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
   valid_lft forever preferred_lft forever
7: br-f64a3536172d: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
   link/ether 02:42:7b:6f:d6:49 brd ff:ff:ff:ff:ff:ff
   inet 172.20.0.1/16 brd 172.20.255.255 scope global br-f64a3536172d
   valid_lft forever preferred_lft forever
  • 可以看到虚拟机的主网卡接口 ens33 当前处于DOWN状态。
    ip link set ens33 up 命令将其启用。
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
   link/ether 00:0c:29:d7:b5:4c brd ff:ff:ff:ff:ff:ff
   inet6 fe80::20c:29ff:fed7:b54c/64 scope link

此时 ens33 的状态为 up,说明正常启用。

但是启动 network服务 systemctl start network 仍然失败 (Active:failed),
在这里插入图片描述

  • 从输出信息来看,是网络接口冲突导致的(RTNETLINK),可能同一个IP地址或网桥被多个接口使用。
    我怀疑是docker虚拟接口占用了网络配置,与系统的网络配置发生了冲突。所以我停止了docker服务 systemctl stop docker,并且禁用了相关的网络接口ip link set <docker接口名> down

  • 然后再次尝试启动 network服务,结果仍然和之前的一样启动失败。通过 journalctl -xe 查看network.service的日志信息,network服务仍然failed。说明不是docker 服务的问题。

在这里插入图片描述
查看虚拟机ip,显示ens33 状态为 UP,但是未分配ip地址

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
   inet6 fe80::20c:29ff:fed7:b54c prefixlen 64 scopeid 0x20<link>
   ether 00:0c:29:d7:b5:4c txqueuelen 1000 (Ethernet)
   RX packets 0 bytes 0 (0.0 B)
   RX errors 0 dropped 0 overruns 0 frame 0
   TX packets 8 bytes 656 (656.0 B)
   TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

我再次检查了/etc/sysconfig/network-scripts/ifcfg-ens33,配置没有问题

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
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="ens33"
UUID="5be4b2fe-675f-4bb6-83cf-e3f358b3652b"
DEVICE="ens33"
ONBOOT="yes"
#IP地址
IPADDR=192.168.72.100
#网关
GATEWAY=192.168.72.2
#域名解析器
DNS1=192.168.72.2
  • 手动在 ens33 上配置临时 ip,让ens33生效
ip link set ens33 up
ip addr add 192.168.72.100/24 dev ens33		# 设置 ip 为 192.168.72.100,子网掩码为 255.255.255.0
ip route add default via 192.168.72.2		# 网关为 192.168.72.2
  • 设置ip 成功,ping www.baidu.com 成功接收数据包,且通过ssh 可以正常连接虚拟机,但是 network服务 还是无法启动。

这是一种临时的解决方案,当我重启虚拟机时,network 服务再次 failed😩,且 ens33并没有作为网络接口,状态仍为 DOWN。

在最后,我认识到了 NetworkManager 和 network服务之间的关系。

两种服务都负责管理和配置网络接口,两者之间存在一定的功能重叠。
network 是比较传统的网络管理方式,偏向于命令行的方式控制ifcfg-ens33,而 NetworkManager 是后来引入的新方案,更偏向于 图形化界面或命令行解决。两种服务存在兼容问题,可以禁用 NetworkManager 服务,解决此问题。

  • 所以我最后禁用了 NetworkManager服务,并且可以正常启动network服务。且ip 配置都正常。
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl restart network

重启后,网络配置正常。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值