如何在 Linux 上从网络管理器切换到 systemd-networkd如何在 Linux 上从网络管理器切换到 systemd-networkd如何在 Linux 上从网络管理器切换到 systemd-networkd如何在 Linux 上从网络管理器切换到 systemd-networkd
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

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

如何在 Linux 上从网络管理器切换到 systemd-networkd

在 Linux 世界中,systemd 的采用一直是一个激烈争论的话题,其支持者和批评者之间的争论仍在继续。截至目前,大多数主要 Linux 发行版都采用 systemd 作为默认 init 系统。

systemd 被其作者标榜为“从未完成,从未完成,但正在跟踪技术进步”,它不仅仅是 init 守护进程,而且被设计为一个更广泛的系统和服务管理平台,其中包含不断增长的核心系统守护进程、库和实用程序生态系统。

systemd 的众多新增功能之一是 systemd-networkd,它负责 systemd 生态系统内的网络配置。使用systemd-networkd,您可以为网络设备配置基本的DHCP/静态IP网络。它还可以配置虚拟网络功能,例如桥接、隧道或 VLAN。无线网络不是由 systemd-networkd 直接处理的,但您可以使用 wpa_supplicant 服务来配置无线适配器,然后将其与 systemd-networkd 连接起来。

在许多 Linux 发行版上,网络管理器已经并且仍然用作默认网络配置管理器。与 Network Manager 相比,systemd-networkd 仍在积极开发中,并且缺少功能。例如,它没有网络管理器的智能来让您的计算机始终通过各种接口保持连接。它不提供用于高级脚本编写的 ifup/ifdown 挂钩。然而,systemd-networkd 与其余 systemd 组件(例如,用于 DNS 的 resolved、用于 NTP 的 timesyncd、用于命名的 udevd)很好地集成,并且 systemd-networkd 的作用可能只会随着时间在 systemd 环境中的发展而增长。

如果您对 systemd 的发展方式感到满意,您可以考虑的一件事是从 Network Manager 切换到 systemd-networkd。如果您强烈反对 systemd,并且对 Network Manager 或基本网络服务非常满意,那是非常酷的。

但对于那些想要尝试 systemd-networkd 的人来说,您可以继续阅读并在本教程中了解如何在 Linux 上从网络管理器切换到 systemd-networkd。

要求

systemd-networkd 在 systemd 版本 210 及更高版本中可用。因此,Debian 8 Jessie (systemd 215)、Fedora 21 (systemd 217)、Ubuntu 15.04 (systemd 219) 或更高版本等发行版与 systemd-networkd 兼容。

对于其他发行版,请在继续之前检查您的 systemd 版本。


$ systemctl --version

从网络管理器切换到 systemd-networkd

从 Network Manager 切换到 systemd-networkd 相对简单(反之亦然)。

首先,禁用 Network Manager 服务,然后启用 systemd-networkd,如下所示。


$ sudo systemctl disable NetworkManager
$ sudo systemctl enable systemd-networkd

您还需要启用 systemd-resolved 服务,systemd-networkd 使用该服务进行网络名称解析。该服务实现了缓存 DNS 服务器。


$ sudo systemctl enable systemd-resolved
$ sudo systemctl start systemd-resolved

启动后,systemd-resolved 将在 /run/systemd 目录下的某个位置创建自己的 resolv.conf。然而,将 DNS 解析器信息存储在 /etc/resolv.conf 中是一种常见的做法,并且许多应用程序仍然依赖 /etc/resolv.conf。因此,出于兼容性原因,请按如下所示创建到 /etc/resolv.conf 的符号链接。


$ sudo rm /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

使用 systemd-networkd 配置网络连接

要使用 systemd-networkd 配置网络设备,您必须在扩展名为 .network 的文本文件中指定配置信息。然后,这些网络配置文件将从 /etc/systemd/network 存储和加载。当有多个文件时,systemd-networkd会按照词法顺序一一加载并处理它们。

让我们首先创建一个文件夹 /etc/systemd/network。


$ sudo mkdir /etc/systemd/network

DHCP 网络

我们首先配置 DHCP 网络。为此,创建以下配置文件。文件的名称可以是任意的,但请记住文件是按词法顺序处理的。


$ sudo vi /etc/systemd/network/20-dhcp.network

[Match]
Name=enp3*

[Network]
DHCP=yes

正如您在上面所看到的,每个网络配置文件都包含一个或多个部分,每个部分前面都有[XXX]标题。每个部分包含一个或多个键/值对。 [Match] 部分确定此配置文件配置哪些网络设备。例如,此文件匹配名称以 ens3 开头的任何网络接口(例如,enp3s0、enp3s1、enp3s2 等)。对于匹配的接口,它会应用 [Network] 部分中指定的 DHCP 网络配置。

静态IP网络

如果要为网络接口分配静态 IP 地址,请创建以下配置文件。


$ sudo vi /etc/systemd/network/10-static-enp3s0.network

[Match]
Name=enp3s0

[Network]
Address=192.168.10.50/24
Gateway=192.168.10.1
DNS=8.8.8.8

您可以猜到,接口 enp3s0 将被分配一个地址 192.168.10.50/24、一个默认网关 192.168.10.1 和一个 DNS 服务器 8.8.8.8。这里的一个微妙之处是,接口的名称 enp3s0 实际上也与早期 DHCP 配置中定义的模式规则相匹配。但是,由于根据词汇顺序,文件 10-static-enp3s0.network 在 20-dhcp.network 之前处理,因此在 enp3s0 接口的情况下,静态配置优先于 DHCP 配置。

创建完配置文件后,重新启动 systemd-networkd 服务或重新启动。


$ sudo systemctl restart systemd-networkd

通过运行以下命令检查服务的状态:


$ systemctl status systemd-networkd
$ systemctl status systemd-resolved

使用 systemd-networkd 配置虚拟网络设备

systemd-networkd 还允许您配置虚拟网络设备,例如网桥、VLAN、隧道、VXLAN、绑定等。您必须在扩展名为 .netdev 的文件中配置这些虚拟设备。

这里我将展示如何配置桥接接口。

Linux桥

如果要创建 Linux 网桥 (br0) 并向该网桥添加物理接口 (eth1),请创建以下配置。


$ sudo vi /etc/systemd/network/bridge-br0.netdev

[NetDev]
Name=br0
Kind=bridge

然后使用 .network 文件配置桥接口 br0 和从接口 eth1,如下所示。


$ sudo vi /etc/systemd/network/bridge-br0-slave.network

[Match]
Name=eth1

[Network]
Bridge=br0

$ sudo vi /etc/systemd/network/bridge-br0.network

[Match]
Name=br0

[Network]
Address=192.168.10.100/24
Gateway=192.168.10.1
DNS=8.8.8.8

最后,重新启动systemd-networkd:


$ sudo systemctl restart systemd-networkd

您可以使用brctl工具来验证桥br0是否已创建。

概括

当 systemd 承诺成为 Linux 的系统管理器时,难怪像 systemd-networkd 这样的东西应运而生来管理网络配置。不过现阶段,systemd-networkd 似乎更适合网络配置相对稳定的服务器环境。对于涉及各种瞬态有线/无线接口的台式机/笔记本电脑环境,网络管理器可能仍然是首选。

对于那些想要了解有关 systemd-networkd 的更多信息的人,请参阅官方手册页以获取支持的部分和键的完整列表。

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