NetworkManager之设备管理

简介

NetworkManager主要管理两个对象:Connection(网卡连接配置)和Device(网卡设备),其中,设备(Device)是指物理的或虚拟的网络接口,如以太网卡、Wi-Fi适配器等,它和网络连接之间是多对一的关系,即多个连接配置可以对应一个网络设备,但在同一时刻只能有一个连接配置对该设备生效。

NetworkManager的网卡配置文件,位于/etc/NetworkManager/system-connections/目录下,文件扩展名为.nmconnection,这些配置文件包含了连接的详细信息,如连接ID、UUID、类型、接口名称、IP设置等。

NetworkManager支持传统的ifcfg类型配置文件如ifcfg-eth0,但在某些新版本的Linux发行版中,如RHEL 8/CentOS 8,已废弃了传统的network.service,所以只能通过NetworkManager进行网络配置。

使用

管理内容

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>] [--rescan yes|no|auto]]
  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>]]

查看网络设备状态

用于查看系统中所有网络设备的状态,包括设备的类型、连接状态以及当前激活的连接名称。

语法

nmcli device status

示例

[root@donkey ~]# nmcli device status
DEVICE      TYPE      STATE         CONNECTION
enp1s0      ethernet  connected     enp1s0
virbr0      bridge    disconnected  --

输出解释:

  • DEVICE:设备名称,enp1s0、virbr0 等。
  • TYPE:设备类型,如ethernet(有线)、wifi(无线)、bond(绑定接口)等。
  • STATE:设备状态,connected(已连接)、disconnected(未连接)等。
  • CONNECTION:应用于该设备的连接配置名称,如果为--表示未应用任何配置。

显示网络设备详细信息

当不指定 <ifname> 参数(即网络接口名称,如eth0、wlan0等)时,该命令会显示所有网络设备的详细属性信息。指定 <ifname> 参数时,则只显示指定网络接口的详细属性。

语法

nmcli device show [<ifname>]

示例

  • 显示所有设备的详细信息
[root@donkey ~]# nmcli device show
GENERAL.DEVICE:                         enp1s0
GENERAL.TYPE:                           ethernet
...
GENERAL.DEVICE:                         virbr0
GENERAL.TYPE:                           bridge
...
  • 显示指定设备(如 enp1s0)的详细信息
[root@donkey ~]# nmcli device show enp1s0
GENERAL.DEVICE:                         enp1s0 # 设备名
GENERAL.TYPE:                           ethernet # 设备类型 (如ethernet、wifi等)
GENERAL.HWADDR:                         8C:1C:DA:46:11:49 # 硬件MAC地址
GENERAL.MTU:                            1500 # 最大传输单元
GENERAL.STATE:                          100 (connected) # 设备状态
GENERAL.CONNECTION:                     enp1s0 # 应用于该设备的连接配置
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/19
WIRED-PROPERTIES.CARRIER:               on # 以太网物理连接状态
IP4.ADDRESS[1]:                         192.131.3.20/24 # IPv4地址
IP4.ADDRESS[2]:                         192.168.1.102/24
IP4.GATEWAY:                            192.168.1.253 # IPv4网关
IP4.ROUTE[1]:                           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100 # IPv4路由表条目,包括目标网段、下一跳和metric
IP4.ROUTE[2]:                           dst = 192.131.3.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[3]:                           dst = 0.0.0.0/0, nh = 192.168.1.253, mt = 100
IP6.ADDRESS[1]:                         fe80::87f5:d33e:fd01:d5b1/64 # IPv6地址
IP6.GATEWAY:                            fe80::2e0:67ff:fe25:20c # IPv6网关
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 100 # IPv6路由表条目
IP6.ROUTE[2]:                           dst = ::/0, nh = fe80::2e0:67ff:fe25:20c, mt = 100
IP6.ROUTE[3]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

修改网络设备属性

语法

nmcli device set [ifname] <ifname> [autoconnect yes|no] [managed yes|no]

参数说明:

  • ifname <ifname>: 指定要设置的网络接口名称,如 eth0、wlan0 等。
  • autoconnect yes|no: 设置该网络接口是否自动连接。
    • yes: 允许自动连接
    • no: 不允许自动连接
  • managed yes|no: 设置该网络接口是否由 NetworkManager 管理。
    • yes: 由 NetworkManager 管理
    • no: 不由 NetworkManager 管理,即 unmanaged 状态

示例

  • 设置 enp1s0 接口开机自动连接
[root@donkey ~]# nmcli device set ifname enp1s0 autoconnect yes
  • 设置 virbr0 接口不由 NetworkManager 管理
[root@donkey ~]# nmcli device set ifname virbr0 managed no
[root@donkey ~]# nmcli device show virbr0
GENERAL.DEVICE:                         virbr0
GENERAL.TYPE:                           bridge
GENERAL.HWADDR:                         52:54:00:FE:60:3F
GENERAL.MTU:                            1500
GENERAL.STATE:                          10 (unmanaged) # 修改成功后接口状态就会变成 unmanaged
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --

【注意】在修改设备的autoconnect或managed属性后,需要重新启动NetworkManager服务或重新启动系统才能使更改生效。

开启网络接口连接

语法

nmcli device connect <ifname>

参数说明:

  • ifname <ifname>: 指定要设置的网络接口名称,如 eth0、wlan0 等。

示例
连接 enp1s0 接口,执行后,NetworkManager 会在 enp1s0 接口上搜索可用的连接配置并激活。

[root@donkey ~]# nmcli device connect enp1s0
Device 'enp1s0' successfully activated with 'f088cef4-1eb5-42c6-b9c4-0a6c3cd0474d'.

更新网络设备连接配置

当对一个已经激活的网络连接进行了修改(例如,更改了IP地址、DNS设置等),并希望这些更改立即生效时,可以使用该命令,这个命令允许更改立即生效,而无需断开当前的网络连接。

语法

nmcli device reapply <ifname>

参数说明:

  • ifname <ifname>: 指定要设置的网络接口名称,如 eth0、wlan0 等。

示例

[root@donkey ~]# nmcli device reapply enp1s0
Connection successfully reapplied to device 'enp1s0'.

【注意】

  • 使用该命令时,需要确保指定的设备已经有一个活动的连接。
  • 并非所有的更改都可以通过reapply命令应用,某些属性的更改可能需要重新启动网络服务或设备才能生效。
  • 如果reapply操作失败,可能需要使用nmcli device disconnect和nmcli connection up命令组合来断开并重新连接设备,以确保所有更改都被正确应用。

修改网络设备属性

命令用于临时修改NetworkManager管理的网络设备上当前活动连接的设置,但注意这些更改不会被保存到连接配置文件中,因此它们不是永久性的,如果设备或系统重新启动,这些更改将会丢失。

语法

nmcli device modify <ifname> ([+|-]<setting>.<property> <value>)+

参数说明:

  • ifname <ifname>: 指定要设置的网络接口名称,如 eth0、wlan0 等。
  • [+|-]<setting>.<property> <value>: 要修改的设置项和属性值。
    • + 表示添加给定值
    • - 表示删除给定值
    • 如果不加+/-,则会用新值覆盖原有值

示例

  • 给接口 enp1s0 添加DNS
[root@donkey ~]# nmcli device modify enp1s0 +ipv4.dns 8.8.8.8
Connection successfully reapplied to device 'enp1s0'.
  • 设置接口 enp1s0 为不自动连接
[root@donkey ~]# nmcli device modify enp1s0 autoconnect no
Connection successfully reapplied to device 'enp1s0'.

断开网络设备连接

命令用于断开指定网络设备的连接,并阻止该设备在没有手动干预的情况下自动激活进一步的连接。

语法

nmcli device disconnect <ifname>

示例

[root@donkey ~]# nmcli device disconnect enp1s0
Device 'enp1s0' successfully disconnected.

【注意】使用该命令后,设备将不再连接到任何网络,但网络接口仍然启用。

删除网络设备

用于删除一个网络设备。

语法

nmcli device delete <ifname>

【注意】

  • 只能删除由 NetworkManager 管理的设备,对于未被 NetworkManager 管理的设备无效;
  • 删除设备会同时删除与该设备关联的所有连接配置;
  • 常用于删除一些虚拟网络设备,如 Docker 或 libvirt 创建的虚拟网桥 virbr0 等,对于物理网卡设备,通常不建议使用该命令删除(物理设备是由系统内核管理的,而不是由NetworkManager创建)。

示例

[root@donkey ~]# nmcli device delete virbr0
Device 'virbr0' successfully removed.

监控网络设备状态

该命令会持续输出指定网络接口的状态变化信息,直到你按 Ctrl+C 终止它。输出的信息包括:

  • 接口的连接状态变化,如从 disconnected 变为 connected
  • 接口的 IP 地址变化
  • 路由表的变化
  • 其他与该接口相关的事件

语法

nmcli device monitor <ifname>

示例

[root@donkey ~]# nmcli device monitor enp2s0

显示基于LLDP协议获取的邻居设备信息

用于显示通过LLDP(Link Layer Discovery Protocol,链路层发现协议)收集的有关邻近网络设备的信息。

语法

nmcli device lldp [list [ifname <ifname>]]

参数说明:

  • list:可选参数,用于列出收到的LLDP信息。
  • [ifname <ifname>]:可选参数,用于指定要显示LLDP信息的网络接口名称。如果省略此参数,则显示所有接口的LLDP信息。

示例

  • 显示所有网络接口的LLDP信息
[root@donkey ~]# nmcli device lldp list
  • 显示特定网络接口的LLDP信息
[root@donkey ~]# nmcli device lldp list ifname enp1s0

其他

设备管理还有部分关于wify方面的设置,但本篇主要针对以太网,故未展开。

posted @ 2024-04-07 17:01  505donkey  阅读(919)  评论(0编辑  收藏  举报