[1] Netplan

[2] NetworkManager and netplan | Ubuntu

[3] 技术|如何在 Linux 上从 NetworkManager 切换为 systemd-network

1. Ubuntu 的网络配置策略

在 Ubuntu 18.0.4 及之后的系统版本中,使用 https://netplan.io 进行网络配置,系统启动时,会获取到 /etc/netplan/*.yaml 的配置信息决定使用哪个 renderer 作为系统的网络配置服务。

可选的 renderer 为:

  1. systemd-networkd
  2. NetworkManager

如流程图所示,系统启动时,/etc/netplan/*.yaml 中的配置文件会被 netplan 读取(即执行 netplan generate 命令),并根据配置文件中指定的 renderer*.yaml中的网络配置信息转译成 systemd-networkd 或者 NetworkManager 对应的配置文件。新装的 Ubuntu 18.04 及以上版本的系统,可发现默认的 netplan 配置信息 /etc/netplan/01-network-manager-all.yaml,其内容为:

1
2
3
4
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager

表示系统默认使用 NetworkManager 作为系统的网络配置服务。

注意:需要在 /{run, etc, lib}/netplan 中配置默认使用的 renderer,否则系统重启后,将没有任一服务托管网络

2. NetworkManager

NetworkManager - Community Help Wiki (ubuntu.com)

若使用 NetworkManager 为默认的网络服务,则系统启动时,netplan 会将配置信息转译成其对应的配置文件存放在 /run/NetworkManager/system-connections中,但由于上述的默认的 /etc/netplan/01-network-manager-all.yaml 中仅仅指定了默认使用的网络服务,因此并不会在 /run/NetworkManager/system-connections 中生成相关配置。

此时,NetworkManager会在其配置文件目录 /etc/NetworkManager/system-connections 中找到其配置文件。如果该目录下的配置文件为空,则当前主机将处于未配置网络的状态。

如果在netplan中指定NetworkManager作为网络托管服务,并配置了IP信息,如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true

# OR

network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 10.10.10.2/24
nameservers:
search: [mydomain, otherdomain]
addresses: [10.10.10.1, 1.1.1.1]
routes:
- to: default
via: 10.10.10.1

则netplan会将该配置转译后添加至 /run/NetworkManager/system-connections 中,NetworkManager 会识别两个文件夹中的配置文件。可以使用 nmcli connection show 查看。

使用netplan创建的NetworkManager配置文件,如果在界面化中被修改,则原本在/run中的配置文件会被持久化添加到/etc中,但是由于网络配置还是由netplan控制,重启计算机或者运行 netplan apply 后会创建刚刚在/run中被修改的配置文件,并且 /run/NetworkManager/system-connections 的优先级大于 /etc/NetworkManager/system-connections

注:在 /etc/NetworkManager/system-connections 下的配置文件其权限只能是 600,否则该配置文件将无法被Network Manager加载。

3. systemd-networkd

Ubuntu Manpage: systemd.network - Network configuration

4. 样例

Network - Configuration | Ubuntu

Netplan

How to Configure Networking on Ubuntu with Netplan - VITUX

Netplan is the Ubuntu network configuration tool in all recent Ubuntu versions. Netplan is based on a YAML-based configuration system that makes the configuration process very simple. It has replaced the old /etc/network/interfaces configuration file that we used to use for configuring network interfaces in Ubuntu and other Linux distributions.

NetworkConfiguration - Debian Wiki

networking - netplan or /etc/network/interfaces? - Ask Ubuntu

How to Configure Networking on Ubuntu with Netplan - VITUX

Route Table

linux - What is the interface scope (global vs. link) used for? - Unix & Linux Stack Exchange

https://unix.stackexchange.com/a/123096