使用Linux中的网络管理器配置网络设置
1. 概述
在本教程中,我们将讨论 Network Manager 包。最初,我们从包的概述以及如何安装它开始。之后,我们专注于nmcli 命令。实际上,这是网络管理器命令行界面。
2. 网络管理器组件
Network Manager 是一组用于配置 Linux 机器的网络设备的工具。至关重要的是,它通过网络管理器服务在 Linux 机器中自动配置网络设备。当然,我们也可以通过多种方式手动配置。
首先,有nmcli,网络管理器的命令行界面。接下来,有一个在终端中运行的基于文本的用户界面。此外,该软件包具有图形用户界面。最后,还有一个用于第三方访问的 API。
3. 安装与执行
首先,让我们安装网络管理器。当然,某些 Linux 发行版预装了 Network Manager 软件包。它通常以启动时运行的守护进程的形式出现。
3.1. 安装
无论如何,我们可以通过像apt或yum这样的包管理器来安装 Network Manager 包。例如,我们可以在 Ubuntu 中简单地运行以下命令:
$ sudo apt-get install network-manager
请注意,Ubuntu 中的软件包名称当前是network-manager。当然,Linux 发行版之间可能会有所不同。例如,该软件包在Red Hat Linux中称为NetworkManager。
3.2. 服务执行
重要的是,我们必须确保服务启动并运行。因此,我们可以在 Ubuntu 下使用systemctl status命令查看:
$ systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-05-25 15:18:22 EEST; 42min ago
结果,我们在命令的输出中看到了*active (running)*状态。
3.3. 与其他网络服务的关系
事实上,Network Manager 可以与 Linux 系统中的其他网络工具共存。但是,当其他此类服务(如networkd)正在运行时,我们可能不会启用它的服务。因此,最好事先停止或禁用它们以避免冲突。
3.4. 配置文件
Network Manager 的配置文件位于/etc/NetworkManager*中。此外,连接设置存储在系统连接子文件夹中。大多数情况下,我们将使用nmcli*命令来配置我们的网络设备。由于它保留了配置文件中的更改,因此我们不必手动编辑任何内容。
4. 显示Linux机器的网络状态
获取网络设备、连接和一般网络状态的列表很有帮助。例如,网络设备主要由网卡组成,而连接是分配给网络设备的配置。
在实践中,连接处理 IP 和链路层细节。例如,有IP 地址 、DNS 服务器和网关 设置。
4.1. 显示所有网络设备的列表
让我们使用nmcli device获取 Linux 机器中所有网络设备的列表:
$ nmcli device
DEVICE TYPE STATE CONNECTION
wlp5s0 wifi connected MY_WIRELESS_CONN
enp0s3 ethernet unavailable --
lo loopback unmanaged --
在这里,我们在输出中看到三个设备。第一个是启动并运行的 Wi-Fi 网络适配器。第二个是不活动的以太网 适配器。在最后一行,我们看到了环回网络接口。
4.2. 显示设备的 IP 地址
命令nmcli device show打印设备的 IP 地址等属性:
$ nmcli device show wlp5s0
GENERAL.DEVICE: wlp5s0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 00:18:DE:CE:4A:02
GENERAL.MTU: 0
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: MY_WIRELESS_CONN 1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0
IP4.ADDRESS[1]: 192.168.2.8/24
IP4.GATEWAY: 192.168.2.1
IP4.ROUTE[1]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.DNS[1]: 192.168.2.1
IP4.DOMAIN[1]: station
IP6.ADDRESS[1]: fe80::50d0:5ec7:546f:d9f0/64
IP6.GATEWAY:
在这里,我们打印了有关设备*wlp5s0 的数据。*除了 IP 地址之外,该命令还会打印许多其他属性。例如 DNS 服务器、MAC 地址和网关。
4.3. 显示现有连接列表
我们可以使用nmcli connection获取现有的网络连接:
$ nmcli connection
NAME UUID TYPE DEVICE
MY_WIRELLESS_CONN db1479d2-3ddf-42de-8d54-754e17a4d93b 802-11-wireless wlp5s0
该命令输出一个与无线适配器wlp5s0配对的连接。
4.4. 显示连接的属性
我们还可以打印连接的属性:
$ nmcli connection show id my-ethernet
connection.id: my-ethernet
connection.uuid: b07d9672-0b01-4e8e-a7ff-b196ee8d95c0
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: --
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 0
...
我们使用id my-ethernet来获取该连接的属性。为简洁起见,我们排除了部分输出。请注意,如果我们不设置特定的id ,我们可以打印所有连接。
4.5. 显示无线适配器的状态
nmcli radio命令打印无线适配器的状态:
$ nmcli radio
WIFI-HW WIFI WWAN-HW WWAN
enabled enabled enabled enabled
如上所示,我们观察到无线广域网 (WWAN) 和 Wi-Fi 适配器已启用。
5. 配置以太网适配器
尽管 WiFi 在家里被广泛使用,但以太网适配器在工作中仍然很受欢迎。此外,我们的计算机可能会通过DHCP 从工作服务器接收其网络设置。另一方面,如果没有 DHCP 服务器,我们必须自己设置网络详细信息,如 IP 地址、DNS 服务器和默认网关。
在所有情况下,我们都使用nmcli命令的连接(缩写为con或仅c)对象。
5.1. 使用静态 IP 地址配置以太网适配器
我们通过使用nmcli connection add命令创建新连接来配置以太网适配器:
$ nmcli connection add type ethernet ifname enp7s8 con-name my_ethernet ip4 192.168.2.138/24 gw4 192.168.2.1
Connection 'my_ethernet' (514c394d-0fe2-4c3c-80f5-693ba65b1db3) successfully added.
在上面的例子中,我们设置了几个选项。
首先,我们将连接type设置为ethernet 。 其次,我们在ifname之后设置接口名称。 第三,我们将con-name设置为新连接的名称。 接下来,ip4指定 IP 地址。 最后,默认IPv4 网关在gw4之后。 或者,我们可以使用ip6 和gw6选项设置IPv6 详细信息。
5.2. 使用动态 IP 地址配置以太网适配器
如果有 DHCP 服务器,我们可以使用动态 IP 创建新连接。与上一节一样,我们使用nmcli connection add命令执行此操作,但细节较少:
$ sudo nmcli connection add type ethernet ifname enp7s8 con-name my_ethernet
Connection 'my_ethernet' (cd4ff4e0-ade3-47a4-8e1b-16df2ce9f366) successfully added.
请注意,我们没有设置任何 IP 地址或默认网关。
5.3. 修改连接
我们使用modify子命令来更新连接的属性:
$ sudo nmcli connection modify my_ethernet ipv4.DNS 192.168.2.1
在这里,我们将 DNS 服务器设置为值 192.168.2.1。我们可以使用命令nmcli connection show来获取可用设置的列表。
5.4. 启用和禁用连接
启用和禁用连接是网络配置的一项重要任务。所以,让我们禁用我们创建的连接:
$ nmcli connection down my_ethernet
Connection 'my_ethernet' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
结果,我们使用子命令down禁用了连接。另一方面,要再次启用它,我们可以使用子命令up:
$ nmcli connection up my_ethernet
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
如我们所见,我们启用了ID为my_ethernet的连接。D-Bus active path出现在命令的输出中。 也就是说,D-BUS API 允许其他应用程序使用我们的连接。
6. 配置无线设备
尽管如此,许多家庭用户还是通过其 DSL路由器 的 Wi-Fi 连接到互联网。事实上,nmcli命令确实在该设置中很有帮助。
为此,我们可以将流程分为两个任务:
- 列出我们地区的无线网络
- 连接到列出的无线网络之一
让我们来看看这两个步骤。
6.1. 列出无线网络
首先,我们使用nmcli device wifi list命令列出我们所在区域的无线网络:
$ nmcli device wifi list
* SSID MODE CHAN RATE SIGNAL BARS SECURITY
MY_WIRELESS_NET Infra 11 54 Mbit/s 100 ▂▄▆█ WPA1 WPA2
ANOTHER_WIRELLESS_NET Infra 52 54 Mbit/s 100 ▂▄▆█ WPA1 WPA2
YET_ANOTHER_WIR_NET Infra 6 54 Mbit/s 55 ▂▄__ WPA2
可以看出,我们得到了一个网络列表。其中,每条记录都包含 SSID、速率、信号功率和安全类型等。
6.2. 连接到无线网络
然后我们可以使用nmcli device wifi connect命令连接到无线网络:
$ nmcli device wifi connect MY_WIRELESS_NET password 8ehdxhre5kkhb6g6
Device 'wlp5s0' successfully activated with 'a7c8fbf5-3e7d-456c-921b-d739de0e3c79'.
在这里,我们使用SSID MY_WIRELESS_NET连接到网络。