我正在学习使用 netplan。编写 YAML 配置文件时,我需要知道要使用哪个渲染器,是 NetworkManager 还是 networkd。
我如何知道我正在运行 NetworkManager 还是 networkd?
答案1
据我所知,Linux 中有 3 种方法可以实现网络:
1)最老的使用/etc/network/interfaces
文件和ifup
/ifdown
脚本来管理这些接口。
2)之后出现了具有可用 GUI 界面的network-manager
守护进程(通常写作)。Network-Manager
3)最近,systemd-networkd
基于systemd
单元文件的守护进程(有时缩写为“networkd”)。
要了解您的网络是如何管理的,首先您必须知道您的系统是否正在初始化,systemd
或者是否以较旧的方式init
作为其第一个过程。 (例如,Debian 和 Ubuntu 现在使用systemd
而不是init
)。
您可以检查您的系统是否systemd
使用这:
ps -p 1 -o comm= # i.e. -p = process # 1, -o = output column 'comm' or the command name, & the '=' is to not display column name
因此,如果您没有跑步systemd
,那么显然您可以排除systemd-networkd
。
如果您正在运行systemd
,请使用以下两个命令检查哪些网络服务守护进程正在运行:
sudo service systemd-networkd status
sudo service network-manager status # before Ubuntu V21.10
sudo service NetworkManager status # after Ubuntu V21.10!
您将会看到针对每一个的Active: active (running)
或报告。Active: inactive (dead)
请注意,您也可以运行这些较新的命令,但显然如果您没有 systemd,它们将无法为您工作:
systemctl status systemd-networkd
systemctl status network-manager # before Ubuntu V21.10
systemctl status NetworkManager # after Ubuntu V21.10!
但你还没有完成...
最后,即使这两个守护进程中的一个正在运行,也并不意味着您的网络硬件接口由它们管理,因为存在例外。
/etc/network/interfaces
首先,网络管理器包会忽略 定义的任何接口。(man 5 NetworkManager
)
接下来,systemd-networkd
将仅管理找到具有适当部分的 .network 文件的任何链接的网络地址和路由[Match]
。 (man 8 systemd-networkd
)。
答案2
默认情况下,Ubuntu 桌面版附带网络管理器。在大多数桌面环境中,它都做得很好。在这种情况下,netplan 文件应该将网络移交给网络管理器。通常,相关文件内容如下/etc/netplan/01-network-manager-all.yaml
:
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
在 Ubuntu 服务器版本中,由于默认未安装任何桌面环境(例如 Gnome、Unity、Wayland、KDE 等),因此无法安装网络管理器。在 17.10 及更高版本中,网络仅由 netplan 处理。典型的相关文件/etc/netplan/01-netcfg.yaml
通常是:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: yes
...其中 enp0s3 是您的相关接口。这将允许通过 DHCP 建立互联网连接,直到可以通过编辑 yaml 文件并执行以下操作来实现完整和进一步的配置:
sudo netplan apply
答案3
自 2023 年 2 月起,Netplan 发布0.106,netplan status
它漂亮地打印了很多信息,包括当前使用的渲染器。下面的输出取自裸机 Ubuntu 23.04 安装:
$ netplan status
Online state: online
DNS Addresses: 127.0.0.53 (stub)
DNS Search: <redacted>
● 1: lo ethernet UNKNOWN/UP (unmanaged)
MAC Address: 00:00:00:00:00:00
Addresses: 127.0.0.1/8
::1/128
Routes: ::1 metric 256
● 2: enp0s1 ethernet UP (networkd: enp0s1)
MAC Address: <redacted> (<redacted>)
Addresses: 192.168.64.2/24 (dhcp)
fd88:4b93:b031:f03e:80f0:d4ff:fe4f:15d3/64
fe80::80f0:d4ff:fe4f:15d3/64 (link)
DNS Addresses: 192.168.64.1
fe80::6c7e:67ff:fe8c:8364
DNS Search: <redacted>
Routes: default via 192.168.64.1 from 192.168.64.2 metric 100 (dhcp)
192.168.64.0/24 from 192.168.64.2 metric 100 (link)
192.168.64.1 from 192.168.64.2 metric 100 (dhcp, link)
fd88:4b93:b031:f03e::/64 metric 100 (ra)
fe80::/64 metric 256
您可以看到主 NICenp0s1
正在由 进行管理networkd
。
安装network-manager
软件包并将默认渲染器设置为后NetworkManager
,这是唯一有区别的一行netplan status
:
● 2: enp0s1 ethernet UP (unmanaged)
现在主 NICenp0s1
正在被管理NetworkManager
。