netplan 使用错误的后端

netplan 使用错误的后端

背景

我有一个netplan .yaml配置文件/etc/netplan/。前几行如下:

network:
  version: 2
  renderer: networkd
  ethernets:
# ...and so it continues...

当我运行命令时sudo netplan --debug generate,我得到一个以结尾的输出NetworkManager: definition <ethernet_name> is not for us (backend 1)。这看起来似乎没有正常工作,但无论如何,我尝试运行sudo netplan --debug apply,它打印了一些调试语句,看起来并没有失败,但是当我运行时ip addr,文件中指定的更改.yaml并未反映在我的以太网名称,IP 地址等中。

好的,我尝试更改yaml文件,使renderer行读取renderer: NetworkManager。我重新运行sudo netplan --debug generate,这次我得到一个以结尾的输出networkd: definition <ethernet_name> is not for us (backend 2)。当我运行时sudo netplan --debug apply,我收到一个错误Failed to start NetworkManager.service: Unit NetworkManager.service not found.,然后是 Python 回溯。

似乎我在yaml文件中指定的两个渲染器中的任何一个netplan都会尝试使用另一个(或者有可能它以我不知道的另一种方式悄悄地失败了)。

问题

如何使用我在文件netplan中指定的正确后端.yaml

(此外,为了加分,“渲染器”实际上起什么作用netplan?)

更新

  • 按照https://netplan.io/troubleshooting/,我已在运行原始后检查了.link.network文件,详细信息(名称、设置名称、MAC 地址等)与我输入的文件相符。也许毕竟运行正常,问题出在其他地方……/run/systemd/network/generaterenderer: networkd.yamlnetplan generate

答案1

renderer 键告诉 netplan 要使用哪个后端。选项包括networkdNetworkManagersriov

您有一个示例,它与您显示的错误不符:您renderer: networkd的 yaml 中存在错误。那么NetworkManger您的通知中应该包含什么?这是一个无效的后端,因为它缺少一个“a”。另外,您的 yaml 中也没有包含这些内容。

如果你希望 NetworkManager 处理连接的配置,你的文件应该有仅有的这:

network:
  version: 2
  renderer: NetworkManager

答案2

事实证明,netplan使用的是正确的后端(networkd)。当打印出调试消息说时NetworkManager: definition <ethernet_name> is not for us (backend 1),我错误地将其解释为认为netplan正在尝试使用但失败NetworkManager然后放弃,而事实上,它正在使用networkd(通过查看中生成的文件可以确认/run/systemd/network/,如我原始问题中“更新”下所述)。

我只是感到困惑,因为我认为有关的消息NetworkManager暗示它networkd没有被使用,但事实并非如此。

最终,我尝试了不同的硬件连接组合并删除了不必要的.yaml文件,终于让整个系统正常工作了。我不认为我上面描述的设置有什么问题,只是错误消息让我感到困惑,以为是在netplan尝试使用错误的后端,而实际上它使用的是正确的后端。

相关内容