nmcli --NetworkManager的cli(命令行)
准备环境:AlmaLinux8 + vmware + 双网卡
一、功能
nmcli可以完成网卡上的所有配置,并可以写入配置文件中。
二、语法
nmcli [OPTIONS...] { help | general | networking | radio | connection | device | agent | monitor } [COMMAND] [ARGUMENTS...]
nmcli [选项...] 对象 [命令] [参数...]
对象 = help | general | networking | radio | connection | device | agent | monitor
提示:
(1)输入命令的时候请善用tab补全,少打很多单词!
(2)支持简写,例如connection可以简写成con或c, modify可以简写成mod或m
三、常用信息对象
1、general(g) 常规信息
nmcli general { status | hostname | permissions | logging } [ARGUMENTS...]
(1)查看NetworkManager的状态
[root@C8 ~]# nmcli g s
[root@C8 ~]# nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full missing enabled missing enabled
状态说明:
STATE 网络是否连接
CONNECTIVITY NetworkManager是否接管网络设置
WIFI-HW 表示WIFI的硬件是否启用
WIFI 表示WIFI软件是否启用
WWAH-HW 表示WWAN的硬件
WWAN 表示WWAN的软件
2、networking(n)整个网络
(1)查看NetworkManager是否接管网络设置
[root@C8 ~]# nmcli n
[root@C8 ~]# nmcli networking
enabled
[root@C8 ~]# nmcli n off
##取消接管,十分危险的命令,执行完之后网卡消失,此命令禁用!!!
(2)查看网络连接状态
[root@C8 ~]# nmcli n c
[root@C8 ~]# nmcli networking connectivity
full
状态说明:
full 网络正常连接
limited 已连接网络,但无法上网
portal 已连接网络,但需要认证登录后才能上网
none 没有连网
unknown 无法识别网络
(3)radio无线(wifi)开关
[root@C8 ~]# nmcli radio wifi
enabled
[root@C8 ~]# nmcli radio wifi off
[root@C8 ~]# nmcli radio wifi
disabled
[root@C8 ~]# nmcli radio wifi on
[root@C8 ~]# nmcli radio wifi
enabled
四、常用配置对象
object使用最多的是:connection和device
维度1:connection是连接(配置文件)
维度2:device是网络接口
1、帮助
nmcli c|connection help
nmcli d|device help
nmcli connection { show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export } [ARGUMENTS...]
nmcli device { status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp } [ARGUMENTS...]
多个connection可以应用到同一个device,但同一时间只能启用一个connection。
针对一个网卡,可以设置多个网络连接,比如静态ip和动态ip,或不同的应用环境(家或公司),再根据需要up相应的connection。
(1)connection
[root@C8 ~]# nmcli c
[root@C8 ~]# nmcli con show
[root@C8 ~]# nmcli con show --active
[root@C8 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens32 152beb06-47c5-c5e8-95a9-385590654382 ethernet ens32
Wired connection 1 d3bf0fda-bc78-3c01-b67b-289fc3888a96 ethernet ens33
connection有2种状态:
活跃(带颜色字体):表示当前该connection生效
非活跃(正常字体):表示当前该connection不生效
(2)device
[root@C8 ~]# nmcli d
DEVICE TYPE STATE CONNECTION
ens32 ethernet connected ens32
ens33 ethernet connected Wired connection 1
lo loopback unmanaged --
device有4种常见状态:
connected 已被NM纳管,并且当前有活跃的connection
disconnected 已被NM纳管,但是当前没有活跃的connection
unmanaged 未被NM纳管
unavailable 不可用,NM无法纳管,通常出现于网卡link为down的时候(比如ip link set ensXX down)
2、使用方式
(1)查看设备接口的详细信息
[root@C8 ~]# nmcli d show
GENERAL.DEVICE: ens32
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:D9:11:1E
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: ens32
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnecti>
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.3.10/24
IP4.GATEWAY: 192.168.3.1
IP4.ROUTE[1]: dst = 192.168.3.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.3.1, mt = 100
IP4.DNS[1]: 192.168.3.1
IP6.ADDRESS[1]: fe80::20c:29ff:fed9:111e/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256
GENERAL.DEVICE: lo
##lo的输出没有贴入
(2)启动/关闭接口
nmcli c up/down 接口名称(对应的配置文件)
[root@C8 ~]# nmcli c up ens32
[root@C8 ~]# nmcli c down ens32
(3)创建连接(配置文件)
使用 add 命令会在 /etc/sysconfig/network-scripts中生成以为 ifcfg开头加add指定的 网卡配置文件 名称命名,此文件皆由 nmcli命令进行动态配置;
如果手动修改 ifcfg文件,重启NetworkManager是无法生效,还需要在执行 nmcli con up才行;
因此不建议手动修改配置文件,一切修改都使用nmcli命令,修改后执行 nmcli con up 立即生效。
<1>动态获取IP方式的网络连接配置
[root@C8 ~]# nmcli con add con-name ens33_dynamic ifname ens33 type ethernet
Connection 'ens33' (d77766a0-1427-4e6a-a7e3-614e035fc75d) successfully added.
[root@C8 network-scripts]# cat ifcfg-ens33_dynamic
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp ##<--
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=default
NAME=ens33_dynamic ##<--
UUID=18da32f3-230a-4888-b839-d70fe9b19aff
DEVICE=ens33 ##<--
ONBOOT=yes ##<--
<2>启用动态配置文件
[root@C8 ~]# nmcli con up ens33_dynamic
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@C8 ~]# ifconfig ens33 | awk '/\<netmask\>/{print $2}'
192.168.3.66
<3>停止网络连接,但是可以被自动激活
[root@C8 ~]# nmcli con down ens33_dynamic
Connection 'ens33_dynamic' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@C8 ~]# ifconfig ens33 | awk '/\<netmask\>/{print $2}'
192.168.3.66
<4>禁用网卡,防止被自动激活
[root@C8 ~]# nmcli device disconnect ens33
Device 'ens33' successfully disconnected.
[root@C8 ~]# ifconfig ens33 | awk '/\<netmask\>/{print $2}'
##没有ip
<5>删除网卡配置文件
[root@C8 ~]# nmcli con delete ens33_dynamic
Connection 'ens33_dynamic' (18da32f3-230a-4888-b839-d70fe9b19aff) successfully deleted.
<6>指定静态IP方式的网络连接配置
[root@C8 ~]# nmcli con add con-name ens33_static ifname ens33 autoconnect yes type ethernet ip4 192.168.3.76/24 gw4 192.168.3.1
Connection 'ens33_static' (2e502d3d-cb21-4577-89f6-ef8d7ae7942e) successfully added.
[root@C8 network-scripts]# cat ifcfg-ens33_static
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.3.76 ##<--
PREFIX=24
GATEWAY=192.168.3.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=default
NAME=ens33_static
UUID=c93461c1-2b0a-46d8-991f-f26b5bc3a15c
DEVICE=ens33
ONBOOT=yes
<7>启动静态配置文件
[root@C8 ~]# nmcli con up ens33_static
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
[root@C8 ~]# ifconfig ens33 | awk '/\<netmask\>/{print $2}'
192.168.3.76
<8>查看当前的网卡配置信息
[root@C8 ~]# nmcli con show
NAME UUID TYPE DEVICE
ens32 152beb06-47c5-c5e8-95a9-385590654382 ethernet ens32
ens33_static c93461c1-2b0a-46d8-991f-f26b5bc3a15c ethernet ens33
ens33_dynamic 8c2d729e-862d-4457-9799-83ef24f56e3a ethernet --
Wired connection 1 d3bf0fda-bc78-3c01-b67b-289fc3888a96 ethernet --
[root@C8 ~]# nmcli c s --active
NAME UUID TYPE DEVICE
ens32 152beb06-47c5-c5e8-95a9-385590654382 ethernet ens32
ens33_static c93461c1-2b0a-46d8-991f-f26b5bc3a15c ethernet ens33
(4)修改网卡配置
语法:nmcli connection modify ens33_static [+|-]setting.propertyvalue
setting.property:
ipv4.method (manual | auto)
ipv4.addresse
ipv4.gateway
ipv4.dns1
<1>设置网卡自动激活
ONBOOT=yes
[root@C8 ~]# nmcli con mod ens33_static connection.autoconnect yes
结果: ONBOOT=yes
[root@C8 ~]# nmcli con mod ens33_static connection.autoconnect no
结果: ONBOOT=no
<2>修改获取IP地址的方式
静态(manual或static)还是dhcp动态(auto)
[root@C8 ~]# nmcli con mod ens33_static ipv4.method manual或static
结果: BOOTPROTO=none
[root@C8 ~]# nmcli con mod ens33_static ipv4.method auto
结果: BOOTPROTO=dhcp
<3>修改IP配置
[root@C8 ~]# nmcli con mod ens33_static ipv4.addresses "172.16.3.10/16"
结果: IPADDR=172.16.3.10
PREFIX=16
<4>修改默认网关
[root@C8 ~]# nmcli con mod ens33_static ipv4.gateway 172.16.0.1
结果: GATEWAY=172.16.0.1
<5>修改ip+网关
[root@C8 ~]# nmcli connection modify ens33_static ipv4.addresses 192.168.4.76/24 ipv4.gateway 192.168.4.1
结果: IPADDR=192.168.4.76
PREFIX=24
GATEWAY=192.168.4.1
<6>添加dns1+2
[root@C8 ~]# nmcli con mod ens33_static ipv4.dns 223.5.5.5
[root@C8 ~]# nmcli con mod ens33_static +ipv4.dns 8.8.8.8
结果: DNS1=223.5.5.5
DNS2=8.8.8.8
<7>禁用ipv6
[root@C8 ~]# nmcli c m ens33_static ipv6.method disabled
结果: IPV6INIT=no
<8>让配置生效,需要启用网卡配置文件
[root@C8 ~]# nmcli c up ens33_static
<9>切换使用的网卡配置文件
[root@C8 ~]# nmcli c down ens33_static
Connection 'ens33_static' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/13)
[root@C8 ~]# nmcli c reload ens33_dynamic
[root@C8 ~]# nmcli c up ens33_dynamic
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/14)
[root@C8 ~]# ifconfig ens33 | awk '/netmask/{print $2}'
192.168.3.66
缺 bonding