https://zhuanlan.zhihu.com/p/426926356
我们在使用CentoOS系统时偶尔会遇到配置都正确但network启动不了的问题,这问题经常是由NetworkManager引起的,关闭NetworkManager并取消开机启动network就能正常启动。使用的Linux经常使用命令行模式,所以大家都不怎么去了解NetworkManager,造成了糊里糊涂的解决问题。下面我们看一下NetworkManager的基础使用。
NetworkManage与network功能类似,都是用于管理网络,NetworkManager提供了nmctl和nmtui两个工具:
nmctl:命令行工具
[root@mx ~]# nmcli --help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }
OPTIONS
-a, --ask ask for missing parameters
-c, --colors auto|yes|no whether to use colors in output
-e, --escape yes|no escape columns separators in values
-f, --fields <field,...>|all|common specify fields to output
-g, --get-values <field,...>|all|common shortcut for -m tabular -t -f
-h, --help print this help
-m, --mode tabular|multiline output mode
-o, --overview overview mode
-p, --pretty pretty output
-s, --show-secrets allow displaying passwords
-t, --terse terse output
-v, --version show program version
-w, --wait <seconds> set timeout waiting for finishing operations
OBJECT
g[eneral] NetworkManager's general status and operations
n[etworking] overall networking control
r[adio] NetworkManager radio switches
c[onnection] NetworkManager's connections
d[evice] devices managed by NetworkManager
a[gent] NetworkManager secret agent or polkit agent
m[onitor] monitor NetworkManager changes
[root@mx ~]#
我们可以直接使用命令行来管理网络,下面是对应参数项目与配置文件内的参数对应关系图。
# 比如我这里设置eth0为手动设置静态地址,为192.168.31.5,子网掩码24,自启动
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.31.5/24 connection.autoconnect yes
nmcli connection up eth0
nmtui:伪图形界面
两个都是用来管理网络,但是有一个前提:nmctl networking 状态必须是enable否则设备状态为unmanaged,这会导致network启动不了!
查看方式如下:
[root@master03 ~]# nmcli networking
enabled
使用nmtui来查看网络,直接在命令行下敲nmtui,就会出现蓝底的伪图形界面,可以很方便的配置服务器的网络。
设置完成后,要记得在第二项目中设置对应网卡启动,这样才能正常使用。
如果遇到network无法启动的情况,检测配置是是否有问题,如果是服务器(多网口),检测网线是否插在你启动的网网口上 检测你的NetworkManager是否启动,如果启动了可参考一下方法处理 简单粗暴:关闭NetworkManager服务,并取消开机启动(要是你使用的为命令行模式,没有有用图形界面,可以放心使用这种方法,使用图形界面的话还是建议自己排查一下) 排查NetworkManage:
[root@master03 ~]# nmcli networking on
[root@master03 ~]# systemctl restart NetworkManager
[root@master03 ~]# systemctl restart network
[root@master03 ~]# nmcli device
DEVICE TYPE STATE CONNECTION
ens33 ethernet connected ens33
docker0 bridge unmanaged --
lo loopback unmanaged --
[root@master03 ~]#
[root@master03 ~]# nmcli connection
NAME UUID TYPE DEVICE
ens33 4d574cba-a63e-49ae-8cb2-d663a8dd796e ethernet ens33
如果没有启用
注意了:我的连接名称是ens33,根据你自己的情况自己改进,所有操作完成以后都执行以下命令。
[root@master03 ~]# systemctl restart NetworkManager
[root@master03 ~]# systemctl restart network
否则可能不生效,当然上面两种网络管理方式network与NetworkManager其它是相辅相成的作用,只需要使用其中一种方式来管理即可,另外一种可以禁用掉(注意:至少保持一种自启动,否则可能会出现开机没有网络的状况)。
我比较喜欢使用NetworkManager来管理网络,更大的强大和易用,所以我这里把NetworkManager设置为开机启动,network为禁止开机启动。使用以下命令来查看启动状态。
# 查看NetworkManager的是否为自启动
[root@mx ~]# systemctl list-unit-files --type service | grep NetworkManager
# 查看network是否设置为自启动
[root@mx ~]# chkconfig --list | grep network
至此!