nmcli

本文最后更新于:2023年12月5日 晚上

通常的 linux 发行版对于网络的配置方法一般会同时支持 network.service 和 NetworkManager.service(简称 NM)。默认情况下,这 2 个服务都有开启,而且功能上是平行的,可以通过任意一个来配置网络,正常的情况下通过 NM 来配置网络后它会自动把配置同步到 network.service 的配置中。

nmcli 是 NetworkManager 的命令行工具, 该命令可以完成网卡上所有的配置工作,绝大部分可以写入配置文件,永久生效 。

nmcli [OPTIONS] OBJECT { COMMAND | help }

OPTIONS:

-t                                # terse output 简洁的输出
-p                                # pretty output 漂亮的输出
-m tabular|multiline              # output mode  输出模式
-f <field1,field2,...>|all|common # specify fields to output 指定要输出的字段
-e yes|no                         # escape columns separators in values 在值中转义列分隔符
-n                                # 不要检查nmcli和NetworkManager版本
-a                                # 要求缺少参数
-w <seconds>                      # 设置超时等待整理操作

OBJECT

g[eneral]      # 显示NM状态和权限;获取和更改系统主机名、NetworkManager logging level and domains
n[etworking]   # 查询NM网络状态,启用和禁用网络
r[adio]        # 无线网相关
c[onnection]   # NM的连接
d[evice]       # 显示和管理网络接口
a[gent]        # Run nmcli as a NetworkManager secret agent, or polkit agent.
m[onitor]      # 观察NM活动,监视连接状态、设备或连接配置文件的更改

最常用的是 device 和 connection,主要是 connection

device

设备,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)。可以简写为 nmcli d

在 NM 里,有 2 个层级:连接(connection)和设备(device),通常 NM 的管理是以连接为单位的,就像你的手机可以记住多个 wifi 连接,但一个时刻只能连接一个 wifi。一个网卡可以关联多个连接,但是一个网卡只能有一个连接处于活跃状态,通过 nmcli connetion up切换连接。

# 查看网卡状态
[root@centos7 network-scripts]#nmcli device
DEVICE  TYPE      STATE      CONNECTION
ens33   ethernet  connected  ens33
ens37   ethernet  connected  ens37
lo      loopback  unmanaged  --

connection

连接,可理解为配置文件,相当于 ifcfg-ethX。可以简写为nmcli c

# 修改网卡名,注意修改的是NAME不是DEVICE
[root@centos7 network-scripts]#nmcli connection modify ens33 con-name 'ens33 name'
[root@centos7 network-scripts]#nmcli connection
NAME        UUID                                  TYPE      DEVICE
ens33 name  c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33
ens37       4a5516a4-dfa4-24af-b1c4-e843e312e2fd  ethernet  ens37
[root@centos7 network-scripts]#nmcli connection modify ens33\ name con-name ens33
# 修改网卡地址,只修改文件不生效,修改之前先使用 ipv4.method manual 将BOOTPROTO=dhcp改成BOOTPROTO=none
# 否则不能修改,只能添加或删除
[root@centos7 network-scripts]#nmcli connection modify ens33 ipv4.addresses 10.0.0.8/24
# 使修改网卡地址生效
[root@centos7 network-scripts]#nmcli connection reload
[root@centos7 network-scripts]#nmcli connection up ens33
# 给网卡添加地址
[root@centos7 network-scripts]#nmcli connection modify ens33 +ipv4.addresses 11.0.0.7/24
# 从网卡删除地址
[root@centos7 network-scripts]#nmcli connection modify ens33 -ipv4.addresses 11.0.0.7/24

ubuntu 使用 nmcli

ubuntu 默认情况下,无法使用 nmcli

  1. 修改 etc/netplan/*.yaml

    root@u2:~# vim /etc/netplan/00-installer-config.yaml
    network:
      version: 2
      renderer: NetworkManager # 注意此行
  2. /etc/NetworkManager/NetworkManager.conf

    root@u2:~# vim /etc/NetworkManager/NetworkManager.conf
    [main]
    plugins=ifupdown,keyfile
    
    [ifupdown]
    managed=flase
    
    [device]
    wifi.scan-rand-mac-address=no
  3. 应用配置

    root@u2:~# netplan apply

nmcli
http://blog.lujinkai.cn/运维/基础/网络/nmcli/
作者
像方便面一样的男子
发布于
2020年12月9日
更新于
2023年12月5日
许可协议