厘清 Debian 各种网络配置的方式
关于 /etc/network/interfaces
、systemd-networkd
、NetworkManager
、Netplan
的作用和关系。
networking.service #
这是 debian 系统默认配置网络的 systemd 服务,通过调用 ifup/ifdown 命令来应用 /etc/network/interfaces 文件中的配置。ifup
/ifdown
命令由 ifupdown 软件包提供。
另外有个 ifupdown2 软件包是用 Python 重写的 ifupdown
替代品,据说有更好的性能以及一些新功能,不过默认没启用。
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
应用配置等。