“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
NetworkManager 包括一个命令行工具 nmcli ,用于控制 NetworkManager。
我们可以使用 nmcli 创建、显示、编辑、删除、激活和停用网络连接,以及控制和显示网络设备状态。
语法是:
# nmlci OPTIONS OBJECT { COMMAND | help }
使用 nmcli 命令对五个不同的对象执行大部分操作:
- general
- networking
- radio
- connection
- 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 接入点。
“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 连接删除 |重新加载 |加载命令
- 使用delete 参数删除已配置的连接。
例如:
# nmcli connection delete new-eth1
- 使用 reload 参数从磁盘重新加载所有连接文件。
使用此命令告诉 NetworkManager 在对它们进行更改时从磁盘重新读取连接配置文件。
将监视器连接文件设置为 true 以启用自动加载功能。
在这种情况下,NetworkManager 会在连接文件发生更改时重新加载它们。
例如:
# nmcli connection reload
- 使用 load 参数从磁盘加载或者重新加载一个或者多个特定配置文件。
如果为连接启用了自动加载功能,则不需要此操作。
例如 :
# nmcli connection load /etc/sysconfig/network- scripts/ifcfg-new-eth0