Linux nmcli的使用

nmcli 是 NetworkManager 的命令行客户端工具,用于管理 Linux 系统的网络设置。它使用户可以通过命令行界面检查网络状态、配置网络连接、控制网络设备等。这种命令行工具特别适合那些不使用图形界面的服务器环境。(只要系统上安装并运行了 NetworkManager,就可以使用 nmcli,不管 NetworkManager 是不是系统的默认网络管理工具。)


nmcli简单使用

设备状态查看:
通过这个命令可以看到网络的物理连接状态、接口名称、网络类型、MAC地址、IP地址、网关、DNS地址、路由信息

nmcli device status

网络连接查看:
会列出在 NetworkManager 中定义的所有网络连接配置。每个连接都有一个与之关联的配置

nmcli connection show

DEVICE: 与该连接关联的设备的名称,例如:ens33

nmcli通过颜色来区分不同的连接状态;

  • 绿色: 通常表示连接是活跃的或者状态是正常的。

  • 灰色: 通常表示连接不是活跃的或者状态是非活跃的。

启动/停止网络连接:

# up
nmcli  connection  up con_name

# down
nmcli connection down con_name

删除连接

nmcli connection delete con_name

创建连接

nmcli connection add con-name 新连接名 type ethernet ifname 网络接口名称 ipv4.method dhcp或manual  ip4 [IPv4地址/子网掩码] gw4 DNS地址

修改连接:

nmcli connection modify con_name 需要修改的 name value

nmcli对NetworkManager 的整体网络状态管理

通过 nmcli networking 可以实现启用或禁用 NetworkManager 管理的所有网络接口。一般用来快速断开所有网络连接或重新连接网络。

查询所有网络状态:

nmcli networking

enabled:表示NetworkManager当前正在尝试管理和建立网络连接,会尝试管理和连接所有可用的网络连接
disabled:表示NetworkManager已被指示停止所有网络活动。这会断开所有当前的网络连接

启用所有网络连接
会检查NetworkManager 知道的所有网络连接配置,对于已经配置为自动连接的网络(例如某些有线连接),如果它们可用,NetworkManager 会尝试自动连接。对于没有设置为自动连接或当前不可用的网络,NetworkManager 不会尝试连接,除非手动指定(nmcli connection up con-name 来启动)

nmcli networking on

禁用网络:
会断开所有当前的网络连接,并不再尝试建立新的连接

nmcli networking off

nmcli实现手动连接设备

使用nmcli device connection 可以实现手动连接一个设备,使用这个命令时,NetworkManager 查看是否有适用于该设备的预配置连接,如果有就使用该配置进行连接,如果没有就会尝试建立一个新的默认连接。这种用法一般在刚添加一张物理网卡,啥都没配置的时候使用。

nmcli device connection device_name  # 例如ens33 \eth0等

例如:
在Linux主机上新添加一张网卡,但是并且没有为这个新设备配置特定的网络连接。这个时候就可以使用nmcli device connection device_name来给这张网卡创建一个默认的连接,NetworkManager会默认尝试使用DHCP模式来获取IP地址、子网掩码、默认网关、DNS等网络设置。

区别:

  • nmcli connection up con_name:使用预先定义的连接配置激活一个网络连接,通过给出的连接名称,NetworkManager 会查找与该名称匹配的预配置连接,并尝试使用该配置激活连接。

  • nmcli device connect device-name:使用指定的设备建立网络连接 不基于特定的预配置连接,而是尝试使用设备自动连接到可用网络。如果有适合该设备的预配置连接,它将使用该连接;否则,它可能尝试创建一个新的默认连接。

  • nmcli networking on:启动 NetworkManager 的网络管理功能。对于已配置为自动连接的网络,NetworkManager 会尝试自动连接。对于非自动连接的网络,它不会尝试连接,


nmcli实现team配置

bonding 和 team 都是用于网络接口聚合的技术,bond是很早之前就出现的一个技术了。Team 是相对较新的技术,目的是为了提供一个更灵活和高效的解决方案,team旨在替代bond技术,但是bond的兼容性很好,因为已经存在很长时间了。

  • ubuntu:需要安装 ifenslave(ifenslave 是专门为 Debian-based 系统提供的工具,用于配置和管理网络接口聚合) 和 teamd这两个工具

  • centos:只需要teamd这个工具就行了

nmcli创建team连接

# 1. 创建连接
nmcli connection add type team con-name 连接名字 ifname team0(team名字)  config '{"runner": {"name": "roundrobin"}}'
	# roundrobin:轮询模式
	# activebackup 主备模式

# 2. 将网络接口加入team中
nmcli connection add type team-slave con-name team0-ens33 ifname ens33 master team0
nmcli connection add type team-slave con-name team0-ens34 ifname ens34 master team0

# 3. 管理team 和管理普通的网络接口一样的
	# 启动:网卡和team都要启动

例如:创建一个叫作 con-dhcp 的网络连接,网络接口名是ens33,采用DHCP这种网络模式

# nmcli con add type ethernet con-name [连接名称] ifname [设备名称] method auto

nmcli connection add con-dhcp type ethernet ifname ens33 method auto

# 启动连接
nmcli con up con1

例如:为设备 ens33设 置静态IP 192.168.1.10,子网掩码 255.255.255.0(或前缀24),网关192.168.1.1,DNS为8.8.8.8和8.8.4.4

# 允许使用简写形式或更详细的形式来指定参数

nmcli connection add con-static type ethernet ifname ens33 ip4 192.168.1.10/24 gw4 192.168.1.1 ipv4.dns "8.8.8.8,8.8.4.4"  ipv4.method manual

nmcli connection add type ethernet con-name static-ens33 ifname ens33 ipv4.addresses 192.168.1.10/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8,8.8.4.4" ipv4.method manual

例如:修改一个名为con-static的连接的IPv4地址:

# con-static是连接的名称。

nmcli connection modify con-static ipv4.addresses 192.168.1.20/24

nmcli配置文件

nmcli是NetworkManager的命令行工具,使用nmcli进行相关操作后,会生成对应的配置文件。配置文件存放在 /etc/NetworkManager/system-connections/ 中的,在这个目录下,每个网络连接都有一个对应的文件,文件名通常与连接的名称相对应。

posted on 2022-06-18 23:04  背对背依靠  阅读(49)  评论(0编辑  收藏  举报