千家信息网

Linux中如何将网络管理器由NetworkManager切换为systemd-network

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"Linux中如何将网络管理器由NetworkManager切换为systemd-network",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研
千家信息网最后更新 2026年11月01日Linux中如何将网络管理器由NetworkManager切换为systemd-network

这篇文章主要讲解了"Linux中如何将网络管理器由NetworkManager切换为systemd-network",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Linux中如何将网络管理器由NetworkManager切换为systemd-network"吧!

在 Linux 世界里,对 systemd 的采用一直是激烈争论的主题,它的支持者和反对者之间的战火仍然在燃烧。到了今天,大部分主流 Linux 发行版都已经采用了 systemd 作为默认的初始化init系统。

正如其作者所说,作为一个 "从未完成、从未完善、但一直追随技术进步" 的系统,systemd 已经不只是一个初始化进程,它被设计为一个更广泛的系统以及服务管理平台,这个平台是一个包含了不断增长的核心系统进程、库和工具的生态系统。
systemd 的其中一部分是 systemd-networkd,它负责 systemd 生态中的网络配置。使用 systemd-networkd,你可以为网络设备配置基础的 DHCP/静态 IP 网络。它还可以配置虚拟网络功能,例如网桥、隧道和 VLAN。systemd-networkd 目前还不能直接支持无线网络,但你可以使用 wpa_supplicant 服务配置无线适配器,然后把它和 systemd-networkd 联系起来。

在很多 Linux 发行版中,NetworkManager 仍然作为默认的网络配置管理器。和 NetworkManager 相比,systemd-networkd 仍处于积极的开发状态,还缺少一些功能。例如,它还不能像 NetworkManager 那样能让你的计算机在任何时候通过多种接口保持连接。它还没有为更高层面的脚本编程提供 ifup/ifdown 钩子函数。但是,systemd-networkd 和其它 systemd 组件(例如用于域名解析的 resolved、NTP 的timesyncd,用于命名的 udevd)结合的非常好。随着时间增长,systemd-networkd只会在 systemd 环境中扮演越来越重要的角色。

如果你对 systemd-networkd 的进步感到高兴,从 NetworkManager 切换到 systemd-networkd 是值得你考虑的一件事。如果你强烈反对 systemd,对 NetworkManager 或基础网络服务感到很满意,那也很好。

但对于那些想尝试 systemd-networkd 的人,可以继续看下去,在这篇指南中学会在 Linux 中怎么从 NetworkManager 切换到 systemd-networkd。

需求
systemd 210 及其更高版本提供了 systemd-networkd。因此诸如 Debian 8 "Jessie" (systemd 215)、 Fedora 21 (systemd 217)、 Ubuntu 15.04 (systemd 219) 或更高版本的 Linux 发行版和 systemd-networkd 兼容。

对于其它发行版,在开始下一步之前先检查一下你的 systemd 版本。

代码如下:


$ systemctl --version


从 NetworkManager 切换到 Systemd-networkd
从 NetworkManager 切换到 systemd-networkd 其实非常简答(反过来也一样)。

首先,按照下面这样先停用 NetworkManager 服务,然后启用 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


正如你上面看到的,每个网络配置文件包括了一个或多个 "sections",每个 "section"都用 [XXX] 开头。每个 section 包括了一个或多个键值对。[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) 并把物理接口(eth2) 添加到网桥,你可以新建下面的配置。

代码如下:


$ sudo vi /etc/systemd/network/bridge-br0.netdev
[NetDev]
Name=br0
Kind=bridge


然后按照下面这样用 .network 文件配置网桥接口 br0 和从接口 eth2。

代码如下:


$ sudo vi /etc/systemd/network/bridge-br0-slave.network
[Match]
Name=eth2
[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。

感谢各位的阅读,以上就是"Linux中如何将网络管理器由NetworkManager切换为systemd-network"的内容了,经过本文的学习后,相信大家对Linux中如何将网络管理器由NetworkManager切换为systemd-network这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

配置 网络 文件 代码 服务 接口 切换 设备 网桥 管理 网络设备 系统 面的 网络管理 静态 发行 多个 正如 版本 顺序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津市摩尔互联网科技 广州百单互联网科技有限公司 互联网 卓越科技 远信互联网科技 互联网高科技企业 新华互联网科技校企合作 海南购全球互联网科技 湖南洣水互联网科技有限公司扣款 互联网科技产品 新华互联网科技2019 移动互联网科技股 宁夏科技产业互联网案例 注册互联网科技公司经营范围大全 互联网科技研发水平 国大互联网教育科技有限公司薪资 互联网科技股为什么大涨 北京天晋互联网科技有限公司 求路客互联网科技电话 互联网 科技节活动 微视频大赛 小牛互联网科技有限公司地址 互联网最新的科技 互联网下的科技发展 苏州互联网科技贷款公司 互联网科技类展会 新华互联网科技校企合作 互联网科技公司需要的职位 现代科技和互联网有关系吗 广州千川互联网科技有限公司 富国互联网金融科技混合基金 湖北辰鑫科技互联网
0