我开始在主机和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.
问题:
system network directory和local administration network directory什么区别? /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的新文件是否已经启动。