我是在运行 NetworkManager 还是 networkd?

15 network-manager networking netplan systemd-networkd

我正在学习使用 netplan。在编写 YAML 配置文件时,我需要知道要使用哪个渲染器,NetworkManager 或 networkd。

我怎么知道我是在运行 NetworkManager 还是 networkd?

Ell*_*iew 15

据我所知,在 Linux 中有 3 种网络方法:

1)最老的使用/etc/network/interfaces文件和ifup/ifdown脚本来管理这些接口。

2)之后出现了具有可用 GUI 界面的network-manager守护程序(通常是编写的Network-Manager)。

3)最近的systemd-networkd守护进程(有时简称为“networkd”)基于systemd单元文件。


要查看您的网络是如何管理的,首先您必须知道您的系统是在初始化时使用systemd还是较旧的,init因为它是第一个进程。 (例如,Debian 和 Ubuntu 现在使用systemd代替init)。

您可以检查您的系统是否使用systemd

pidof systemd     &&  echo "systemd"  || echo "other"
Run Code Online (Sandbox Code Playgroud)

所以如果你没有跑步systemd,那么显然你可以排除systemd-networkd

如果您正在运行systemd,则使用以下两个命令检查哪些网络服务守护进程正在运行:

sudo service systemd-networkd status
sudo service network-manager  status
Run Code Online (Sandbox Code Playgroud)

您将看到Active: active (running)Active: inactive (dead)报告每个。

请注意,您也可以运行这些较新的命令,但显然如果您没有 systemd,它们将不适合您:

systemctl status systemd-networkd
systemctl status network-manager
Run Code Online (Sandbox Code Playgroud)

但你还没有完成......

最后,即使这两个守护进程之一正在运行,也不意味着您的网络硬件接口正在由它们管理,因为有例外。

首先/etc/network/interfaces,网络管理器会忽略 中定义的任何接口。 ( man 5 NetworkManager)

接下来,systemd-networkd将只管理任何链接的网络地址和路由,只要它找到具有适当 [Match] 部分的 .network 文件。 ( man 8 systemd-networkd)


chi*_*555 12

默认情况下,Ubuntu 桌面版附带网络管理器。在大多数桌面环境中,它做得很好。在这种情况下,netplan 文件应将网络移交给网络管理器。通常,相关文件是/etc/netplan/01-network-manager-all.yaml 它读取:

    # Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

...其中 enp0s3 是您的相关界面。这将允许通过 DHCP 连接互联网,直到可以通过编辑 yaml 文件并执行以下操作来实现完整和进一步的配置:

sudo netplan apply 
Run Code Online (Sandbox Code Playgroud)

  • “因为没有安装桌面环境 [...] 网络管理器是不可能的” CentOS 在服务器上使用 `nmcli` 和 `nmtui` 做得很好,所以绝对是可能的。 (3认同)