systemd-networkd:关于 `/etc/systemd/network` 和 `/usr/lib/systemd/network` 之间的区别

systemd-networkd:关于 `/etc/systemd/network` 和 `/usr/lib/systemd/network` 之间的区别

我开始在主机和 systemd-nspawn 容器上试验 systemd-networkd。在禁用了 NetworkManager 等所有其他网络管理服务后,主持人我在以下机器上创建了 .network 文件

/etc/systemd/network

一切正常。在 systemd-nspawn 容器中,系统却忽略了我插入的 .network 文件

/etc/systemd/network/

即使我在[Match].network 文件部分正确匹配了网络适配器名称 (host0)。稍后通过使用

# networkctl status host0

我发现这样的接口正在从

/usr/lib/systemd/network/80-container-host0.network

文件。我在其中插入了正确的网络设置,一切正常。

man systemd-networkd

The configuration files are read from the files located in the system network directory /usr/lib/systemd/network, the volatile runtime network directory  /run/systemd/network and the local administration network directory /etc/systemd/network.

问题:

  1. system network directory和有什么区别local administration network directory
  2. 为什么容器会自动从/usr/lib/systemd/network/目录中获取网络设置?

答案1

“系统网络目录”是软件包应该安装文件的地方。

“本地管理目录”是人工管理员添加和编辑自定义文件的地方。

您报告将文件放在“/etc/systemd”目录中,但“/usr/lib/systemd”中的并行文件似乎覆盖了它。

如果发生冲突,则“/etc/systemd”中的文件应优先。您注意到systemd-networkd手册页的另一部分了吗?

networkd 启动前应用的网络配置不会被删除,networkd 退出时应用的静态配置也不会被删除。networkd 应用的动态配置也可以选择在关闭时保留。这确保重启 networkd 不会切断网络连接,特别是确保 initrd 和真实根之间的转换和返回是安全的。

根据我的理解,您可能需要完全停止网络管理才能使新的配置文件生效。

尝试:

sudo systemctl stop systemd-networkd
sudo systemctl start systemd-networkd

然后查看您创建的新文件是否/etc/systemd已开始活跃。

相关内容