nmcli命令

nmcli命令用于网络配置,是NetworkManager的一个命令行工具

NetworkManager服务是一个检测和配置网络连接的新工具 如果同时开启了两个服务会导致网络配置失败,应关闭network服务systemctl stop network

NetworkManager服务包含一个守护程序、一个命令行界面(nmcli)和一个基于curses的界面(nmtui)

NetworkManager可以用于以下类型的连接:Ethernet,VLANS,Bridges,Bonds,Teams,Wi-Fi,mobile boradband以及 IP-over-InfiniBand。针对与这些网络类型,NetworkManager 可以配置他们的网络别名,IP 地址,DHCP,DNS,VPN连接以及很多其它的特殊参数。

命令语法

nmcli [选项] OBJECT { COMMAND | help }

选项:

  • -t[erse] 简洁输出
  • -p[retty] 格式化后输出,更易于人类阅读
  • -m[ode] tabular|multiline 显示方式,tabular按表格方式,multiline是多行类似key:value形式
  • -c[olors] auto|yes|no 输出的字体颜色控制
  • -f[ields] <field1,field2,...>|all|common 默认使用common(命令公共字段)。也可以指定特定字段,比如nmcli -f GENERAL.DEVICE,IP4.ADDRESS device show 显示网卡名和ip地址
  • -e[scape] yes|no escape columns separators in values
  • -a[sk] 提示缺少的参数,而不是报错.
  • -s[how-secrets] allow displaying passwords
  • -w[ait] set timeout waiting for finishing operations
  • -v[ersion]
  • -h[elp]

OBJECT 和 COMMAND 可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母,如device可简写为d或dev. 每个OBJECT对应有不同的COMMAND.

OBJECT:

  • g[eneral] 网络常规信息
  • n[etworking] 总体的网络控制
  • r[adio] 无线开关
  • c[onnection] 网络连接
  • d[evice] 网络物理设备
  • a[gent] NetworkManager secret agent or polkit agent
  • m[onitor] monitor NetworkManager changes

nmcli general

nmcli general { status | hostname | permissions | logging } [ARGUMENTS...]

示例:

$ nmcli g status   #简写 nmcli g s

状态    CONNECTIVITY  WIFI-HW  WIFI    WWAN-HW  WWAN   
连接的  全部          已启用   已启用  已启用   已启用

nmcli networking

查询NetworkManager状态,启用禁用网络

nmcli networking { on | off | connectivity } 

示例:

nmcli networking off #禁用所有被NetworkManager托管的网络接口的网络连接

nmcli n c # 查看连接状态

网络连接状态的五种输出结果:full:网络正常连接; limited:以连接网络,但无法上网; portal:以连接网络,但需要认证登录后才能上网; none:没有连网; unknown:无法识别网络

nmcli radio

显示无线电开关状态,启用、禁用无线电

nmcli radio { all | wifi | wwan } [on | off]

示例:

nmcli r wifi off #关闭wifi

nmcli connection

管理网络连接配置,在一个特定设备,可以有多个连接配置(比如一个是dhcp的,一个是静态ip地址的),但是只有一个配置是“活动“的配置。connection对象就是用来管理这些连接配置的

一个连接由其name(名称),uuid或path(就是D-Bus路径)所标识。如果ID不明确,则可以使用关键字id,uuid或path来指明这个ID是什么

nmcli connection { show | up | down | add | modify | clone | edit | delete | monitor | reload | load | import | export }
  • 查看连接

    show [--active] [id | uuid | path | apath] <ID>
    或
    show [--active] [--order <order spec>]
    

    --active是只查看激活状态连接 ,--order 是按配置名排序,可选排序有type、active、name、path(d-bus路径),+号和-号表示升序和降序. 示例:

$ nmcli con s
名称     UUID                                  类型            设备    
docker0  1cade3c5-2fce-41d3-87e9-f58d6ee96153  bridge          docker0 
ens33    1b4b32e8-3cfe-464b-8749-59e6bbcdbf36  802-3-ethernet  ens33  

$ nmcli con s --order -name
名称     UUID                                  类型            设备    
ens33    1b4b32e8-3cfe-464b-8749-59e6bbcdbf36  802-3-ethernet  ens33   
docker0  1cade3c5-2fce-41d3-87e9-f58d6ee96153  bridge          docker0

$ nmcli con show ens33 # 查看指定网卡的详细信息
connection.id:                          ens33
connection.uuid:                        1b4b32e8-3cfe-464b-8749-59e6bbcdbf36
connection.stable-id:                   --
connection.interface-name:              ens33
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
省略...
ipv4.dns:                               114.114.114.114,10.16.19.10
ipv4.dns-search:                        
ipv4.dns-options:                       (默认)
ipv4.dns-priority:                      0
ipv4.addresses:                         10.16.200.95/24
ipv4.gateway:                           10.16.200.1
  • 新增连接配置

    add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- ([+|-]<setting>.<property> <value>)+]
    

    选项较多可通过nmcli con add help命令获取详细说明,这里只列举几个常用示例:

# 创建一个动态ip的以太网连接;连接有以太网,WIFI,adsl等
nmcli connection add ethernet ifname eth0

# 指定静态IP方式的网络连接配置:
nmcli con add con-name static ifname ens36 autoconnect yes type ethernet ip4 10.10.10.10/24 gw4 10.10.10.1

nmcli con add ifname enp5s0 autoconnect yes type ethernet ipv4 10.10.10.10/24 gw4 10.10.10.1
  • 修改连接配置
modify [--temporary] [id | uuid | path] <ID> ([+|-]<setting>.<property> <value>)+

示例:

# 修改指定网卡的ip地址和子网掩码、网关以及DNS
nmcli con mod 网卡名 ipv4.addresses ip地址/子网掩码 ipv4.gateway 网关 ipv4.dns dns地址

# 添加第二个ip
nmcli con mod eth0 +ipv4.addresses ip地址/子网掩码
# 删除第二个ip
nmcli con mod eth0 -ipv4.addresses ip地址/子网掩码

# 添加第二个DNS
nmcli con mod eth0 +ipv4.dns dns地址
# 删除第二个DNS
nmcli con mod eth0 -ipv4.dns dns地址

# 修改为静态配置,默认是 auto
nmcli c m eth0 ipv4.method manual

# 开机启动
nmcli c m ens33 connection.autoconnect yes
  • 激活连接配置

    up [[id | uuid | path] <ID>] [ifname <ifname>] [ap <BSSID>] [passwd-file <file with passwords>]
    

    当需要激活特定设备连接时,应提供带有接口名称的ifname选项。如果未提供ID,则需要一个ifname,NetworkManager将为给定的ifname激活最佳的可用连接。如果是VPN连接,则ifname选项指定基本连接的设备。

ap选项指定在Wi-Fi连接的情况下应使用哪个特定的AP。

passwd-file:某些网络在激活期间可能需要凭据。您可以使用此选项提供这些凭据。文件的每一行应包含一个密码。文件内容格式为setting_name.property_name:the password。例如WPA-PSK连接的格式为802-11-wireless-security.psk:secret12345。nmcli还接受wifi-sec和wifi字符串,而不是802-11-wireless-security。当NetworkManager需要密码但未提供密码时,nmcli在使用--ask运行时会要求输入密码。如果未传递--ask,则NetworkManager可以询问可能正在运行的另一个秘密代理(通常是GUI秘密代理,例如nm-applet或gnome-shell)

  • 停用连接配置
down [id | uuid | path | apath] <ID> ...
  • 删除连接配置

    delete [id | uuid | path] <ID>
    

nmcli device 显示或管理网络设备

nmcli device { status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp }

常用示例:

$ nmcli d status
设备         类型      状态    CONNECTION 
docker0      bridge    连接的  docker0    
ens33        ethernet  连接的  ens33      
vethe278535  ethernet  未管理  --         
lo           loopback  未管理  --   

# 显示所有网卡配置信息,后面可指定网卡名nmcli d show ens33
$ nmcli d show
GENERAL.设备:                           docker0
GENERAL.类型:                           bridge
GENERAL.硬盘:                           02:42:44:7F:24:B5
GENERAL.MTU:                            1500
GENERAL.状态:                           100 (连接的)
GENERAL.CONNECTION:                     docker0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.地址[1]:                            172.17.0.1/16
IP4.网关:                               
IP6.地址[1]:                            fe80::42:44ff:fe7f:24b5/64
IP6.网关:                               

GENERAL.设备:                           ens33
GENERAL.类型:                           ethernet
GENERAL.硬盘:                           00:0C:29:B0:49:26
GENERAL.MTU:                            1500
GENERAL.状态:                           100 (连接的)
GENERAL.CONNECTION:                     ens33

nmcli device connect 连接网卡与配置文件

nmcli device disconnect 断开网卡与配置文件关系

上面我们可以看出nmcli的命令其实是比较复杂的, 所以还是推荐使用nmtui图形界面工具来配置网络连接




返回软件开发辅助网 | 常用命令列表

shell语法手册