概念
在NetworkManager里,有两个非常重要的概念。基本上,理清楚这两个概念对应的含义和区别,剩下的通过文档就可以非常容易的掌握NetworkManager的使用了。
第一个概念是device,也就是设备,怎么理解呢,一个设备对应一个网口,基本上ip link
里看到的那些都有对应的设备,基本上可以认为就是物理的网卡,每个物理网卡都会是一个device,当然,有些虚拟的网卡,也会是一个device,比如网桥bridge等。当然也有些区别,物理网卡是现实存在的设备,本质上最终是NetworkManager来管理它,而虚拟机网卡就是NetworkManager因为连接需要而生成的网卡。使用nmcli device
命令,可以看到当前NetworkManager所识别的设备,以及:
- 这个设备是否在NetworkManager的管理之下
- 设备所对应的连接配置信息
- 设备当前的连接配置
举个例子:
[root@localhost ~]# nmcli device
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected eth0
lo loopback unmanaged --
可以很明确的看到我这台机器有两个设备,分别是eth0
和lo
,其中eth0
是以太网类型,被NetworkManager管理且对应的连接配置为eth0
,而lo
是loopback,目前不被NetworkManager所管理。在终端里执行,正常的设备会显示绿色,不正常的设备显示成红色,不被管理的显示为灰色,还是很清晰的。
另外一个概念是connection,也就是连接。怎么理解呢,连接就是一系列配置,比如IP地址获取方式是DHCP或者手动配置,如果是手动配置,则配置哪些IP地址,网关,DNS等等信息,这些配置非常的多,就不一一细说了,具体的看文档就好。
需要注意的是,连接是需要最终被apply到某个device上的,而且针对同一个device,可以有多个connection。但是,在任意时刻,有且只能有一个活动的connection被apply到一个device。有点绕,但是思考一下这个场景就很容易理解了:针对笔记本的无线网卡,在公司,连接的自然是公司的WIFI,这就需要一个connection,到了家里,又需要连接家里的WIFI,这就是另外一个connection,这俩都是针对同一个device的配置,也不会同时起作用。其实这个场景在服务器上不太常见,所以一般情况下,服务器上基本就可以配置成一个connection对应一个device就解决了。
弄明白这俩者之间的关系,很多东西就很顺畅了。
给网卡配置静态IP地址
NetworkManager使用nmcli这个命令来配置系统的网卡
可以通过nmcli connection show
查看当前的链接

假设网卡是ens33,你要设置:
- IP:
192.168.1.100
- 子网掩码:
255.255.255.0
- 网关:
192.168.1.1
- DNS:
8.8.8.8
nmcli connection modify ens33 ipv4.addresses 192.168.1.100/24 #地址和子网掩码
nmcli connection modify ens33 ipv4.gateway 192.168.1.1 #网关
nmcli connection modify ens33 ipv4.dns "8.8.8.8 114.114.114.114" # DNS服务器
nmcli connection modify ens33 ipv4.method manual # 静态IP模式
nmcli connection modify ens33 connection.autoconnect yes #自动启动连接网卡
如果觉得以上太复杂,可以用一条命令完成
nmcli con mod ens33 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 ipv4.method manual
nmcli con up ens33
重启网卡
nmcli connection down ens33 #停用网卡
nmcli connection up ens33 # 启用网卡
nmcli connection modify ens33 connection.autoconnect yes # 设置开机自启
恢复 DHCP自动获取IP
nmcli connection modify ens33 ipv4.method auto
nmcli connection up ens33