如何从命令行管理 Linux 网络连接如何从命令行管理 Linux 网络连接如何从命令行管理 Linux 网络连接如何从命令行管理 Linux 网络连接
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何从命令行管理 Linux 网络连接

nmcli 命令让您可以直接从命令行利用 Linux NetworkManager 的强大功能,使其非常适合没有桌面环境和远程 SSH shell 管理的服务器。

nmcli 命令

nmcli 命令不是新命令,它于 2010 年发布。它与 ip 命令一起取代了古老但已弃用的 ifconfig。旧习难改,许多系统管理员仍在使用 ifconfig。他们已经知道如何使用它,没有学习曲线,他们只需要完成工作。那么为什么还要学习另一种工具呢?

好吧,最终,ifconfig 将被发行版删除,所以这是一个即将到来的变化,不管你喜不喜欢。但是 nmcli 本身就有一些巧妙的技巧,因此值得了解它可以提供什么。

ncmli 概念和语法

与所有 CLI 命令一样,nmcli 接受命令行参数。这些参数分为三类。

  • 选项:这些修改nmcli的行为
  • 部分:这些部分告诉 nmcli 您正在调用哪一组操作。将部分视为命令的集合。
  • Actions:这些告诉 nmcli 你想让它做什么。将它们视为命令。

一般的语法格式是:

nmcli <options> <sections> <action>

  • 帮助:提供有关ncmcli 命令的简短帮助文本
  • General:检索 NetworkManager 的状态和配置
  • 网络:查询、启用或禁用网络连接
  • 无线电:查询、启用或禁用 Wi-Fi 网络连接
  • Monitor:监控NetworkManager和网络连接的状态变化
  • 连接:直接操作网络接口,包括启用和禁用它们、添加新连接以及删除现有连接
  • 设备:修改网络设备参数并连接或断开设备与现有连接
  • Secret:将 nmcli 注册为 NetworkManager 秘密代理。因为 nmcli 会自动执行此操作,所以很少使用。

使用 nmcli 的第一步

让我们确保 NetworkManager 已安装、正在运行,并且我们可以使用 nmcli 连接到它。我们将使用 general 部分的 status 操作。

nmcli general status

实际上,status 是 general 的默认操作,因此我们可以将这个词从命令中删除。但是我们已经验证了 nmcli - 以及 NetworkManager - 已经安装并且可以运行。让我们进一步了解这台电脑。

我们可以使用连接部分的显示操作列出所有内存中和磁盘上的网络连接配置文件:

nmcli connection show

输出比终端窗口宽。我们的结果是:

NAME               UUID                                 TYPE     DEVICE 
Wired connection 1 d2864443-9cee-31ec-ab2e-55e9ebddd53e ethernet enp0s3 
ethernet-enp0s8    9aad8efa-3427-4a5c-bef5-270340cd33d0 ethernet enp0s8 
ethernet-enp0s9    5bc49cef-bc3d-4832-9073-460b408932b6 ethernet enp0s9

本文使用的测试机运行的是 Ubuntu 21.10 的预发布版本。它安装了三个网络适配器,分别名为enp0s3、enp0s8 和enp0s9。

了解管道

网络连接允许您的计算机通过网络与另一台设备进行通信。在内部,nmcli 将有关网络连接的所有信息保存在它称为连接的数据对象中。

nmcli 连接封装了与该连接相关的所有信息,包括数据链路层和 IP 地址信息。您可以将 nmcli 的连接视为真实网络连接的配置细节。

要到达外部世界,连接必须使用网络接口设备,例如网卡。连接绑定到设备。当设备处于活动状态并且能够接收或传输数据时,连接被称为 active 或 up。毫不奇怪,相应的非活动状态称为 inactive 或 down。

添加网络连接

使用 nmcli,您可以创建网络连接并使用单个命令设置其一些配置选项。在这台测试计算机上,enp0s8 上没有连接,我们的有线连接(以太网)编号 2 的名称。我们将添加到 enp0s8 的连接。因为我们正在进行系统更改,所以您需要使用 sudo:

sudo nmcli connection add type ethernet ifname enp0s8

此命令使用 connection 部分中的 add 操作。我们使用 type 选项来请求以太网连接,并使用 ifname(接口名称)选项来指定我们希望此连接使用的网络接口设备。

让我们检查一下发生了什么:

nmcli connection show
NAME               UUID                                 TYPE     DEVICE 
Wired connection 1 d2864443-9cee-31ec-ab2e-55e9ebddd53e ethernet enp0s3 
ethernet-enp0s8    9aad8efa-3427-4a5c-bef5-270340cd33d0 ethernet enp0s8 
ethernet-enp0s9    5bc49cef-bc3d-4832-9073-460b408932b6 ethernet enp0s9 
ethernet-enp0s8-1  b874aa09-3a25-4f52-b20b-1b95d9741be9 ethernet --

我们的新连接 ethernet-enp0s8-1 已创建。它的通用唯一标识符 (UUID) 已分配,连接类型为以太网。我们现在可以使用 up 命令激活它。 up 命令后必须跟有连接名称或其 UUID:

nmcli connection up ethernet-enp0s8-1

让我们再次检查我们的活动连接:

nmcli connection show --active
NAME               UUID                                 TYPE     DEVICE 
Wired connection 1 d2864443-9cee-31ec-ab2e-55e9ebddd53e ethernet enp0s3 
ethernet-enp0s8-1  b874aa09-3a25-4f52-b20b-1b95d9741be9 ethernet enp0s8 
ethernet-enp0s9    5bc49cef-bc3d-4832-9073-460b408932b6 ethernet enp0s9

我们的新连接 ethernet-enp0s8-1 现在已激活并绑定到 enp0s8 网络接口设备。

调整连接

当然,ncmli 也允许您更改现有连接的参数。假设我们要将网络接口从动态主机配置协议 (DHCP) 切换为使用静态 IP 地址。为了匹配我们的网络,我们的新连接需要一个固定的 IP 地址 192.168.1.40。

为此,您需要发出两个命令。一种设置 IP 地址,一种设置连接获取 IP 地址的方法为手动:

nmcli connection modify ethernet-enp0s8-1 ipv4.address 192.168.1.40/24
nmcli connection modify ethernet-enp0s8-1 ipv4.method manual

我们为 IP 地址提供的“/24”是无类域间路由 (CIDR) 中的子网掩码。在此上下文中,“/24”表示“255.255.255.0”。

在连接“退回”之前,更改不会生效。即,禁用并重新联机。第一个命令断开连接,第二个命令恢复连接。

nmcli connection down ethernet-enp0s8-1
nmcli connection up ethernet-enp0s8-1

如果您想撤销更改并从静态 IP 地址移动到 DHCP IP 地址,请使用 auto 选项而不是 manual。

nmcli connection modify ethernet-enp0s8-1 ipv4.method auto

设备管理

nmcli device 部分包含可让您管理计算机上安装的网络接口的操作(命令)。要查看计算机上所有网络接口的状态,请使用:

nmcli device status

显示设备详细信息

要检查网络接口的详细信息,我们使用 device 部分中的 show 操作。如果您不提供设备名称,则会检索并显示所有设备的详细信息。您可以上下滚动和翻页来查看它们。

让我们看一下 enp0s8,我们的新连接正在使用的设备。我们可以验证正在使用的 IP 地址是我们之前请求的地址。

nmcli device show enp0s8
GENERAL.DEVICE:           enp0s8
GENERAL.TYPE:             ethernet
GENERAL.HWADDR:           08:00:27:79:A7:68
GENERAL.MTU:              1500
GENERAL.STATE:            100 (connected)
GENERAL.CONNECTION:       ethernet-enp0s8-1
GENERAL.CON-PATH:         /org/freedesktop/NetworkManager/ActiveConnection/8
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]:           192.168.1.40/24
IP4.GATEWAY:              --
IP4.ROUTE[1]:             dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 102
IP6.ADDRESS[1]:           fe80::3241:457d:cd1c:2436/64
IP6.GATEWAY:              --
IP6.ROUTE[1]:             dst = fe80::/64, nh = ::, mt = 102

nmcli 返回一屏信息。一些常用的项目是:

  • DEVICE:我们正在检查的设备的名称。
  • TYPE:使用此设备的连接类型。
  • HWADDR:接口卡的MAC地址。
  • STATE:此设备上是否有实时连接。
  • IP4.ADDRESS[1]:此设备的 IP 地址和子网掩码。
  • CONNECTION:使用此设备的连接名称。

nmcli 交互式编辑器

虽然 nmcli 是一个命令行工具,但它确实有一个基本的交互式编辑器。连接部分中的编辑操作会在您通过命令行传递的连接上打开交互式编辑器:

nmcli connection edit ethernet-enp0s8-1

一些帮助文本会打印到屏幕上,您会看到“nmcli>”命令提示符。

如果您键入 print 并点击“Enter”,nmcli 会列出与该连接关联的所有属性。有很多。您可以滚动浏览它们以查看它们。

print

让我们将连接改回使用 DHCP。我们将使用“ipv4”设置。为此,我们需要“转到”IPv4 设置。

goto ipv4

我们要更改的属性是 method。我们想将其设置为自动。

set method auto

您会看到以下提示:

Do you also want to clear 'ipv4.addresses'? [yes]:

如果您不清除 IP 地址,下次您将此连接设置为使用静态 IP 地址时,它将使用之前设置的 IP 地址。如果你清除它,如果你将此连接改回使用静态 IP 地址,则需要设置一个新的 IP 地址。输入“yes”或直接点击“Enter”清除它。输入“no”并点击“Enter”保留它。

我们需要保存我们的更改:

save

输入“quit”退出交互式编辑器。如果您不想退出,请输入“返回”返回主关卡,并继续使用编辑器。

人还有更多

nmcli 命令可以做更多的事情。它有很多命令行参数和选项。事实上,它的手册页有 1200 多行。查看它们以了解 nmcli 还能为您做些什么。

当然,如果您正在远程管理网络连接,请不要禁用您已连接的连接。那一点都不好玩。

©2015-2025 艾丽卡 support@alaica.com