网文地址:http://www.yanjun.pro/?p=48
因为Linux的开源特性,不同的发行版使用的网络配置方式都不一样,所以我们接触不同的系统,就需要记不同的配置方式,有没有一种统一的配置方式呢,那我们就可以使用 network-manager 服务来统一配置方式,这里我们使用 network-manager 的命令行方式 (nmcli) 来管理。
1、概述
nmcli 是 Linux 中(centOS 从7开始支持)用于控制网络管理器的命令行工具,用于创建、显示、编辑、删除、激活和停用网络连接,以及控制和显示网络设备状态。
首先检查系统是否有 network-manager 服务,如果执行 nmcli
成功,说明系统中支持 network-manager,如果系统中没有该服务,需要先安装才能使用。
-
安装 network-manager 服务
- Redhat/centOS:
sudo yum install network-manager -y
- Debian/Ubuntu:
sudo apt install network-manager -y
- Redhat/centOS:
-
启动network-manager服务
[root@localhost ~]# systemctl enable --now NetworkManager
-
关闭networking管理
将需要使用 network-manager 管理的接口注释掉
[root@localhost ~]# vim /etc/network/interfaces source /etc/network/interfaces.d/* # The loopback network interface # auto lo # iface lo inet loopback # The primary network interface # auto ens1 # iface ens1 inet dhcp
-
禁用networking服务
[root@localhost ~]# systemctl stop networking [root@localhost ~]# systemctl disable networking Synchronizing state of networking.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install disable networking Removed "/etc/systemd/system/network-online.target.wants/networking.service". Removed "/etc/systemd/system/multi-user.target.wants/networking.service".
-
使用network-manager管控网络
[root@localhost ~]# vim /etc/NetworkManager/NetworkManager.conf [main] plugins=ifupdown,keyfile [ifupdown] # 将该参数由false修改为true managed=true
-
重启network-manager服务
[root@localhost ~]# systemctl restart NetworkManager
2、命令详解
nmcli 语法格式
```
nmcli [OPTIONS...] {help | general | networking | radio | connection | device | agent | monitor} [COMMAND] [ARGUMENTS...]
```
2.1、通用命令(general)
使用此命令显示网络管理器状态和权限。你还可以获取和更改系统主机名,以及网络管理器日志记录级别和域。
2.1.1、语法
nmcli general {status | hostname | permissions | logging} [ARGUMENTS...]
2.1.2、常用参数
- status: 显示网络管理器的总体状态。当没有为
nmcli general
提供其他命令时,这是默认操作。 - **hostname [hostname]:**获取并更改系统主机名。如果没有参数,这将打印当前配置的主机名。当传递主机名时,它将被移交给网络管理器,以设置为新的系统主机名。
- permissions: 显示当前用户对网络管理器可允许的操作权限,如启用和禁用网络、更改Wi-Fi和WWAN状态、修改连接等。
- logging [level level] [domains domains…] 不带参数时,用于获取网络管理器日志记录级别和域;带参数时,用于修改日志级别和域值。有关可用的级别和域值,请参见NetworkManager.conf(5)。
2.1.3、示例
# 显示网络状态
[root@localhost ~]# nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
已连接 完全 已启用 已启用 已启用 已启用
# 显示主机名
[root@localhost ~]# nmcli general hostname
localhost.localdomain
# 修改主机名
[root@localhost ~]# nmcli general hostname vm_centos7
[root@localhost ~]# nmcli general hostname
vm_centos7
# 显示当前用户对网络管理器可允许的操作权限
[root@vm_centos7 ~]# nmcli general permissions
PERMISSION VALUE
org.freedesktop.NetworkManager.enable-disable-network 是
org.freedesktop.NetworkManager.enable-disable-wifi 是
org.freedesktop.NetworkManager.enable-disable-wwan 是
org.freedesktop.NetworkManager.enable-disable-wimax 是
。。。
# 显示当前日志级别
[root@vm_centos7 ~]# nmcli general logging
LEVEL DOMAINS
INFO IP4
2.2、网络控制命令(networking)
用于查询网络管理器网络状态、启用、禁用网络
2.2.1、语法
nmcli networking {on | off | connectivity} [ARGUMENTS...]
2.2.2、常用参数
- on | off: 启用|禁用 网络连接
- connectivity [check]: 获取网络连接状态
- none:主机没有连接到任何网络
- portal:无法到达完整的互联网
- limited:主机已连接到网络,但访问受限
- full:主机连接到网络,并具有完全访问
- unknown:无法找到连接状态
2.2.3、示例
# 启用、禁用网络
[root@vm_centos7 ~]# nmcli networking on
[root@vm_centos7 ~]# nmcli networking off
# 网络链接状态查看
[root@vm_centos7 ~]# nmcli networking connectivity
full
2.3、无线控制命令
显示无线访问启用或禁用
2.3.1、语法
nmcli radio {all | wifi | wwan} [ARGUMENTS...]
2.3.2、常用参数
- wifi [on | off]: 显示或设置WiFi的状态。如果未提供参数,则显示WiFi状态;
- on:启用WiFi
- off:禁用WiFi
- wwan [on | off]: 显示或设置wwan的状态。如果未提供参数,则显示wwan状态;
- on:启用wwan
- off:禁用wwan
- all [on | off]: 同时显示或设置前面提到的所有无线电开关
2.4、连接管理命令(重点)
nmcli connection {show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export} [ARGUMENTS...]
2.4.1、show
显示指定连接的详细信息。默认情况下,会显示静态配置和活动连接数据。当指定 --active
选项时,只显示活动的配置文件。
1、语法
show [--active] [id | uuid | path | apath] ID...
2、示例
[root@vm_centos7 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 899db7b8-a677-4aec-a63e-981257c89cf2 ethernet ens33
2.4.2、up
激活连接。该连接由其名称UUID或数据总线路径标识。如果标识不明确,可以使用关键字标识、uuid或路径。当要求特定设备激活连接时,应给出带有接口名称的ifname选项。如果没有给定标识,则需要一个ifname,并且网络管理器将为给定的ifname激活最佳可用连接。在VPN连接的情况下,ifname选项指定基本连接的设备。ap选项指定在无线连接情况下应该使用什么特定的接入点。
1、语法
up [id | uuid | path] ID [ifname ifname] [ap BSSID] [passwd-file file]
2、常用参数
- ifname [ifname]:需要激活的接口
- ap [BSSID]:需要连接到的ap点
- passwd-file [file]:某些网络在激活过程中可能需要凭据,使用此选项提供这些凭据
3、示例
# 以连接名进行激活
[root@vm_centos7 ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
# 以uuid进行激活
[root@vm_centos7 ~]# nmcli connection up 899db7b8-a677-4aec-a63e-981257c89cf2
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
# 以文件名激活
[root@vm_centos7 ~]# nmcli connection up filename /etc/sysconfig/network-scripts/ifcfg-ens33
2.4.3、down
停用设备的连接,允许再次激活
1、语法
down [id | uuid | path | apath] ID...
2、常用参数
参考: up 相关参数
2.4.4、modify
在连接配置文件中添加、修改或删除属性。这些属性可以用 nmcli connection show [接口名称 ]
进行获取,然后可以修改、添加或删除属性;若要设置属性,只需指定属性名称后跟值,空值将删除属性值,同一属性添加多个值使用 +
,同一属性删除指定值用 -
加上需要删除的IP的索引值(第一个IP的索引为 “0”,往后依此类推 ),有关设置和属性的名称、描述、默认值的完整参考,请参见 nm-settings(5)
1、语法
modify [--temporary] [id | uuid | path]
2、示例
# 添加多个IP
## 查看当前IP
[root@vm_centos7 ~]# nmcli connection show ens33 | grep IP4.ADDRESS
IP4.ADDRESS[1]: 192.168.137.10/24
## 添加两个IP
[root@vm_centos7 ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.137.20/24
[root@vm_centos7 ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.137.30/24
[root@vm_centos7 ~]# nmcli connection up ens33
## 查看添加后的IP
[root@vm_centos7 ~]# nmcli connection show ens33 | grep IP4.ADDRESS
IP4.ADDRESS[1]: 192.168.137.10/24
IP4.ADDRESS[2]: 192.168.137.20/24
IP4.ADDRESS[3]: 192.168.137.30/24
# 删除某个IP地址
[root@vm_centos7 ~]# nmcli c modify ens33 -ipv4.addresses 1
[root@vm_centos7 ~]# nmcli connection up ens33
[root@vm_centos7 ~]# nmcli connection show ens33 | grep IP4.ADDRESS
IP4.ADDRESS[1]: 192.168.137.10/24
IP4.ADDRESS[2]: 192.168.137.30/24
2.4.5、add
使用指定的属性创建新连接,详细信息可以使用 nmcli connection add help
查看
1、语法
add [save {yes | no}] {option value | [+|-]setting.property value}...
2、示例
# 创建一个新的连接
[root@vm_centos7 ~]# nmcli connection add con-name ens44 type ethernet autoconnect yes ifname ens44
连接 "ens44" (1b0d88da-3b43-4a20-9c76-d0b325e4a15f) 已成功添加。
2.4.6、edit(常用)
使用交互式编辑器编辑现有连接或添加新连接,交互式编辑器将引导完成连接编辑,并允许通过简单的菜单驱动界面根据需要更改连接参数,编辑器指示可以修改哪些设置和属性,并提供在线帮助
1、语法
edit {[id | uuid | path] ID | [type type] [con-name name] }
2、示例
# 修改ens33的IP地址
## 查看现有IP
[root@vm_centos7 ~]# nmcli connection show ens33 | grep IP4.ADDADDRESS
IP4.ADDRESS[1]: 192.168.137.10/24
## 修改IP
[root@vm_centos7 ~]# nmcli connection edit ens33
nmcli> set ipv4.addresses
输入 "addresses" 值:192.168.137.20/24
nmcli> save
nmcli> activate ens33
## 再次查看IP(如果不需要两个IP,将其中一个删除即可)
[root@vm_centos7 ~]# nmcli connection show ens33 | grep IP4.ADDADDRESS
IP4.ADDRESS[1]: 192.168.137.10/24
IP4.ADDRESS[2]: 192.168.137.20/24