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

我开始在主机和systemd-nspawn容器上尝试systemd-networkd。 在禁用NetworkManager等所有其他networkingpipe理服务之后,在主机上创build了.network文件

/etc/systemd/network 

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

 /etc/systemd/network/ 

即使我在[Match] .network文件部分正确匹配networking适配器名称(host0)。 以后再用

 # networkctl status host0 

我已经发现这样的接口正在从中configuration

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

文件。 我插入了正确的networking设置,一切正常。

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 directorylocal administration network directory什么区别?
  2. 为什么容器自动从/usr/lib/systemd/network/目录下设置/usr/lib/systemd/network/

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

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

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

发生冲突时,“/ etc / systemd”中的文件应该优先。 你有没有注意到systemd-networkd手册页的其他部分?

在networkd启动之前应用的networkingconfiguration不会被删除,networkd应用的静态configuration在networkd退出时不会被删除。 networkd应用的dynamicconfiguration也可以select在closures时保留。 这确保了重新启动networkd不会切断networking连接,特别是在initrd和真实根目录之间转换是安全的。

我读到这个的方式,你可能需要完全停止networkingpipe理,使新的configuration文件生效。

尝试:

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

然后查看/etc/systemd创build的新文件是否已经启动。