“nmcli 网络”子命令

使用 nmcli 网络对象显示 NetworkManager 网络状态,或者启用和禁用网络。
禁用网络将从所有设备中删除配置并将它们更改为“非托管”状态。
以下命令提供有关 nmcli 网络对象的帮助:

# nmcli networking help
Usage: nmcli networking { COMMAND | help }
COMMAND := { [ on | off | connectivity ] }
  on
  off
  connectivity [check]

给出了使用此命令的一些示例。

示例 1:检查网络状态并启用/禁用它

以下命令序列显示网络状态,然后禁用和启用网络:

# nmcli networking 
enabled
# nmcli networking off
# nmcli networking 
disabled
# nmcli networking on

示例 2:检查网络连接状态

连接参数显示网络连接状态。
一个可选的检查参数告诉 NetworkManager 重新检查连接。
如果没有 check 参数,该命令将显示最近的已知连接状态而无需重新检查。
以下示例包含 check 参数:

# nmcli networking connectivity check
full

可能的状态是:

状态说明
none主机未连接到任何网络。
portal主机位于强制门户后面,无法访问完整的 Internet。
limited主机已连接到网络,但无法访问 Internet。
full主机连接到网络并且可以完全访问 Internet。
unknown无法确定连接状态。

“nmcli general”子命令

使用 nmcli 通用对象显示 NetworkManager 状态和权限。
此命令还允许我们查看和更改系统主机名和 NetworkManager 日志记录级别。
以下命令提供有关 nmcli 常规对象的帮助:

# nmcli general help
Usage: nmcli general { COMMAND | help }
COMMAND := { status | hostname | permissions | logging }
  status
  hostname [[hostname]]
  permissions
  logging [level [log level]] [domains [log domains]]

下面是使用此命令的一些示例。

示例 1:NetworkManager 的总体状态

使用以下命令显示 NetworkManager 的整体状态。
status 参数是默认值,可以省略。

# nmcli general status
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled

示例 2:更改主机名

hostname 参数用于显示或者更改系统主机名。
主机名存储在 /etc/hostname 文件中。
以下示例将主机名更改为 onitroad.example.com 并更新 /etc/hostname 文件:

# nmcli general hostname onitroad.example.com

示例 3:查看调用者对各种操作的权限

权限参数显示调用者对 NetworkManager 提供的各种经过身份验证的操作的权限。
以下示例显示了启用和禁用网络、更改 Wi-Fi 和 WWAN 状态、修改连接和其他操作的权限:

# nmcli general permissions
PERMISSION                                                 VALUE 
org.freedesktop.NetworkManager.enable-disable-network      yes   
org.freedesktop.NetworkManager.enable-disable-wifi         yes   
org.freedesktop.NetworkManager.enable-disable-wwan         yes   
org.freedesktop.NetworkManager.enable-disable-wimax        yes   
org.freedesktop.NetworkManager.sleep-wake                  yes   
org.freedesktop.NetworkManager.network-control             yes   
org.freedesktop.NetworkManager.wifi.share.protected        yes   
org.freedesktop.NetworkManager.wifi.share.open             yes   
org.freedesktop.NetworkManager.settings.modify.system      yes   
org.freedesktop.NetworkManager.settings.modify.own         yes   
org.freedesktop.NetworkManager.settings.modify.hostname    yes   
org.freedesktop.NetworkManager.settings.modify.global-dns  yes   
org.freedesktop.NetworkManager.reload                      yes   
org.freedesktop.NetworkManager.checkpoint-rollback         yes   
org.freedesktop.NetworkManager.enable-disable-statistics   yes

示例 4:更改 NetworkManager 日志记录级别

logging 参数用于获取和更改域的 NetworkManager 日志记录级别。
没有任何参数,当前日志级别和域显示如下:

# nmcli general logging
LEVEL  DOMAINS                                                                                                                                                 

INFO   PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,INFINIBAND,FIREWALL
,ADSL,BOND,VLAN,BRIDGE,TEAM,CONCHECK,DCB,DISPATCH,AUDIT,SYSTEMD,PROXY

要更改日志记录状态,请使用以下语法提供级别和/或者域参数:

# nmcli general logging [level [log level]] [domains [log domains]]

日志记录级别可以是以下之一(按详细程度列出):

日志级别描述
ERR仅记录严重错误
WARN记录可能反映操作的警告
INFO记录对跟踪状态和操作有用的各种信息性消息
DEBUG为调试目的启用详细日志记录

以下示例将 IPv4 域的日志记录级别设置为 DEBUG:

# nmcli general logging level DEBUG domains IP4

以下示例将所有域的日志记录级别设置为 INFO:

# nmcli general logging level INFO domains ALL

有关配置 NetworkManager 日志记录和域描述的信息,请参阅 NetworkManager.conf 手册页。

# man NetworkManager.conf
在Linux中如何使用 nmcli 配置和管理网络连接

NetworkManager 包括一个命令行工具 nmcli ,用于控制 NetworkManager。
我们可以使用 nmcli 创建、显示、编辑、删除、激活和停用网络连接,以及控制和显示网络设备状态。
语法是:

# nmlci OPTIONS OBJECT { COMMAND | help }

使用 nmcli 命令对五个不同的对象执行大部分操作:

  1. general
  2. networking
  3. radio
  4. connection
  5. device.

使用 help 参数显示有关五个不同对象的选项和信息:

# nmcli --help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }
OPTIONS
  -t[erse]                                   terse output
  -p[retty]                                  pretty output
  -m[ode] tabular|multiline                  output mode
  -c[olors] auto|yes|no                      whether to use colors in output
  -f[ields] [field1,field2,...]|all|common   specify fields to output
  -e[scape] yes|no                           escape columns separators in values
  -a[sk]                                     ask for missing parameters
  -s[how-secrets]                            allow displaying passwords
  -w[ait] [seconds>                          set timeout waiting for finishing operations
  -v[ersion]                                 show program version
  -h[elp]                                    print this help
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

nmcli 设备子命令

nmcli 设备对象提供以下命令:

  • status :显示所有设备的状态。
  • show [ifname] :显示有关设备的详细信息。
  • 连接 [ifname] :连接设备。
  • disconnect [ifname] :断开设备连接。
  • wifi列表|连接 |重新扫描:列出 Wi-Fi 接入点。连接到 Wi-Fi 网络。重新扫描可用的接入点。

使用 nmcli 设备对象来显示和管理网络接口。
以下命令提供有关 nmcli 设备对象的帮助:

# nmcli device help
Usage: nmcli device { COMMAND | help }
COMMAND := { status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp }
  status
  show [[ifname]]
  set [ifname] [ifname] [autoconnect yes|no] [managed yes|no]
  connect [ifname]
  reapply [ifname]
  modify [ifname] ([+|-][setting].[property] [value])+
  disconnect [ifname] ...
  delete [ifname] ...
  monitor [ifname] ...
  wifi [list [ifname [ifname]] [bssid [BSSID]]]
  wifi connect [(B)SSID] [password [password]] [wep-key-type key|phrase] [ifname [ifname]]
                         [bssid [BSSID]] [name [name]] [private yes|no] [hidden yes|no]
  wifi hotspot [ifname [ifname]] [con-name [name]] [ssid [SSID]] [band a|bg] [channel [channel]] [password [password]]
  wifi rescan [ifname [ifname]] [[ssid [SSID to scan]] ...]
  lldp [list [ifname [ifname]]]

给出了使用此命令的一些示例。

示例 1:显示所有设备的状态

以下命令序列显示所有设备的状态。
status 参数是默认值。

# nmcli device
DEVICE      TYPE      STATE      CONNECTION                     
ens33       ethernet  connected  ens33              
ens36       ethernet  connected  Wired connection 1 
lo          loopback  unmanaged  -

示例2:显示设备信息

以下示例显示有关设备的详细信息:

# nmcli device show
GENERAL.DEVICE:                         ens33
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:54:F7:20
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     ens33
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/5
...

示例 3:连接和断开设备

以下示例显示了使用 disconnect 和 connect 参数的效果:

# nmcli device disconnect ens33
Device 'ens33' successfully disconnected.
# nmcli device
DEVICE      TYPE      STATE         CONNECTION          
ens36       ethernet  connected     Wired connection 1 
ens33       ethernet  disconnected  -- 
lo          loopback  unmanaged  -
# nmcli device connect ens33
Device 'ens33' successfully activated with 'bbe539aa-5042-4d28-a0e6-2a4d4f5dd744'.
# nmcli device
DEVICE      TYPE      STATE      CONNECTION                     
ens33       ethernet  connected  ens33              
ens36       ethernet  connected  Wired connection 1 
lo          loopback  unmanaged  -

“nmcli device wifi”命令提供以下参数:

  • list :列出可用的 Wi-Fi 接入点。
  • connect [(B)SSID] :连接到由服务集标识符 (SSID) 或者基本服务集标识符 (BSSID) 指定的 Wi-Fi 网络。
  • rescan :请求 NetworkManager 重新扫描可用的 Wi-Fi 接入点。
欢迎 on it road

“nmcli radio”子命令

使用 nmcli 无线电对象显示无线电开关状态,或者启用和禁用开关。
以下命令提供有关 nmcli 无线电对象的帮助:

# nmcli radio help
Usage: nmcli radio { COMMAND | help }
COMMAND := { all | wifi | wwan }
  all | wifi | wwan [ on | off ]

给出了使用此命令的一些示例。

示例 1:检查 Radion Switch 状态

以下命令显示无线电交换机状态。

# nmcli radio
WIFI-HW  WIFI     WWAN-HW  WWAN    
enabled  enabled  enabled  enabled

示例 2:在 NetworkManager 中禁用 Wi-Fi

以下示例在 NetworkManager 中禁用 Wi-Fi。

# nmcli radio wifi off
# nmcli radio
WIFI-HW  WIFI      WWAN-HW  WWAN    
enabled  disabled  enabled  enabled

nmcli 连接子命令

使用 nmcli 连接对象来启动、停止和管理网络连接。
NetworkManager 将所有网络配置信息存储为连接。
连接包含创建或者连接到网络所需的所有信息,例如 MAC 地址和 IP 地址。
当设备使用该连接的配置来创建或者连接到网络时,该连接处于活动状态。

给定设备可以有多个连接,但在任何给定时间,该设备上只能有一个处于活动状态。
添加连接可用于允许在不同网络和配置之间快速切换。
例如,我们可以为使用静态 IP 寻址的网络接口定义连接。
我们可以为使用 DHCP 的同一网络接口定义第二个连接。

以下命令提供有关 nmcli 连接对象的帮助:

# nmcli connection help
Usage: nmcli connection { COMMAND | help }
COMMAND := { show | up | down | add | modify | clone | edit | delete | monitor | reload | load | import | export }
....

示例 1:查看连接配置文件

使用 show 参数列出连接配置文件。
包括 -active 选项以仅列出活动配置文件。
例子:

# nmcli connection show --active
NAME                UUID                                  TYPE            DEVICE  
ens33               bbe539aa-5042-4d28-a0e6-2a4d4f5dd744  802-3-ethernet  ens33

我们还可以通过指定可选的 [ID] 关键字后跟相关值来查看特定连接的详细信息。
[ID] 可以是 id 、 uuid 、 path 或者 apath 。
以下示例使用 id 关键字显示 enp134s1f0 连接的详细信息。
仅显示部分输出:

# nmcli connection show id ens33
connection.id:                          ens33
connection.uuid:                        bbe539aa-5042-4d28-a0e6-2a4d4f5dd744
connection.stable-id:                   -
connection.interface-name:              ens33
connection.type:                        802-3-ethernet
connection.autoconnect:                 no
connection.autoconnect-priority:        0
connection.timestamp:                   1511842397
connection.read-only:                   no
...

示例 2:nmcli connection up|down 命令

使用 up 参数激活连接。
连接由其名称、UUID 或者 D-Bus 路径指定。
当需要特定设备激活连接时,请使用带有接口名称的 ifname 选项。
以下示例激活“ens33”连接。
show 参数在前后发出以说明 up 参数的结果:

# nmcli connection show
NAME                UUID                                  TYPE            DEVICE  
Wired connection 1  dba7561b-dd02-3b58-92c0-07ce94b6250f  802-3-ethernet  ens36
ens33               bbe539aa-5042-4d28-a0e6-2a4d4f5dd744  802-3-ethernet  -
#  nmcli connection up id ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
# nmcli connection show
NAME                UUID                                  TYPE            DEVICE  
Wired connection 1  dba7561b-dd02-3b58-92c0-07ce94b6250f  802-3-ethernet  ens36   
ens33               bbe539aa-5042-4d28-a0e6-2a4d4f5dd744  802-3-ethernet  ens33

使用 down 参数停用特定的活动连接。
以下示例停用 eth1 连接。
show 参数在前后发出以说明 down 参数的结果:

# nmcli connection show
NAME         UUID   TYPE            DEVICE 
System eth0  .....  802-3-ethernet  eth0  
System eth1  .....  802-3-ethernet  eth1
#  nmcli connection down id ens33
Connection 'ens33' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4
# nmcli connection show
NAME                UUID                                  TYPE            DEVICE  
Wired connection 1  dba7561b-dd02-3b58-92c0-07ce94b6250f  802-3-ethernet  ens36
ens33               bbe539aa-5042-4d28-a0e6-2a4d4f5dd744  802-3-ethernet  -

如果连接将“connection.autoconnect”标志设置为“yes”,则连接会在断开连接的设备上再次自动启动。
在这种情况下,请使用 nmcli device disconnect 命令而不是 nmcli connection down 命令。

示例 3:nmcli 连接添加命令

使用 add 参数为 NetworkManager 添加连接。
语法如下:

# nmcli connection add [COMMON_OPTIONS] [TYPE_SPECIFIC] [OPTIONS] [IP_OPTIONS]

添加参数的 COMMON_OPTIONS 描述如下:

  • type [type] :连接类型。有效的连接类型是以太网、wifi、wimax、pppoe、gsm、cdma、infiniband、蓝牙、vlan、bond、bond-slave、team、team-slave、bridge、bridge-slave、vpn 和 olpc-mesh。
  • ifname [ifname] : 将连接绑定到的接口。 “*”的特殊值可用于独立于接口的连接。
  • con-name [connection_name] :连接名称。这是可选的。如果未提供,则会生成默认名称 [type][-ifname][-num]。
  • autoconnect yes|no :是否可以自动激活连接配置文件。这是可选的。默认为是。
  • save yes|no :连接是否持久。这是可选的。默认为是。

下面给出了 add 参数的一些 TYPE_SPECIFIC OPTIONS。
下面列出了以太网和 WiFi 连接的 TYPE_SPECIFIC OPTIONS:

  • 以太网 TYPE_SPECIFIC 选项:
  • mac [MAC_address] :此连接被锁定到的设备的 MAC 地址
  • cloned-mac [cloned_MAC_address] : 克隆 MAC 地址
  • mtu [MTU] : MTU
  • wifi TYPE_SPECIFIC 选项:
  • ssid [SSID] : SSID
  • mac [MAC_address] :此连接被锁定到的设备的 MAC 地址
  • cloned-mac [cloned_MAC_address] : 克隆 MAC 地址
  • mtu [MTU] : MTU

描述了 add 参数的 IP_OPTIONS:

  • ip4 [IPv4_address] gw4 [IPv4_address] : IPv4 地址
  • ip6 [IPv6_address] gw6 [IPv6_address] : IPv6 地址

以下示例添加以太网连接。
之后发出 nmcli connection show 命令以查看结果。
仅显示部分输出。

nmcli connection add con-name new-ens33 ifname ens33 type ethernet ip4 192.168.2.100/24 gw4 192.168.2.1
Connection 'new-ens33' (f0c23472-1aec-4e84-8f1b-be8a2ecbeade) successfully added.
# nmcli connection show
NAME                        UUID                                  TYPE            DEVICE  
Wired connection 1          dba7561b-dd02-3b58-92c0-07ce94b6250f  802-3-ethernet  ens36
ens33                       bbe539aa-5042-4d28-a0e6-2a4d4f5dd744  802-3-ethernet  ens33    
new-ens33           f0c23472-1aec-4e84-8f1b-be8a2ecbeade  802-3-ethernet  -

每个新连接都会在 /etc/sysconfig/network-scripts 目录中创建一个关联的网络接口配置文件。
例如:

# ls /etc/sysconfig/network-scripts/ifcfg*
/etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-lo  /etc/sysconfig/network-scripts/ifcfg-new-ens33

示例 4:nmcli 连接编辑命令

使用 edit 参数编辑由连接 ID、UUID 或者 D-Bus 路径标识的现有连接。
以下示例指定了 new-ens33 连接的编辑:

# nmcli connection edit new-ens33
===| nmcli interactive connection editor |===
Editing existing '802-3-ethernet' connection: 'new-ens33'
Type 'help' or '?' for available commands.
Type 'describe [[setting].[prop]]' for detailed property description.
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, ipv4, ipv6
nmcli>

使用 '?
’键或者输入‘help’来显示可用的命令。

nmcli> ?
-----------------------------------------------------------------------------
---[ Main menu ]--
goto     [[setting] | [prop]]        :: go to a setting or property
remove   [setting][.[prop]] | [prop] :: remove setting or reset property value
set      [[setting].[prop] [value]]  :: set property value
describe [[setting].[prop]]          :: describe property
print    [all | [setting][.[prop]]]  :: print the connection
verify   [all | fix]                 :: verify the connection
save     [persistent|temporary]      :: save the connection
activate [[ifname]] [/[ap]|[nsp]]    :: activate the connection
back                                 :: go one level up (back)
help/?   [[command]]                 :: print this help
nmcli    [conf-option] [value]       :: nmcli configuration
quit                                 :: exit nmcli
-----------------------------------------------------------------------------
nmcli>

使用 edit 参数而不指定连接标识符来添加新连接。
交互式编辑器将指导我们完成连接编辑。
以下示例添加了一个新的以太网连接:

# nmcli connection edit
Valid connection types: generic, 802-3-ethernet (ethernet), pppoe, 802-11-wireless (wifi), wimax, gsm, cdma, infiniband, adsl, bluetooth, vpn, 802-11-olpc-mesh (olpc-mesh), vlan, bond, team, bridge, bond-slave, team-slave, bridge-slave, no-slave, tun, ip-tunnel, macvlan, vxlan
Enter connection type: ethernet
===| nmcli interactive connection editor |===
Adding a new '802-3-ethernet' connection
Type 'help' or '?' for available commands.
Type 'describe [[setting].[prop]]' for detailed property description.
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, ipv4, ipv6
nmcli> set connection.id new-eth1
nmcli> set connection.interface-name eth1
nmcli> set connection.autoconnect yes
nmcli> set 802-3-ethernet.mtu auto
nmcli> set ipv4.method bananaal
nmcli> set ipv4.addresses 192.168.2.101/24
nmcli> set ipv6.method auto
nmcli> save
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? (yes/no) [yes] yes
Connection 'new-eth1' (817e285b-60f0-42d8-b259-4b62e21d823d) successfully saved.
nmcli> quit

在 /etc/sysconfig/network-scripts 目录中创建了一个新的网络接口配置文件:

# ls -lrt /etc/sysconfig/network-scripts/ifcfg*
-rw-r--r--. 1 root root 254 Sep 12  2016 /etc/sysconfig/network-scripts/ifcfg-lo
-rw-r--r--. 1 root root 309 Oct 19 18:44 /etc/sysconfig/network-scripts/ifcfg-ens33
-rw-r--r--. 1 root root 338 Nov 28 09:51 /etc/sysconfig/network-scripts/ifcfg-new-ens33
-rw-r--r--. 1 root root 316 Nov 28 10:00 /etc/sysconfig/network-scripts/ifcfg-new-eth1

示例 5:nmcli 连接修改命令

使用 modify 参数修改连接配置文件中的一个或者多个属性。
通过 ID、UUID 或者 D-Bus 路径标识要修改的连接。
提供的值会覆盖现有的属性值。

使用空值 ("" ) 将属性值设置为默认值。
我们可以使用属性名称的 + 前缀将项目添加到现有值,或者使用前缀删除指定值。
以下示例修改 IPv4 DNS 服务器地址。
show 参数显示修改前后的值:

# nmcli connection show new-eth1 ...
ipv4.dns:
...
# nmcli connection modify new-eth1 ipv4.dns 192.168.134.21

# nmcli connection show new-eth1
...
ipv4.dns:                               192.168.134.21
...

示例 6:nmcli 连接删除 |重新加载 |加载命令

  1. 使用delete 参数删除已配置的连接。
    例如:
# nmcli connection delete new-eth1
  1. 使用 reload 参数从磁盘重新加载所有连接文件。
    使用此命令告诉 NetworkManager 在对它们进行更改时从磁盘重新读取连接配置文件。
    将监视器连接文件设置为 true 以启用自动加载功能。
    在这种情况下,NetworkManager 会在连接文件发生更改时重新加载它们。
    例如:
# nmcli connection reload
  1. 使用 load 参数从磁盘加载或者重新加载一个或者多个特定配置文件。
    如果为连接启用了自动加载功能,则不需要此操作。
    例如 :
# nmcli connection load /etc/sysconfig/network- scripts/ifcfg-new-eth0
日期:2020-09-17 00:13:21 来源:oir作者:oir