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图形界面工具来配置网络连接