如果您是一位经验丰富的系统管理员,并且专注于网络管理,那么您可能已经听说过NetworkManager。
NetworkManager于 2004 年发布,由 Red Hat 开发,是一组不同的工具,主要是接口,旨在促进系统上的网络管理。
如果您想打开网络适配器,您可能会使用NetworkManager来实现。
同样,如果您想编辑现有网卡以更改分配给它的 IP 地址,您将再次使用NetworkManager。
在本教程中,我们将介绍如何使用NetworkManager套件中的各种工具来轻松管理您的网络。
在列出套件中嵌入的工具(nmcli、 nmtui、 nm-applet)之后,我们将查看NetworkManager的实际用例列表。
NetworkManager架构
在深入研究NetworkManager的功能之前,让我们首先描述它的架构以及它如何与内核相关模块进行通信。
NetworkManager API
要理解的第一个概念是NetworkManager作为API 来配置主机上的网络接口。
但是,NetworkManager不能单独工作:它是在称为网络套接字的端点上接收网络消息的过程的一部分。
网络套接字由连接到以太网电缆的以太网 NIC 物理表示,以便开始通过网络共享数据。
当插入以太网电缆时,udev 模块首先识别它,该模块将向NetworkManager发送信号以通知已插入新电缆。
通过这种方式,NetworkManager能够保持连接,但也能够向其他应用程序公开网络可用性。
如果您使用的是 Firefox,并且如果 Firefox 需要知道网络连接的状态,它可以通过 DBus 查询NetworkManager以获取此信息。
NetworkManager实际上是一个网络 API,它将提供有关可用网卡、有线或无线网络的详细信息。
它还将提供一种使用专用配置文件配置网卡和接口的简单方法。
NetworkManager与 ifupdown
历史上,Linux 操作系统使用不同的方式管理网络接口,主要使用位于 /etc/network 的配置文件。
在这个目录中,可以使用一个文件来配置网络接口:interfaces 文件。
但是,在最近的发行版中,没有使用 ifup 和 ifdown 实用程序使用的“接口”文件。
默认情况下,NetworkManager负责管理您的网络接口,但可以在NetworkManager配置文件中更改管理网络的方式。
准确地说,NetworkManager.conf 文件“ifupdown”部分中的“managed”参数描述了您的系统是否使用了NetworkManager。
注意:“false”表示NetworkManager管理您的连接和设备,“true”表示您更喜欢使用 ifup 和 ifdown 的旧方式。
关于 systemd-networkd
在较新的系统上,systemd 设置为处理几乎所有内容,网络也不例外。
在某些情况下,您的系统可能依赖systemd-network守护进程来管理接口。
请注意,为了避免与网络相关的配置冲突,一次只能启用一项网络服务:无论是 ifupdown、systemd-networkd 还是 Network Manager。
如果您习惯使用“interfaces”文件来管理您的网络,您可能希望继续这样做,否则建议切换到NetworkManager。
网络管理工具
现在您对网络管理器有了更深入的了解,让我们开始列举该套件中提供的工具。
NetworkManager提供以下工具:
- nmcli:用于使用NetworkManager配置、添加、编辑和删除连接的专用命令行工具;
- nmtui:图形用户界面,仅提供与 nmcli 兼容的功能子集。使用 nmtui,您可以编辑连接、激活连接或更改计算机的主机名;
- nm-applet:在GNOME 桌面环境中可用,此小程序用作界面覆盖,可用于连接或断开网络。
请注意,某些发行版可能具有上述工具的NetworkManager“快捷方式”:nmtui-connect、nmtui-edit 或 nmtui-hostname。
大多数时候,这些实用程序实际上是到主要 nmtui 实用程序的简单软链接。
在以下部分中,我们将了解如何使用上面引用的不同工具来正确配置网络。
使用 nmcli 的网络配置
如上一节所述,nmcli 是一个命令行实用程序,可用于监视网络连接,还可以添加、编辑、删除连接以及获取有关系统上设备的详细信息。
您可以使用以下语法与 nmcli 交互
$ nmcli <options> <section> <action>
nmcli 有一组八个部分:
- help : 用于获取有关 nmcli 用法的一般帮助;
- general:用于获取网络管理器本身的状态和全局配置;
- networking:公开方法以关闭网络管理器或重新启动它;
- radio:用于管理无线传输协议,如WIFI或WAN;
- connection:顾名思义,此部分用于启动和关闭接口以及添加和删除现有连接;
- device:主要用于修改与给定设备相关的参数(例如接口名称)或使用现有连接连接设备;
- agent & monitor:这些部分分别用于处理机密和观察网络变化。
描述的每个部分都有一组预定义的操作,可以在阅读 nmcli 文档(显示、添加、删除、修改、加载等)中找到这些操作
例如,如果您要列出当前活动的所有连接,您将使用“connection”部分和“show”操作执行“nmcli”。
$ nmcli connection show
在这种情况下,我的主机在名为“eth0”的网络适配器上具有有线以太网连接。
在以下部分中,我们将了解如何与网卡和连接交互以正确配置系统。
连接管理
使用NetworkManager时,一个连接可以被看作是一个“网络配置”。
因此,“连接”具有与第 2 层(数据链路层)和第 3 层(可能与 IP 地址相关)相关的所有信息。
当设备使用连接时,即主机上的网络适配器,它被设置为“活动”或“启动”。
另一方面,连接可以是“空闲”的,现在可以被任何网络接口使用:在这种情况下,它被设置为“非活动”或“关闭”
这里的第一个关键点是,每当我们在 Linux 主机上配置网络时,我们本质上都是在配置连接,稍后将绑定到设备。
列出网络连接
为了列出主机上可用的网络连接,您可以运行“连接”部分的“显示”操作。
$ nmcli connection show
或者,您可以提供“–active”标志以将结果限制为活动连接(即由网络适配器使用)
nmcli connection show --active
添加网络连接
在某些情况下,配置多个连接可能会很方便。
假设您在两个不同的地方工作:一个使用 DHCP 来分配您的 IP 地址(动态 IP 地址),另一个使用静态 IP 分配给您的计算机。
为了实现这一点,您可以创建可以根据您的位置打开的其他网络连接。
要使用网络管理器添加新的网络连接,您可以:
- 将您的配置文件添加到 位于 /etc/NetworkManager的 system-connections目录中;
- 添加带有“add”选项的“ nmcli connection ”命令;
- 使用提供 GUI的nm-connection-editor实用程序来添加、修改和删除现有连接。
使用 nmcli 命令行,您可以通过运行以下命令来创建新连接
$ sudo nmcli connection add type ethernet ifname eth2
使用 nmcli,一个新的 UUID 连接将分配给您新创建的连接,例如,您将能够开始使用它连接到 Internet。
修改连接参数
nmcli 实用程序的一项重要功能是修改现有连接的参数。
如果您想修改您的 IP 地址并从 DHCP 切换到手动 IP 寻址,您还可以使用 nmcli 实用程序来更改这些参数。
为了修改现有的连接参数,您将使用以下语法
$ nmcli connection modify <connection_id> <parameter> <value>
例如,假设您希望 IP 地址为静态并设置为值“192.168.1.19”
为此,您将运行以下命令
$ nmcli connection modify <uuid> ipv4.method manual
$ nmcli connection modify <uuid> ipv4.address 192.168.1.19/24
注意:更改IP地址时,不要忘记设置子网掩码(此处为/24),否则您可能会获得分配的默认掩码,这在大多数情况下是错误的。
为了使您的更改生效,您需要使用“连接”部分的“向上”和“向下”操作重新启动连接。
$ nmcli connection down <uuid>
$ nmcli connection up <uuid>
现在您的接口已重新启动,您的 IP 更改应该有效。
$ hostname -I
192.168.1.19
设备管理
“设备”是 nmcli 实用程序的部分之一,可用于管理主机上的网络适配器。
列出网络适配器
为了在您的主机上列出网络适配器,您可以在“设备”部分运行“显示”操作。
$ nmcli device show
此命令广泛地描述了您的网络适配器,它列出了:
- 设备名称:当设备插入您的计算机时由 udev 分配(在本例中为 eth0);
- 设备 MAC 地址:这里称为硬件地址;
- 设备状态:它是否连接到网络或不;
- IPv4 地址:使用 CIDR 表示法(192.168.1.16/24);
- IPv4网关: (192.168.1.1);
- IPv4主 DNS: (192.168.1.1)
注意:这里,网关充当主要 DNS,但您的公司可能有专用的名称服务器。
如果您想列出主机上可用的网卡并确定它们是否连接,这些特性非常有用。
更改设备配置
在某些情况下,直接更改设备配置可能很有用。
但是,您需要记住一个关键点:您可以实时更改设备,但如果您希望保留更改,则需要修改连接配置。
简而言之,设备配置更改是暂时的。
为了更改您的设备配置,您需要执行带有“修改”选项的“nmcli device”命令并指定要更改的参数。
$ nmcli device modify <interface_name> <parameter> <value>
$ nmcli dev mod <interface_name> <parameter> <value>
例如,假设您想更改“eth0”网络接口的 IP 地址。您还希望 IP 归属是静态的而不是动态的。
为了实现这一点,您将执行以下命令
$ nmcli dev mod eth0 ipv4.address 192.168.1.19/24
Connection successfully reapplied to 'eth0'
$ nmcli device modify eth0 ipv4.gateway 192.168.1.1
Connection successfully reapplied to 'eth0'
$ nmcli device modify eth0 ipv4.dns 192.168.1.1
Connection successfully reapplied to 'eth0'
$ nmcli device modify eth0 ipv4.method manual
Connection successfully reapplied to 'eth0'
重新应用参数
只是为了展示更改是暂时的,如果您将参数“重新应用”到您的界面,您的所有更改都将丢失。
相反,将重新应用在您的连接配置文件(在 /etc/NetworkManager/system-connections 中)中定义的参数。
$ nmcli dev reapply eth0
Connection successfully reapplied to 'eth0'
重新检查 IP 地址将为您提供另一个 IP 地址,而不是您在上一节中静态分配的 IP 地址。
$ hostname -I
192.168.1.18/24
网络管理器图形工具
在本节中,我们将看看网络管理器套件中包含的图形工具:nmtui 和 nm-applet。
Nmtui 实用程序
nmtui 顾名思义,是一个文本用户界面,旨在通过易于使用的用户界面促进网络操作。
要从 nmtui 开始,只需在终端 shell 中执行“nmtui”。
$ nmtui
在此图形菜单中,您有三个选项:
- 编辑连接:您可以在其中选择网络接口并修改分配给它们的参数(例如 DNS、IP 地址或网关地址);
- 激活连接:同时取消激活现有连接。提醒一下,连接仅在分配给特定设备时才处于活动状态或启用状态;
- 设置系统主机名:像“hostnamectl”或“hostname”一样,您可以通过网络设置PC名称。
在 nmtui 工具中导航非常简单:您可以使用键盘键进行导航,使用“Enter”键确认您的选择,使用“Escape”键取消并返回上一屏幕。
GNOME 上的 Nm 小程序
最后一个与网络管理器相关的应用程序是 nm-applet :一个可用于 GNOME 用户界面的 GUI 小程序。
nm-applet 工具是一个覆盖用户界面,位于桌面菜单的右上角。
使用 nm-applet,您可以:查看现有连接,随意添加、编辑和删除它们。
您可以查看有关有线连接设置的详细信息并对其进行编辑以更改您的 IP 地址或更改 IP 归属方法(例如从 DHCP 到手动)
结论
在本教程中,您了解了网络管理器:现代发行版上的一种工具,用于创建、修改和管理网络连接。
您已经发现了与网络管理器相关的工具(即nmcli、nmtui 和 nm-applet),并且您已经了解了如何使用这些工具来修改现有连接。