厘清 Debian 各种网络配置的方式
关于 /etc/network/interfaces、systemd-networkd、NetworkManager、Netplan 的作用和关系。
networking.service #
这是 debian 系统默认配置网络的 systemd 服务,通过调用 ifup/ifdown 命令来应用 /etc/network/interfaces 文件中的配置。ifup/ifdown 命令由 ifupdown 软件包提供。
另外有个 ifupdown2 软件包是用 Python 重写的 ifupdown 替代品,据说有更好的性能以及一些新功能,不过默认没启用。
需要注意的是networking.service仅对auto开头的接口进行配置,如果是allow-hotplug则由systemd-udevd.service进行配置。
systemd-networkd.service #
另外一个配置网络的 systemd 服务。实际调用的二进制文件是 /lib/systemd/systemd-networkd,提供给用户端的命令是 networkctl
通过读取 systemd.network 格式的配置文件来应用网络。例如 /etc/systemd/network/10-eth0.network
NetworkManager.service #
主要用于桌面环境下配置网络的 systemd 服务,有独立的配置文件、图形界面和命令行工具 nmcli 来管理网络。
Netplan #
配置网络的抽象层工具,它本身不直接配置网络,而是充当一个“翻译器”。可以使用统一的 YAML 语法来编写配置文件,并允许用户在不同的后端 (systemd-networkd 或 NetworkManager) 之间切换。
比如 netplan generate 生成对应后端的配置文件,netplan apply 应用配置等。