我正在运行 NetworkManager 还是 networkd?

我正在运行 NetworkManager 还是 networkd?

我正在学习使用 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


! 參考:服务名称发生变更:从network-managerNetworkManager

答案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.106netplan 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

相关内容